Почему мой код Django не проходит в Else Part?
Вот мой views.py, где я написал код входа пользователя, и проблема, с которой я сталкиваюсь, заключается в том, что код работает правильно для аутентификации пользователя, но когда пользователь вводит неправильные учетные данные, я хочу, чтобы пользователь перешел на страницу регистрации, но я не могу перевести его на страницу регистрации. Пожалуйста, помогите мне разобраться с этим и сообщите мне, где я совершаю ошибку
def user_login(request):
if request.method == "POST":
fm = AuthenticationForm(request=request,data=request.POST)
if fm.is_valid():
uname = fm.cleaned_data['username']
pword = fm.cleaned_data['password']
user = authenticate(username=uname,password=pword)
if user is not None:
login(request,user)
return HttpResponseRedirect('/profile/')
else:
return HttpResponseRedirect('/register/')
else:
fm = AuthenticationForm(request)
return render(request,'login.html',{'form':fm})
Вот мои urls.py
from . import views
urlpatterns = [
path('',views.index),
path('register/',views.user_register,name='user_register'),
path('login/',views.user_login,name='user_login'),
path('profile/',views.user_profile,name='user_profile'),
]
Вы не обработали ситуацию, когда форма недействительна (нет оператора else для if fm.is_valid():
). Попробуйте использовать следующее:
def user_login(request):
if request.method == "POST":
fm = AuthenticationForm(request=request,data=request.POST)
if fm.is_valid():
uname = fm.cleaned_data['username']
pword = fm.cleaned_data['password']
user = authenticate(username=uname,password=pword)
if user is not None:
login(request,user)
return HttpResponseRedirect('/profile/')
return HttpResponseRedirect('/register/')
else:
fm = AuthenticationForm(request)
return render(request,'login.html',{'form':fm})