想知道是否有办法使用内置标签和过滤器测试变量是否在django中的列表或dict中.
即: {% if var|in:the_list %}
我没有在文档中看到它,如果没有,我会尝试自定义,但我不想做已经完成的事情.
谢谢
Dan*_*man 38
在Django 1.2中,你可以做到
{% if var in the_list %}
Run Code Online (Sandbox Code Playgroud)
就像在Python中一样.
否则是的,你将需要一个自定义过滤器 - 它是一个三线程,但:
@register.filter
def is_in(var, obj):
return var in obj
Run Code Online (Sandbox Code Playgroud)
想要从模板中传递逗号分隔的字符串吗?创建自定义模板标签:
from django import template
register = template.Library()
@register.filter
def in_list(value, the_list):
value = str(value)
return value in the_list.split(',')
Run Code Online (Sandbox Code Playgroud)
然后你可以这样称呼它:
{% if 'a'|in_list:'a,b,c,d,1,2,3' %}Yah!{% endif %}
Run Code Online (Sandbox Code Playgroud)
它也适用于变量:
{% if variable|in_list:'a,b,c,d,1,2,3' %}Yah!{% endif %}
Run Code Online (Sandbox Code Playgroud)