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')