如何在Django的模板中禁用FloatField的格式

Oli*_*dot 30 python django templates

我似乎无法找到这个问题的明确答案,而django的irc需要auth服务......所以我的问题是:当你使用Django时,如何在模板中强制使用某种格式的FloatField?

问题很简单,我需要像这样简单的点分隔数字: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 %}];
Run Code Online (Sandbox Code Playgroud)

感谢您的时间.

PS我没有这个问题使用管理生成的表单浮动正确显示(我的语言环境是en_US)

小智 65

{{ float_var|stringformat:"f" }}
Run Code Online (Sandbox Code Playgroud)

  • 我有同样的问题,这个接缝是生成Javascript兼容浮点数的最简单的解决方案.对于Django> 1.3,还有新的"localize"/"unlocalize"过滤器:https://docs.djangoproject.com/en/dev/topics/i18n/localization/#unlocalize (4认同)

Jus*_*Hui 21

您现在可以强制打印值而无需本地化.

{% load l10n %}

{{ value|unlocalize }}
Run Code Online (Sandbox Code Playgroud)

取自https://docs.djangoproject.com/en/1.7/topics/i18n/formatting/#std:templatefilter-unlocalize

  • 谢谢你的回答!IMO这显然是实现,因为它会禁用本地化什么是必要的..所以,而不是通过解析本地化的字符串,然后将其转换回的最直接的方式,你得到的纲领性数量没有绒毛格式.它也很容易理解模板过滤器的作用.最后但同样重要的是,我们不会禁用html转义,这应该被视为一个理智的默认值. (2认同)

小智 9

我在渲染lat和lng值时遇到问题.我的解决方案是:

{{ value|safe }}
Run Code Online (Sandbox Code Playgroud)


Pas*_*nus 5

您需要创建自定义模板筛选器.

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
Run Code Online (Sandbox Code Playgroud)

用法:

{{ float_var|floatdot }} 要么 {{ float_var|floatdot:2 }}