我的主页上有一张表格。我对此的看法如下:
from djangoproject1.authentication import forms
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
def main(request):
uf = forms.UserForm()
upf = forms.UserProfileForm()
return render_to_response("authentication/index.html", {'form1': uf, 'form2':upf})
def register(request):
if request.method == 'POST':
uf = forms.UserForm(request.POST)
upf = forms.UserProfileForm(request.POST)
if uf.is_valid() and upf.is_valid():
user = uf.save(commit=False)
user.set_password(uf.cleaned_data["password"])
user.save()
userprofile = upf.save(commit=False)
userprofile.user = user
userprofile.save()
return HttpResponseRedirect("/register-success/")
return render_to_response("authentication/index.html", {'form1': uf,'form2':upf})
它使用这两部分制作一个表格。但是,当我启动浏览器时,所有错误消息都已出现。我认为这使他们不受约束,因此他们不会尝试并且因为我没有发布任何内容而得到验证。
这是表单代码:
from django import forms
from django.contrib.auth.models import User
from djangoproject1.authentication.models import UserProfile
class UserForm(forms.ModelForm):
cpassword = forms.PasswordInput()
def clean(self):
if self.cleaned_data['cpassword']!=self.cleaned_data['password']:
raise forms.ValidationError("Passwords don't match")
class Meta:
model = User
fields = ('username','email','password',)
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('phonenumber',)
这是html:
<h1>Register</h1>
<form action="/register/" method="post">
{{ form1.as_p }}
{{ form2.as_p }}
<input type="submit" value="Register">
</form>
答案 0 :(得分:0)
从您所描述的内容来看,似乎您使用无效的POST命中register
视图。但是,当你转到页面时,你说main
视图会发生这种情况吗?
未绑定表单不应存在任何表单错误(例如main
会返回),但在is_valid
中register
调用失败后,它们会显示在绑定表单上。
我可以看到的一件事是,clean
上的UserForm
方法不会return self.cleaned_data
。
如果您暂时更改其中一个模板的名称并确保获得您认为自己的视图,则可能会更容易排除故障。
答案 1 :(得分:0)
原来这不是错误,而是帮助文本。