Django模板:从简单标记返回的本地化数字

时间:2013-05-07 23:31:52

标签: python django python-2.7 django-1.5

我希望这个问题不在这里,我已经用Google搜索了很长时间但没有找到任何东西。我在模板中格式化数字有问题,但不知何故特别。也许,这是完整的问题如何调用从简单标签返回的值的过滤器。所以,首先,一些事实:

  • 使用python 2.7和Django 1.5
  • 在捷克语中,我们使用逗号“,”作为小数分隔符和optionaly空格“”作为千位分隔符(更常见的是写入没有千位分隔符的数字)。
  • 通常情况下,按{{ price }}编号是打印,例如的 16,0

出于某种原因,我必须使用模板中的数字:

{% count_basic price.leafletPrice.price product.amount product.amount_unit product.category.basic_amount product.category.basic_amount_unit %}
计数基本是简单的标签:

from django import template

register = template.Library()

@register.simple_tag
def count_basic(price, product_amount, product_unit, category_amount, category_unit):
    if product_unit == 'mililiter' or product_unit == 'gram':
        return (float(price) / product_amount) * 1000
    else:
        return float(price) / product_amount

结果是不打印为 16.0 。我已将settings.py中的l10n设置为True:

USE_I18N = True
USE_L10N = True

我也发现“人性化”起作用但首先,我不知道如何使用另一个简单标记(可能使用with)返回值来调用简单标记/过滤器?)其次,如果它正在工作对于普通数字,为什么不从简单标签返回的数字?这个号码被严重退回了吗?应该转换?我已经尝试将值返回为Decimal()并且无效。

任何简单易用的解决方案都很受欢迎。

1 个答案:

答案 0 :(得分:0)

好的,最后,我发现了如何做到这一点。我已将我的简单标记,特别是返回部分更改为:

from django.template.defaultfilters import floatformat

return floatformat(float(price) / product_amount, 2)

floatformat制作模板以显示格式化编号,逗号为小数点分隔符。请求了两个小数位(floatformat的第二个参数)。