2013-11-25 83 views
8

我想在Django中創建自定義用戶註冊表單,但出現以下錯誤。我的頁面上的所有內容都能正確顯示,但是我收到錯創建自定義用戶註冊表單Django

錯誤:

Exception Type: KeyError 
Exception Value: 'First name' 

我form.py:

from django import forms    
from django.contrib.auth.models import User # fill in custom user info then save it 
from django.contrib.auth.forms import UserCreationForm  

class MyRegistrationForm(UserCreationForm): 
    email = forms.EmailField(required = True) 
    first_name = forms.CharField(required = False) 
    last_name = forms.CharField(required = False) 
    birtday = forms.DateField(required = False) 



    class Meta: 
     model = User 
     fields = ('username', 'email', 'password1', 'password2')   

    def save(self,commit = True): 
     user = super(MyRegistrationForm, self).save(commit = False) 
     user.email = self.cleaned_data['email'] 
     user.first_name = self.cleaned_data['First name'] 
     user.last_name = self.cleaned_data['Last name'] 
     user.birthday = self.cleaned_data['Birthday'] 


     if commit: 
      user.save() 

     return user 

我views.py

from django.shortcuts import render 
from django.http import HttpResponseRedirect  
from django.contrib import auth     
from django.core.context_processors import csrf 
from forms import MyRegistrationForm 

def register_user(request): 
    if request.method == 'POST': 
     form = MyRegistrationForm(request.POST)  # create form object 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/accounts/register_success') 
    args = {} 
    args.update(csrf(request)) 
    args['form'] = MyRegistrationForm() 
    print args 
    return render(request, 'register.html', args) 
+0

保存用戶之前,您可以檢查用戶是否已經存在電子郵件。因爲最後你會有多次使用同一封電子郵件的同一用戶 –

回答

9

這裏的問題是,你正在使用的標籤,而它訪問字段應通過表格字段名稱訪問:

self.cleaned_data['First name'] 

應該是

self.cleaned_data['first_name'] 

同樣last_namebirthday

+0

謝謝!解決了問題! – Liondancer