【发布时间】:2011-03-08 06:49:18
【问题描述】:
想知道是否有一种方法可以使用内置标签和过滤器测试变量是否在 django 中的列表或字典中。
即:{% if var|in:the_list %}
我在文档中看不到它,如果没有,我会尝试一些自定义的东西,但我不想做已经做过的事情。
谢谢
【问题讨论】:
想知道是否有一种方法可以使用内置标签和过滤器测试变量是否在 django 中的列表或字典中。
即:{% 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
【讨论】:
{% if var in ['item1','item2','item3'] %}
if 语句中定义。
想要从模板中传递一个逗号分隔的字符串?创建自定义模板标签:
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>
【讨论】: