python - 如何在 Django 表单中进行密码和确认密码验证
问题描述
这是一个注册表单。当我输入不同的密码时,它不会显示任何错误。我参考了很多网站,请帮助我
from django import forms
from .models import *
class signup_form(forms.Form):
firstname = forms.CharField()
lastname = forms.CharField()
email = forms.EmailField()
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
Qual_choices = (
('UG', 'UG'),
('PG', 'PG')
)
gender = forms.ChoiceField( widget=forms.RadioSelect,choices=GENDER_CHOICES)
qualification = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,choices=Qual_choices)
Password = forms.CharField(widget=forms.PasswordInput())
ConfirmPassword = forms.CharField(widget=forms.PasswordInput())
def clean(self):
cleaned_data = super(signup_form, self).clean()
password = cleaned_data.get('Password')
confirm_password = cleaned_data.get('ConfirmPassword')
if password and confirm_password:
if password != confirm_password:
raise forms.ValidationError('Password mismatch')
return confirm_password
解决方案
你需要在 clean_data 之前添加 self
def clean_password2(self):
password1 = self.cleaned_data.get("password1")
password2 = self.cleaned_data.get("password2")
if password1 and password2 and password1 != password2:
raise forms.ValidationError("Passwords do not match")
return password2
如果表单经过验证,则执行此操作
if register_form.is_valid():
user = register_form.save(commit=False)
user = register_form.save()
username = form.cleaned_data.get('username')
raw_password = register_form.cleaned_data.get('password1')
user = authenticate(request, username=username,
password=raw_password)
login(request, user)
return redirect('some url')
推荐阅读
- xml - XSLT 如何获取特定的组节点
- airflow - 从 TriggerDagRunOperator 触发任务
- reactjs - 在 web 应用程序中存储和管理新颖长度文本的最佳方法是什么?
- sql - 连接表上的 SQL 最小值
- java - 如何将背景图像放入 JFrame 中?
- python - 推理过程中“列出超出范围错误的索引”(本周出现)
- java - 为什么数据没有在数据库中插入代码中的任何错误
- http - 即使强制尝试设置为 false,Go http 请求也会退回到 http2
- java - 将数据保存到文本文件中
- ibm-cloud-functions - 我可以将 Cloud Functions 操作的执行时间延长到一个半小时吗?