2010-08-19 48 views
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 

用户名,密码,电话号码。非常简单。但是,当我点击“注册”而没有填写任何内容时,我应该会遇到一堆错误,但它们不会出现在任何地方。这是应该自动发生还是我错过了什么?

谢谢!

回答

2

我认为你的问题是在你的其他你重置你的表单到一个新的,并没有验证新的表单。尝试从你的其他地方删除这行代码

rform = forms.RegisterForm() 
+0

是的,如果您删除该行,您将返回无效的窗体,其中将包含为空的字段的错误消息(s)。 – nstehr 2010-08-19 01:36:13

+0

那么回答你的问题呢? – 2010-08-19 01:59:49

+0

对不起,跑了一下。是的,这确实回答了我的问题,但是,我仍然遇到问题。我在“confirm_password”上得到了一个KeyError异常。我查找了KeyError,并且它说Raised“在现有密钥集中找不到映射(字典)键”。根据我对clean_data的理解,'confirm_password'应该在那里b/c这是一个字段,但我想它不是 – JPC 2010-08-19 04:59:43