Django模板中带有小数点和有限小数部分的格式浮动



我知道我可以通过使用输出本地化浮点的过滤器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不起作用,则可以切换语言以强制显示

最新更新