Django-templates:为什么{%if"string"| length> 10%}不起作用?

sim*_*mon 15 django django-templates

我正在使用Django 1.3.如果我将以下片段放入我的模板中:

{% if 'my string'|length > 10 %}{{ 'my string'|length }}{% endif %}
Run Code Online (Sandbox Code Playgroud)

渲染引擎打印'9'.我唯一能想到的是|length过滤器返回一个字符串,但这在极端情况下似乎很奇怪.谁能指出我正确的方向?

谢谢!

编辑:

我实际想要测试的长度来自flatpage.title提供django.contrib.flatpages.出于这个原因,我宁愿不破解视图来提供模板所需的信息.我希望我可以简单地使用Django文档中|length描述的过滤器.但是,正如已经指出的那样,这样做的唯一方法似乎也是使用过滤器,其行为在这方面没有明确定义.:(|get_digit

DTi*_*ing 12

建议不要使用它,但我之前已经get_digitlength过滤器和过滤器结合起来使其工作.

{% if "12345678901234567890"|length|get_digit:"-1" > 20 %} 
    {{ "12345678901234567890"|length }} 
{% endif %}
Run Code Online (Sandbox Code Playgroud)

在模板中没有任何结果,但是:

{% if "12345678901234567890"|length|get_digit:"-1" > 19 %} 
    {{ "12345678901234567890"|length }} 
{% endif %}
Run Code Online (Sandbox Code Playgroud)

结果是:

20
Run Code Online (Sandbox Code Playgroud)

正在印刷.


Sil*_*ght 8

是的,过滤器总是返回一个字符串.

您可以通过计算视图中的字符串长度来实现所需的功能,并执行以下操作:

{% if str_length > 10 %}
    {{ str_length }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)

或者根据需要创建自定义过滤器:http://code.djangoproject.com/wiki/BasicComparisonFilters

编辑错字


小智 5

我知道它很晚,但是按照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 %}
Run Code Online (Sandbox Code Playgroud)