0

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

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

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

{% count_basic price.leafletPrice.price product.amount product.amount_unit product.category.basic_amount product.category.basic_amount_unit %}

count basic 是简单的标签:

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。我已将 l10n 设置settings.py为 True:

USE_I18N = True
USE_L10N = True

我也发现“人性化”可以工作,但首先,我不知道如何使用从另一个简单标签返回的值调用简单标签/过滤器(也许使用with?),其次,如果它适用于普通数字,为什么不适用于数字从简单标签返回?号码是否返回错误?应该转换吗?我也尝试过返回值Decimal()并且不起作用。

任何简单的工作解决方案都值得赞赏。

4

1 回答 1

0

好的,最后,我发现了如何做到这一点。我已将我的简单标签(特别是退货部分)更改为:

from django.template.defaultfilters import floatformat

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

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

于 2013-05-13T21:07:34.253 回答