django 里面的cleaned_data少了数据
用djang写一个用户注册,在req.POST中传入了4个参数
然后form里面的data显示也是这几个数据
但是在form.is_valid()时发现,
self.cleaned_data里面没有了enpassword,但是self.data里面还有
为什么呢
代码如下:
forms.py
from django import forms
class UserForm(forms.Form):
email=forms.EmailField(label='邮箱')
username=forms.CharField(max_length=20,label='用户名')
password=forms.CharField(max_length=20,label='密码')
enpassword=forms.CharField(max_length=20,label='确认密码')
def clean_password(self):
password=self.cleaned_data['password']
enpassword=self.cleaned_data['enpassword']
if password==enpassword:
return password
else:
raise forms.ValidationError('Please re-enter your password.')
view.py
def registe_view(req):
if req.method=='POST':
form=UserForm(req.POST)
if form.is_valid():
username=form.cleaned_data['username']
email=form.cleaned_data['email']
password=form.cleaned_data['password']
enpassword=form.cleaned_data['enpassword']
user=authenticate(username=username,email=email,password=password)
user=User.objects.create_user(username=username,email=email,password=password)
user.save()
context={'title':'注册','status':'成功'}
return render(req,'redirect.html',context=context)
else:
form=UserForm()
return render(req,'login/registe.html',context={'form':form,'value':'注册'})
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ value }}</title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{% for field in form %}
<p class="fieldWrapper">
{{ field.label_tag }}{{ field }}
{{ field.errors }}
</p>
{% endfor %}
<input type="submit" value="{{ value }}">
</form>
</body>
</html>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
看了很久都没看出哪里有问题啊。233...
也没看见你在哪里执行了 clean_password 这个类函数。
不明白上面代码里面的 return password 什么意义。
建议修改成:
改成clean_enpassword,改成clean不会跳提示信息,不知道为什么
请问一下你解决了嘛. 我也遇到同样的问题了 ,我是只取到password的值,没有username的值 好急啊