我知道我可以通过使用输出本地化浮点数的过滤器floatformat:2
来限制浮点数中的小数位数,而且我知道过滤器stringformat:"f"
输出一个虚线浮点数,如 1.54 而不是像 1,54 这样的本地化逗号浮动。
例如,如果原始浮动 1.54233 ,我想打印 1.54 而不是 1,54 或 1.54233 < / strong>即可。这可以在不需要自定义过滤器的情况下实现吗?
答案 0 :(得分:8)
只需使用localize / unlocalize格式分隔符
https://docs.djangoproject.com/en/1.9/topics/i18n/formatting/#std:templatefilter-localize
例如:
{% load l10n %}
{{ value|localize }}
要禁用单个值的本地化,请使用unlocalize。控制 在模板的大部分上进行本地化,使用localize 模板标签。 unlocalize¶
强制打印单个值而不进行本地化。
例如:
{% load l10n %}
{{ value|unlocalize }}
要强制单个值的本地化,请使用localize。控制 在模板的大部分上进行本地化,使用localize 模板标签。
编辑:
见 https://docs.djangoproject.com/en/1.9/topics/i18n/translation/#switching-language-in-templates
{% load i18n %}
{% get_current_language as LANGUAGE_CODE %}
<!-- Current language: {{ LANGUAGE_CODE }} -->
<p>{% trans "Welcome to our page" %}</p>
{% language 'en' %}
{% get_current_language as LANGUAGE_CODE %}
<!-- Current language: {{ LANGUAGE_CODE }} -->
<p>{% trans "Welcome to our page" %}</p>
{% endlanguage %}
如果localize / unlocalize不起作用,您可以切换语言强制显示
答案 1 :(得分:2)
请注意,本地化(以及unlocalize
filter and localize
tags)对floatformat
的输出具有 NO 效果!在撰写本文时,有一个open issue about better documentation。
虽然将语言切换为“ en”是一种解决方法,但不必实现(a)始终使用点和(b)限制小数位数,并且我认为这是利用语言功能的副作用不够理想。
要使用与本地化无关的Django模板过滤器正确格式化浮点格式,您可以 使用stringformat
! Printf-style formatting不仅接受一次转换(如"f"
),还接受多个可选参数,例如“ precision”。有关详细信息,请参见链接的Python文档。
要将浮点数 1.54233 设置为 1.54 ,只需使用:
{{ float_value|stringformat:".2f" }}