如果模板标签不起作用,则在 Django 中过滤
Posted
技术标签:
【中文标题】如果模板标签不起作用,则在 Django 中过滤【英文标题】:Filter in Django if template tag not working 【发布时间】:2012-10-27 20:26:00 【问题描述】:我几乎完全掌握了 django docs 中的内容
% if things|length > 1 %
<div>
<span>Multiple things were found for this search criteria</span>
<button>Show All</button>
</div>
% endif %
然而,当things|length
为 0 时,div 会显示出来。
我使用的是 Django 1.3.1,所以我不知道这是否是问题所在——我找不到该信息。至少,它不在 1.4 发行说明中。
这到底是怎么回事?这是 1.3 的问题,还是...?
编辑:看起来这确实是在1.2 中引入的,应该可以工作。那么有什么关系呢?
【问题讨论】:
行程是一个查询集对象吗? 您能发布一下您是如何获得行程的吗? 你的意思是我的视图代码?我实际上是在设置results = itineraries=[]
,循环遍历其他内容并将 dicts 附加到它,然后将结果传递给模板。
你确定itineraries|length
是0?你如何在模板中传递它。顺便说一句,results = itineraries=[]
有SyntaxError: invalid syntax
。也许你的意思是results = itineraries:[]
这就是我的意思,谢谢。 itineraries|length
呈现 0
【参考方案1】:
试试 % if itineraries.items|length > 1 % ... % endif % 或仅 % if itineraries %
【讨论】:
我忘记了我拥有此代码的模板部分是在传入行程之前渲染的,因此没有行程(我假设 Django 模板将其视为行程=无),尽管@ 987654322@ 呈现为 0,它一定被像''
一样对待。
显然这是一个奇怪的设计问题...python.6.n6.nabble.com/…以上是关于如果模板标签不起作用,则在 Django 中过滤的主要内容,如果未能解决你的问题,请参考以下文章