Как показать различный контент в зависимости от группы пользователей в Django? - PullRequest
0 голосов
/ 13 марта 2020

Я создал шаблон password_change_done.

Но мне нужно показать кнопку Back to Dashboard для сотрудников и Back to Profile для клиентов.

Как этого добиться? через проверку UserGroup, не связываясь с views.py?

1 Ответ

1 голос
/ 13 марта 2020

Затем вы должны использовать filter шаблона, как показано ниже ...

В вашем приложении создайте папку 'templatetags'. В этой папке создайте два файла:

  1. __ init __. Py
  2. get_group.py

Структура папок выглядит как ...

app/
    __init__.py
    models.py
    templatetags/
        __init__.py
        get_group.py
    views.py

get_group.py file:

from django import template
from django.contrib.auth.models import Group 

register = template.Library()

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

Затем на своей странице html используйте его, как показано ниже ...

{% load get_group %}

{% if request.user|has_group:"Client" %} 
    ... Back to Dashboard button ...
{% else %}
    ... Back to profile button ...
{% endif %}
...