Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django模板中设置过滤器_Python_Django_Templatetags - Fatal编程技术网

Python 如何在Django模板中设置过滤器

Python 如何在Django模板中设置过滤器,python,django,templatetags,Python,Django,Templatetags,我有一个自定义的模板标签,它可以验证用户的组,但是当我在HTML模板中使用它作为模板过滤器时,它会到处被窃听 这是我的自定义模板标记: @register.filter(name='is_in_group') def is_in_group(user, group_name): group = Group.objects.get(name=group_name) return True if group in user.groups.all() else False 这是模板中

我有一个自定义的模板标签,它可以验证用户的组,但是当我在HTML模板中使用它作为模板过滤器时,它会到处被窃听

这是我的自定义模板标记:

@register.filter(name='is_in_group')
def is_in_group(user, group_name):
    group = Group.objects.get(name=group_name)
    return True if group in user.groups.all() else False
这是模板中的第一个过滤器-允许每个用户(甚至是这些组之外的用户)通过:

但如果我将订单更改为:

{% if request.user|is_in_group:"casino supervisor" or "food bev supervisor" or "security supervisor" or "cage supervisor" %}
。。。代码失败(不允许任何用户通过)

如果我只设置了一个组:

{% if request.user|is_in_group:"food bev supervisor" %}
然后过滤器正常工作(但我不能设置多个组)


这是Django的bug吗?解决这个问题的最佳方法是什么?

我可以通过对每个变量应用过滤器来解决这个问题:

{% if request.user|is_in_group:"food bev supervisor" or request.user|is_in_group:"casino supervisor" or request.user|is_in_group:"security supervisor" or request.user|is_in_group:"cage supervisor" %}
它既不漂亮,也不象蟒蛇,但至少它能起作用。Django大会在这里有点奇怪,但在尝试了许多不同的方式之后,我相信这是正确的方式

{% if request.user|is_in_group:"food bev supervisor" or request.user|is_in_group:"casino supervisor" or request.user|is_in_group:"security supervisor" or request.user|is_in_group:"cage supervisor" %}