自定义django用户注册
我正在做一个用户注册功能,这是视图自定义django用户注册,django,Django,我正在做一个用户注册功能,这是视图 from django.http import HttpResponseGone from .forms import RegisterForms from django.shortcuts import render def register(request): if request.method == 'POST': user_forms = RegisterForms(request.POST)
from django.http import HttpResponseGone
from .forms import RegisterForms
from django.shortcuts import render
def register(request):
if request.method == 'POST':
user_forms = RegisterForms(request.POST)
if user_forms.is_valid():
new_userform = user_forms.save(commit=False)
new_userform.set_password(user_forms.cleaned_data['password'])
new_userform.save()
return HttpResponseGone('注册成功')
else:
return HttpResponseGone('注册失败')
else:
user_forms = RegisterForms()
return render(request,'account/register.html',{'form':user_forms})
这是表格
from django import forms
from django.contrib.auth.models import User
class RegisterForms(forms.ModelForm):
password = forms.CharField(label='Password',widget=forms.PasswordInput)
password2 = forms.CharField(label='password again',widget=forms.PasswordInput)
class Meta:
model = User
fields = ('username','email')
def clean_password2(self):
cd = self.cleaned_data
if cd['password'] != cd['password2']:
raise forms.ValidationError('密码输入不一致,请从新输入')
else:
return cd['password']
这是html
<p>欢迎注册</p>
<form action="." method="post">
{% csrf_token %}
<p>username {{ form.username }}</p>
<p>email {{ form.email }}</p>
<p>password {{ form.password }}</p>
<p>password again {{ form.password2 }}</p>
<input type="submit" value="register">
</form>
欢迎注册
{%csrf_令牌%}
用户名{{form.username}
电子邮件{{form.email}
密码{form.password}
再次输入密码{form.password2}
我发现,如果我将视图文件中clean_password2方法的名称更改为clean_password,则无法获取表单中password2的值
这是错误的消息[在此处输入图像描述][4]
我的英语不是很好,我希望有人能帮我谢谢
from django import forms
from django.contrib.auth.models import User
class RegisterForms(forms.ModelForm):
password = forms.CharField(label='Password',widget=forms.PasswordInput)
password2 = forms.CharField(label='password again',widget=forms.PasswordInput)
class Meta:
model = User
fields = ('username','email','password','password2')
def clean(self):
cd = self.cleaned_data
if cd['password'] != cd['password2']:
raise forms.ValidationError('密码输入不一致,请从新输入')
else:
return cd
简而言之,在这种情况下,请使用clean方法。不要将代码作为图像发布。将代码作为文本包含在问题正文中。可能您忘记将字段添加到元组字段=('username'、'email'、'password'、'password2')中了。非常感谢您的帮助