2010-08-19 40 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