Django loginform未进行身份验证并重定向到下一个url



我有一个多用户应用程序,如果我输入了错误的凭据,我将尝试对用户进行身份验证,这并没有引发表单错误,而是将我重定向到settings.py文件中提到的login_url

表单.py

class LoginForm(forms.Form):
username = forms.CharField(required=True)
password = forms.CharField(widget=forms.PasswordInput)
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
super().__init__(*args, **kwargs)
def clean(self):
username = self.cleaned_data.get("username")
password = self.cleaned_data.get("password")
try:
user = User.objects.get(username=username)
if user.user_a:
if user.check_password(password):
return self.cleaned_data
else:
self.add_error("password", forms.ValidationError("Password is wrong."))
except models.User.DoesNotExist:
self.add_error("email", forms.ValidationError("User does not exist."))

视图.py

class LoginView(FormView):
template_name = 'login.html'
form_class = LoginForm
success_url = reverse_lazy("home")

设置.py

LOGIN_URL = 'index'

您为什么不使用内置的Django Auth视图和表单?

尝试推出自己的身份验证系统是出了名的困难且容易出错。我强烈建议使用内置的视图和表单。

你可以在这里找到关于Django Auth系统的更多信息:https://docs.djangoproject.com/en/4.0/topics/auth/

最新更新