Django Custom Login

Мне нужна страница входа, которая перенаправляет пользователя на основе групп И их имени пользователя pk. Например, у сотрудников есть приборная панель, на которой они могут видеть всю работу сотрудников, в то время как сотрудники перенаправляются на свою собственную страницу на основе их pk

Я сделал кое-что с представлениями на основе классов, и это работает. Но сотрудники перенаправляются на пустую страницу, где они могут нажать на кнопку приборной панели, которая перенаправляет их туда. Эта кнопка приборной панели отображается только если они находятся в определенной группе, ограниченной циклом for в шаблоне

А когда работодатели пытаются зайти вручную на эту панель, они видят пустую страницу из-за цикла для сотрудника, но помимо ужасной безопасности я знаю, что должно быть как-то возможно сделать условие if. Но где бы я ни искал и что бы я ни пробовал, это единственный результат, который у меня есть.

Есть ли у кого-нибудь идея? шаблон:

{% for group in request.user.groups.all %} {% if group.name == 'Personalverwaltung' %}

    <li><a href="{% url 'Dashboard' %}">dashboard</a></li>
    {% endif %}
    {% endfor %}

{% for group in request.user.groups.all %} {% if group.name == 'Personalverwaltung' %}

html

{% endif %} {% endfor %}

Вид:

class Einloggen(LoginView): template_name = 'SCHUK/Einloggen.html' fields ='all' redirect_authenticated_user = True

def get_success_url(self):
    return reverse('Schulverzeichnis', args=[self.request.user.pk])

Урлы:

path('Schulverzeichnis/<int:pk>', Schulverzeichnis.as_view(), name='Schulverzeichnis'),

Теперь, если я регистрирую пользователя на его представление шаблона, перенаправление работает, а когда я регистрирую сотрудников, я просто не даю им представление, и когда они входят, у них появляется пустая страница со ссылкой на приборную панель. Но я имею в виду, что это не лучшая практика перенаправления пользователей

Вам нужно сделать это методом get_success_url(self):

def get_success_url(self):
    if self.request.user.groups.filter(name='Personalverwaltung').exists():
         return reverse('Dashboard')
    else: #for users that are not members of Personalverwaltung group
      return reverse('index')
Вернуться на верх