[英]How to set filters in Django template
我有一個自定義模板標簽來驗證用戶的組,但是當我將它用作 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:"food bev supervisor" or "casino supervisor" or "security supervisor" or "cage supervisor" %}
但是,如果我將順序更改為:
{% 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 中的錯誤嗎? 解決這個問題的最佳方法是什么?
我能夠通過將過濾器應用於每個變量來解決這個問題:
{% 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" %}
它並不漂亮或 Pythonic,但至少它有效。 Django 約定在這里有點奇怪,但在嘗試了很多不同的方法之后,我相信這是正確的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.