Как отключить форматирование для FloatField в шаблоне для Django



Я просто не могу найти окончательного ответа на этот вопрос, и irc django нуждается в auth to services...
Итак, мой вопрос: как вы можете заставить какое-то форматирование для FloatFields в шаблоне, когда вы используете Django ?



Проблема проста мне нужны простые числа, разделенные точками, такие как: 42547.34
И в итоге я получаю значения, разделенные запятыми...



Вот пример шаблона, в котором возникает проблема:



{% for point in zone.points.all  %}
{% if forloop.last %}
new google.maps.LatLng({{point.latitude|floatformat}},{{point.longitude|floatformat}})
{% else %}
new google.maps.LatLng({{point.latitude|floatformat}},{{point.longitude|floatformat}}),
{% endif %}
{% endfor %}];


Спасибо, что уделили мне время.

P. S. Я не есть эта проблема при использовании форм, созданных администратором, где поплавки отображаются правильно (мой язык en_US)

624   7  

7 ответов:

{{ float_var|stringformat:"f" }}

Теперь можно принудительно печатать значение без локализации.

{% load l10n %}

{{ value|unlocalize }}

Взято из https://docs.djangoproject.com/en/1.7/topics/i18n/formatting/#std:templatefilter-unlocalize

У меня есть проблема с отображением значений lat и lng. Мое решение было:

{{ value|safe }}

Вам нужно создать пользовательский шаблон фильтра.

from django.template import Library
from django.utils.numberformat import format

register = Library()

@register.filter
def floatdot(value, decimal_pos=4):
    return format(value, ".", decimal_pos)

floatdot.is_safe = True

Использование:

{{ float_var|floatdot }} или {{ float_var|floatdot:2 }}

Вы можете использовать пользовательский formats.py (см. "создание пользовательских файлов формата " в Django docs) и определить THOUSAND_SEPARATOR и DECIMAL_SEPARATOR

THOUSAND_SEPARATOR = ''
DECIMAL_SEPARATOR = '.'

Это глобальная настройка, поэтому она будет влиять на все поплавки, отображаемые на вашем сайте. И вам придется включить локализацию (USE_L10N в вашем settings.py).

Если у вас есть контроль над шаблоном, вы можете просто удалить фильтр floatformat.

Edit: я не уверен, но, возможно, вы стали жертвой этой ошибки Django: #13617. Попробуйте отключитьподдержку локализации в вашем settings.py и посмотрите, исчезнут ли ошибочные запятые:

USE_L10N = False

Если это так, посмотрите на различные обходные пути, упомянутые в bugreport (самый простой способ-отключить локализацию, если она вам все равно не нужна).

У меня та же проблема, и, как говорит piquadrat, это досадная ошибка, связанная с поддержкой локализации. Изменение USE_L10N = True на False решает эту задачу, предполагается, что она исправлена в Django 1.3.

Когда выводится какая-то переменная для javascrip, ее лучше jsonify. Напишите тег шаблона jsonify, а затем используйте

{{value|jsonify}}

Теги шаблонов

from django.core.serializers import serialize
from django.db.models.query import QuerySet
import json
from django.template import Library

register = Library()

def jsonify(object):
    if isinstance(object, QuerySet):
        return serialize('json', object)
    return json.dumps(object)

register.filter('jsonify', jsonify)

Comments

    Ничего не найдено.