html - LoginForm 在 Django 中产生未知的验证错误
问题描述
我创建了一个登录和注册模型表单。注册表工作正常,但是当我提交登录表单时,它显示验证错误
“使用此电子邮件的用户已存在”
我没有定义。页面没有重定向到成功 url,而是重新加载验证错误。
任何建议都会受到欢迎。
表格.py
class LoginForm(forms.ModelForm):
email = forms.EmailField(max_length=100, widget=forms.TextInput(attrs={'class': "form-control",
'placeholder': "Email"}), required=True)
password = forms.CharField(widget=forms.PasswordInput(attrs={'class': "form-control",
'placeholder': "Password",
'name':"login_password"}), required=True)
class Meta:
model = CustomUser
fields = ('email','password',)
视图.py
class LoginView(FormView):
model = CustomUser
form_class = LoginForm
success_url = reverse_lazy('first_app:home')
template_name = 'login.html'
def form_valid(self, form):
print('Inside form_valid of LoginView')
email = form.cleaned_data.get('email')
passw = form.cleaned_data.get('password')
print('1')
user = authenticate(username=email,password=passw)
print('2')
login_auth(self.request,user)
messages.success(self.request,'Logged in successfully')
return redirect('first_app:home')
模板
<form method="post" action="{% url 'users:login' %}">
{% csrf_token %}
<h2 class="text-center">Sign In</h2>
{% for error in form.email.errors %}
<div class="alert alert-danger alert-dismissible" role="alert">
{{ error }}
</div>
{% endfor %}
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-envelope"></i></span>
{{ form.email }}
</div>
</div>
{% for error in form.password.errors %}
<div class="alert alert-danger alert-dismissible" role="alert">
{{ error }}
</div>
{% endfor %}
<div class="form-group">
<div class="input-group">
<span class="input-group-addon" style="padding-right: 15px;padding-left: 16px"><i class="fa fa-lock"></i></span>
{{ form.password }}
</div>
</div>
<div class="form-group">
<button type="submit" class="btn-login btn-primary btn-block">Login</button>
</div>
<div class="clearfix">
<p class="text-center small">Don't have an account? <a href="{% url 'users:signup' %}">Register</a></p>
</div>
</form>
模型
class CustomUser(AbstractUser):
"""CustomUser model."""
username = None
name = models.CharField(max_length=100)
email = models.EmailField(_('email address'), unique=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
网址.py
urlpatterns = [
path('signup/', views.RegisterView.as_view(), name='signup'),
path('login/', views.LoginView.as_view(), name='login'),
]
解决方案
尝试在 forms.py 页面的电子邮件列中添加 'name':"login_email"。我认为这会有所帮助。
推荐阅读
- .net - 我是否需要部署与 .Net Core Web API 项目连接的 Asp.Net 控制台应用程序?
- reactjs - (Firestore) 使用无效数据调用的函数 addDoc()。不支持的字段值:未定义
- reactjs - 如何在 Postman 中使用不记名令牌身份验证对 ADO 的 POST 请求?
- python - 根据 isclose() 条件从数据框中选择行
- python - NA 值下降的字符串系列是否可以在多列数据框中爆炸?如果是这样,怎么做?
- python - 我们需要使用哪个 kubernetes 客户端来部署“种类:NetworkPlugins”的 YAML?
- python - 替换基于其他列值pyspark数据框的列值
- azure-functions - 为什么我看不到 Azure Functions 运行状况检查的任何指标?
- python - 在 keras 中使用 SparseCategoricalCrossEntropy 损失进行多类分类时,实际的类标签是什么?
- c++ - Memset 函数和布尔数组