想知道是否有办法使用内置标签和过滤器测试变量是否在django中的列表或dict中。
即:{% if var|in:the_list %}
我没有在文档中看到它,如果没有,我会尝试自定义,但我不想做已经完成的事情。
由于
答案 0 :(得分:35)
在Django 1.2中,你可以做到
{% if var in the_list %}
像在Python中一样。
否则是的,你需要一个自定义过滤器 - 它虽然是三行的:
@register.filter
def is_in(var, obj):
return var in obj
答案 1 :(得分:3)
想要从模板中传递逗号分隔的字符串吗?创建自定义模板标签:
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 %}
答案 2 :(得分:-2)
在Django 3中... 只需通过:
someHtmlPage.html
<html>
{%if v.0%}
<p>My string {{v}}</p>
{%else%}
<p>My another typy {{v}}</p>
{%endif%}
</html>