我正在尝试从基类UserCreationForm创建在django中添加电子邮件字段的注册表单。代码为
form.py
class ussignup(UserCreationForm):
email=forms.EmailField()
class Meta:
model=User
fields=('username','email','password1','password2')
def save(self, commit=True):
user = super(UserCreationForm, self).save(commit=False)
user.email=(self.cleaned_data["email"])
if commit:
user.save()
return user
view.py
def signup(request):
if request.method=='POST':
form=ussignup(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/rgsuc')
args={}
args.update(csrf(request))
args['form']=ussignup()
return render_to_response('register.html',args)
urls.py
url(r'^accounts/signup',signup),
错误 输出显示电子邮件字段。但它既不验证必填字段,也不将电子邮件字段数据插入用户数据库表 我尝试了这个视频教程here
答案 0 :(得分:3)
在您看来,您正在做
form=signup(request.POST)
而应该是
form=ussignup(request.POST)
即使用表单类名来实例化表单。
此外,如果表单错误无效,则最好显示表单错误,您可以通过将代码更新为
来实现def signup(request):
if request.method=='POST':
form=ussignup(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/rgsuc')
else:
form=ussignup()
args={}
args.update(csrf(request))
args['form']=form
return render_to_response('register.html',args)