如果模板标签不起作用,则在 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 中过滤的主要内容,如果未能解决你的问题,请参考以下文章

Django 自定义模板过滤器不起作用

Django模板过滤器根本不起作用

JQuery 在 Django 自定义模板标签的模板中不起作用

用户身份验证模板标签不起作用-Django

使用模板标签循环遍历 django 中的对象不起作用

html select标签在django模板中不起作用