7

我有一个看起来像这样的 Django 模板:

{% if thing in ['foo', 'bar'] %}
    Some HTML here
{% else %}
    Some other HTML
{% endif %}

问题是它空着回来。如果我切换到这个:

{% if thing == 'foo' or thing == 'bar' %}
    Some HTML here
{% else %}
    Some other HTML
{% endif %}

它工作正常。有什么原因你不能x in list在 Django 模板中使用吗?

4

3 回答 3

10

你可以。但是您不能在模板中使用列表文字。在视图中生成列表,或者避免使用if ... in ....

于 2013-01-14T23:14:32.413 回答
0

我得到了这个答案的帮助。我们可以用来split在模板本身内部生成一个列表。我的最终代码如下(我想同时排除"user""id"

        {% with 'user id' as list %}
        {% for n, f, v in contract|get_fields %}
        {% if n not in list.split %}
        <tr>
            <td>{{f}}</td>
            <td>{{v}}</td>
        </tr>
        {% endif %}
        {% endfor %}
        {% endwith %}
于 2019-09-03T17:41:33.583 回答
0

从视图中的上下文数据发送列表。

视图.py:

class MyAwesomeView(View):
    ...
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['list'] = ('foo', 'bar')
        ...
        return context

我的模板.html:

{% if thing in list %}
    Some HTML here
{% else %}
    Some other HTML
{% endif %}

在 Django 版本 3.2.3 上测试。

于 2021-11-04T18:28:01.553 回答