我用的是Django 1.3如果我将以下片段放入模板中:
{% if 'my string'|length > 10 %}{{ 'my string'|length }}{% endif %}
渲染引擎打印'9‘。我唯一能想到的是,|length
过滤器正在返回一个字符串,但在极端情况下,这似乎很奇怪。谁能给我指明正确的方向?
谢谢!
编辑:
我实际上想要测试的长度来自django.contrib.flatpages
提供的django.contrib.flatpages
。由于这个原因,我不想黑视图来向模板提供我需要的信息。我希望我可以像在|length
中所描述的那样简单地使用Django博士,这里过滤器。然而,正如已经指出的,这样做的唯一方法似乎也是使用|get_digit
过滤器,它的行为在这方面没有明确的定义。:(
发布于 2011-05-02 08:48:32
是的,过滤器总是返回字符串。
您可以通过计算视图中的字符串长度来实现所需的功能,并执行如下操作:
{% if str_length > 10 %}
{{ str_length }}
{% endif %}
或为您的需要创建自定义筛选器:http://code.djangoproject.com/wiki/BasicComparisonFilters
编辑排版
发布于 2011-05-02 09:19:28
我是建议不要使用这个,但我已经结合了get_digit
和length
过滤器来完成这项工作。
{% if "12345678901234567890"|length|get_digit:"-1" > 20 %}
{{ "12345678901234567890"|length }}
{% endif %}
模板中没有任何结果,但:
{% if "12345678901234567890"|length|get_digit:"-1" > 19 %}
{{ "12345678901234567890"|length }}
{% endif %}
在以下方面的成果:
20
被打印出来。
发布于 2019-02-04 10:33:59
我知道为时已晚,但按照django 2.1,您的代码将正常工作。请参阅下面的参考资料https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#filters
{% if messages|length >= 100 %}
You have lots of messages today!
{% endif %}
https://stackoverflow.com/questions/5855011
复制相似问题