我知道我可以通过使用输出本地化浮点的过滤器floatformat:2
来限制浮点中的小数位数,我也知道过滤器stringformat:"f"
输出类似1.54的点浮点,而不是类似<strong+1.54>的本地化逗号浮点。
例如,如果原始浮点值是1.54233,我想打印11.54而不是1,54.44233。这可以在不需要自定义过滤器的情况下实现吗?
注意,本地化(以及unlocalize
过滤器和localize
标签)对floatformat
的输出有NO影响!在撰写本文时,关于更好的文档还有一个悬而未决的问题。
虽然将语言切换为"en"是一种变通方法,但没有必要实现(a)始终使用句点和(b)限制小数位数,在我看来,利用语言功能的副作用并不理想。
要使用独立于本地化的Django模板过滤器正确格式化float,可以使用stringformat
!Printf样式的格式不仅接受单个转换(如"f"
),还接受几个可选参数,如"精度"。有关详细信息,请参阅链接的Python文档。
要将您的浮动1.54233格式化为11.54,只需使用:
{{ float_value|stringformat:".2f" }}
只需使用本地化/卸载格式分隔符
https://docs.djangoproject.com/en/1.9/topics/i18n/formatting/#std:templatefilter-定位
例如:
{% load l10n %}
{{ value|localize }}
若要禁用单个值的本地化,请使用uncalize。控制对模板的大部分进行本地化,使用localize模板标记。取消标度¶
强制打印单个值而不进行本地化。
例如:
{% load l10n %}
{{ value|unlocalize }}
若要强制本地化单个值,请使用localize。控制对模板的大部分进行本地化,使用localize模板标记。
编辑:
参见https://docs.djangoproject.com/en/1.9/topics/i18n/translation/#switching-模板中的语言
{% 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 %}
如果localized/unlocalize不起作用,则可以切换语言以强制显示