簡體   English   中英

如何在 Django 模板中設置過濾器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM