Перенаправление на главную страницу при аутентификации

У меня есть некоторые проблемы с перенаправлением.

Когда я уже вошел в систему, и пытаюсь перейти на "/accounts/login", он все равно переходит на эту ссылку, и если я меняю в url.py путь, например, на "accounts/logins", перенаправление работает, но если я не аутентифицирован, он говорит мне, что:

UnboundLocalError: локальная переменная 'context' ссылается перед присвоением

AND "/accounts/login" все еще доступен

views.py

def loginPage(request):
    if request.user.is_authenticated:
        return redirect("index")
    if request.method == 'POST':
            username = request.POST.get('username')
            password = request.POST.get('password')

            user = authenticate(request, username=username, password=password)

            if user is not None:
                login(request, user)
                return redirect('index')
            else:
                messages.info(request, 'Username OR password is incorrect')
            context = {}

    return render(request, 'registration/login.html', context)

url.py

urlpatterns = [
    path('login/', views.loginPage, name='loginPage'),
    path('logout/', views.logoutUser, name='logoutUser'),
    path('register/', views.registerPage, name='registerPage'),
]

Для перенаправления на определенный url после входа в систему вы можете задать в файле settings.py следующее:

LOGIN_REDIRECT_URL = '/'

надеюсь, это то, что вы ищете

Попробуйте этот код...

def loginPage(request):
    
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(request, username=username, password=password)

        if user is not None:
            login(request, user)
            return redirect('index')
        else:
            messages.info(request, 'Username OR password is incorrect')
            return redirect('/login/')
    else:
        if request.user.is_authenticated:
            return redirect('/index/')
        else:
            context = {}
            return render(request, 'registration/login.html',context)
Вернуться на верх