我在我的主页上有一个表单。我对此的看法如下所示:Django ModelForm验证没有提交
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>
对于您向我们显示的代码,这是不可能的。这真的是你使用的完整视图吗?也显示你的模板代码。 – 2010-08-20 08:07:33
编辑了我的原代码帖子 – JPC 2010-08-20 14:47:42