我希望这个问题不在这里,我已经用Google搜索了很长时间但没有找到任何东西。我在模板中格式化数字有问题,但不知何故特别。也许,这是完整的问题如何调用从简单标签返回的值的过滤器。所以,首先,一些事实:
{{ 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()
并且无效。
任何简单易用的解决方案都很受欢迎。
答案 0 :(得分:0)
好的,最后,我发现了如何做到这一点。我已将我的简单标记,特别是返回部分更改为:
from django.template.defaultfilters import floatformat
return floatformat(float(price) / product_amount, 2)
floatformat
制作模板以显示格式化编号,逗号为小数点分隔符。请求了两个小数位(floatformat的第二个参数)。