首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django-模板:为什么{%如果“字符串”长度> 10 %}不工作呢?

Django-模板:为什么{%如果“字符串”长度> 10 %}不工作呢?
EN

Stack Overflow用户
提问于 2011-05-02 08:29:25
回答 6查看 28.3K关注 0票数 17

我用的是Django 1.3如果我将以下片段放入模板中:

代码语言:javascript
运行
复制
{% if 'my string'|length > 10 %}{{ 'my string'|length }}{% endif %}

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

谢谢!

编辑:

我实际上想要测试的长度来自django.contrib.flatpages提供的django.contrib.flatpages。由于这个原因,我不想黑视图来向模板提供我需要的信息。我希望我可以像在|length中所描述的那样简单地使用Django博士,这里过滤器。然而,正如已经指出的,这样做的唯一方法似乎也是使用|get_digit过滤器,它的行为在这方面没有明确的定义。:(

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-05-02 08:48:32

是的,过滤器总是返回字符串。

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

代码语言:javascript
运行
复制
{% if str_length > 10 %}
    {{ str_length }}
{% endif %}

或为您的需要创建自定义筛选器:http://code.djangoproject.com/wiki/BasicComparisonFilters

编辑排版

票数 10
EN

Stack Overflow用户

发布于 2011-05-02 09:19:28

我是建议不要使用这个,但我已经结合了get_digitlength过滤器来完成这项工作。

代码语言:javascript
运行
复制
{% if "12345678901234567890"|length|get_digit:"-1" > 20 %} 
    {{ "12345678901234567890"|length }} 
{% endif %}

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

代码语言:javascript
运行
复制
{% if "12345678901234567890"|length|get_digit:"-1" > 19 %} 
    {{ "12345678901234567890"|length }} 
{% endif %}

在以下方面的成果:

代码语言:javascript
运行
复制
20

被打印出来。

票数 13
EN

Stack Overflow用户

发布于 2019-02-04 10:33:59

我知道为时已晚,但按照django 2.1,您的代码将正常工作。请参阅下面的参考资料https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#filters

代码语言:javascript
运行
复制
{% if messages|length >= 100 %}
   You have lots of messages today!
{% endif %}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5855011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档