Перенаправление пользователя на определенный адрес после входа в Django

Проблема заключается в следующем: после того, как пользователь ввел свои данные в форму на странице /accounts/login, при успешном входе он должен быть перенаправлен на страницу, соответствующую его имени пользователя ``/username``. Одновременно с этим происходит перенаправление в админ-панель и у каждого админа будут отображаться свои модели. Я не понимаю, как можно украсть имя текущего пользователя, а затем разрешить только этому пользователю войти в админ-панель, соответствующую его имени. Например, пользователь ввел имя ntz и какой-то пароль, после этого он должен попасть на /ntz/ - страницу админки этого пользователя. Другие пользователи никак не смогут туда попасть. Один пользователь - одна админ-панель. Вот что есть в коде:

#urls.py
from django.urls import path, include
from .views import main, CustomLoginView
from PKM.admin import pkm_admin_site
from NTZ.admin import ntz_admin_site

urlpatterns=[
    path('', main, name='main'),
    path('ntz/',ntz_admin_site.urls),
    path('pkm/', pkm_admin_site.urls),
    path('accounts/', include('django.contrib.auth.urls')),
    path('accounts/login/', CustomLoginView.as_view(), name='login')
]
#login.html
{% load static %}
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{% block title %}Log in to your personal account{% endblock %}</title>
</head>
<body>
    <div class="login-container">
        <h2>Login to your personal account</h2>
<form method="post">
            {{ form.as_p }}
            {% csrf_token %}
            <p><input type="submit" value="Input"></p>
        </form>
    </div>
</body>
</html>
#views.py
from django.shortcuts import render, redirect
from django.contrib.auth import login, authenticate

# Create your views here.
def main(request):
    return render(request, 'default.html')


# views.py

from django.contrib.auth.views import LoginView
from django.shortcuts import redirect


class CustomLoginView(LoginView):
    def form_valid(self, form):

        user = form.get_user()

        if self.request.user.username == 'pkm':
            return redirect('/pkm/')
        elif self.request.user.get_username() == 'ntz':
            return redirect('/ntz/')
        else:
            return super().form_valid(form)

Я изменил вид с классного на функциональный, но ничего не помогло(

).

После входа в систему URL-адрес перенаправления управляется в методе get_success_url.

https://github.com/django/django/blob/main/django/contrib/auth/views.py#L40

class CustomLoginView(LoginView):
    #def form_valid(self, form):
     #   user = form.get_user()
      #  if self.request.user.username == 'pkm':
      #      return redirect('/pkm/')
      #  elif self.request.user.get_username() == 'ntz':
      #      return redirect('/ntz/')
      #  else:
      #      return super().form_valid(form)
  def get_success_url(self):
        if self.request.user.username == 'pkm':
            return redirect('/pkm/')
        elif self.request.user.get_username() == 'ntz':
            return redirect('/ntz/')
        else:
            return super().get_success_url()

Вернуться на верх