Как отключить форматирование для 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)
7 ответов:
Теперь можно принудительно печатать значение без локализации.
{% load l10n %} {{ value|unlocalize }}Взято из https://docs.djangoproject.com/en/1.7/topics/i18n/formatting/#std:templatefilter-unlocalize
Вам нужно создать пользовательский шаблон фильтра.
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_SEPARATORTHOUSAND_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