2014-01-31 2 views
2

просматривал в сеть в течение нескольких дней, которые ищут прямой способ сделать что-то вроде следующих с использованием стандартной функциональности User/Group:Django тест идиоматической группы шаблоны

{% if user.is_in_group 'foo' %} 
    <p>Hello Foo user</p> 
{% endif %} 

расширив класс пользователя Django Безразлично» t кажется очень приятным, и я не уверен, может ли фильтр использоваться для создания логического для if. Добавление списка user_groups в контекст кажется неряшливым.

Каким будет самый удобный способ приблизиться к этому в Django?

Заранее спасибо

ответ

5

Фильтр может, конечно, возвращают логическое значение, чтобы использовать в случае, если и это, безусловно, лучшим решением здесь. Расширение класса User не помогло бы, потому что вы все равно не сможете передать параметр методу в шаблоне.

Фильтр может быть столь же просто, как:

@register.filter 
def is_in_group(user, group_name): 
    return user.groups.filter(name=group_name).exists() 

и вы бы использовать его как это:

{% if user|is_in_group:"foo" %} 
+0

Прекрасный материал. Спасибо. –

Смежные вопросы