Django模板:测试变量是否在列表或dict中
我想知道是否有一种方法可以使用内置的标记和过滤器测试django中的变量是否在列表或dict中 Ie:Django模板:测试变量是否在列表或dict中,django,templates,Django,Templates,我想知道是否有一种方法可以使用内置的标记和过滤器测试django中的变量是否在列表或dict中 Ie:{%if var|in:the_list%} 我在文档中没有看到它,如果没有,我会尝试一些定制的东西,但我不想做一些已经做过的事情 谢谢在Django 1.2中,您只需 {% if var in the_list %} 就像在Python中一样 否则是的,您将需要一个自定义过滤器-它是一个三衬板: @register.filter def is_in(var, obj): return
{%if var|in:the_list%}
我在文档中没有看到它,如果没有,我会尝试一些定制的东西,但我不想做一些已经做过的事情
谢谢在Django 1.2中,您只需
{% if var in the_list %}
就像在Python中一样
否则是的,您将需要一个自定义过滤器-它是一个三衬板:
@register.filter
def is_in(var, obj):
return var in obj
要从模板传递逗号分隔的字符串吗?创建自定义templatetag:
from django import template
register = template.Library()
@register.filter
def in_list(value, the_list):
value = str(value)
return value in the_list.split(',')
你可以这样称呼它:
{% if 'a'|in_list:'a,b,c,d,1,2,3' %}Yah!{% endif %}
它也适用于变量:
{% if variable|in_list:'a,b,c,d,1,2,3' %}Yah!{% endif %}
在Django 3。。。
简单地说就是:
someHtmlPage.html
<html>
{%if v.0%}
<p>My string {{v}}</p>
{%else%}
<p>My another typy {{v}}</p>
{%endif%}
</html>
{%if v.0%}
我的字符串{{v}
{%else%}
我的另一种类型{{v}
{%endif%}
列表是否可以在模板中,如:{%if var in['item1'、'item2'、'item3']%}
@Sevenearths我刚刚尝试过它,并且可以确认,从Django 1.5.1开始,列表不能在类似的if
语句中定义。那么我们该如何做呢?@laycat:我们必须与上下文中给出的列表变量进行比较。顺便说一句:如何完全避免Django模板语言?这个答案并没有回答这个问题。在回答的示例中,您访问的是数组中的一个位置,而不是所有位置。