代码之家  ›  专栏  ›  技术社区  ›  Olivier Girardot

如何禁用django模板中floatfield的格式设置

  •  29
  • Olivier Girardot  · 技术社区  · 14 年前

    我只是找不到这个问题的确切答案,而且Django的IRC需要认证服务… 所以我的问题是:当您使用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 %}];
    

    谢谢你抽出时间来。

    另外,在使用浮动正确显示的管理生成表单时,我没有这个问题(我的区域设置是en-us)。

    7 回复  |  直到 7 年前
        1
  •  64
  •   krtek    13 年前
    {{ float_var|stringformat:"f" }}
    
        2
  •  19
  •   JustinHui    9 年前

    现在可以强制打印值而不进行本地化。

    {% load l10n %}
    
    {{ value|unlocalize }}
    

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

        3
  •  9
  •   user535010    12 年前

    我在绘制lat和lng值时遇到问题。 我的解决方案是:

    {{ value|safe }}
    
        4
  •  5
  •   Pascal Polleunus    14 年前

    您需要创建一个 custom template filter .

    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 }}

        5
  •  2
  •   Benjamin Wohlwend    14 年前

    你可以使用自定义 formats.py (见) Creating custom format files “在Django文档中)并定义 THOUSAND_SEPARATOR DECIMAL_SEPARATOR

    THOUSAND_SEPARATOR = ''
    DECIMAL_SEPARATOR = '.'
    

    这是一个全局设置,因此它将影响站点上显示的所有浮动。你必须打开本地化( USE_L10N 在你的设置中。

    如果您对模板有控制权,可以简单地删除 floatformat 过滤器。

    编辑 :我不确定,但也许你是这个姜戈虫的受害者: #13617 . 试着转弯 远离的 在settings.py中提供本地化支持,查看错误的逗号是否消失:

    USE_L10N = False
    

    如果是这种情况,请查看bugreport中提到的各种解决方法(最简单的方法是,如果您不需要本地化,则关闭本地化)。

        6
  •  2
  •   aldeano    14 年前

    我也遇到了同样的问题,正如Piquadrat所说,这是一个与本地化支持相关的恼人的bug。改变 USE_L10N = True False 解决此问题,建议在Django 1.3中修复。

        7
  •  0
  •   Nhu Trinh    7 年前

    当为javastrip打印某个变量时,最好对其进行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)