Перенаправление на главную страницу при аутентификации
У меня есть некоторые проблемы с перенаправлением.
Когда я уже вошел в систему, и пытаюсь перейти на "/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)