1
我正在为用户注册表单。这里是我的模板看起来像什么:Django表单类问题
<h1>Register</h1>
<form action="/register/" method="post">
{{ form.as_p }}
<input type="submit" value="Register">
</form>
这是我的观点:
from djangoproject1.authentication import forms
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
def main(request):
rform = forms.RegisterForm()
return render_to_response("authentication/index.html", {'form': rform})
def register(request):
if request.method == 'POST':
rform = forms.RegisterForm(request.POST)
if rform.is_valid():
print 'VALID!'
# do something
return HttpResponseRedirect("/register-success/")
else:
print 'INVALID!'
rform = forms.RegisterForm()
return render_to_response("authentication/index.html", {'form': rform})
我还没有得到以有效的部分呢,我还在上无效部分的工作。以下是我的表单的样子:
from django import forms
class RegisterForm(forms.Form):
username = forms.CharField(min_length=6,max_length=15)
password = forms.CharField(widget = forms.PasswordInput(),min_length=6,max_length=15)
confirm_password = forms.CharField(widget = forms.PasswordInput(),min_length=6,max_length=15)
phone_number = forms.RegexField('\d\d\d-\d\d\d-\d\d\d\d',error_message='Invalid format')
def clean_password(self):
password = self.cleaned_data['password']
confirm_password = self.cleaned_data['confirm_password']
if password != confirm_password:
raise forms.ValidationError("Passwords don't match")
return password
用户名,密码,电话号码。非常简单。但是,当我点击“注册”而没有填写任何内容时,我应该会遇到一堆错误,但它们不会出现在任何地方。这是应该自动发生还是我错过了什么?
谢谢!
是的,如果您删除该行,您将返回无效的窗体,其中将包含为空的字段的错误消息(s)。 – nstehr 2010-08-19 01:36:13
那么回答你的问题呢? – 2010-08-19 01:59:49
对不起,跑了一下。是的,这确实回答了我的问题,但是,我仍然遇到问题。我在“confirm_password”上得到了一个KeyError异常。我查找了KeyError,并且它说Raised“在现有密钥集中找不到映射(字典)键”。根据我对clean_data的理解,'confirm_password'应该在那里b/c这是一个字段,但我想它不是 – JPC 2010-08-19 04:59:43