2013-11-25 3 views
8

장고에서 사용자 정의 사용자 등록 양식을 작성하려고하는데 다음과 같은 오류가 발생합니다. 내 페이지의 모든 내용이 올바르게 표시되지만 오류가 발생합니다.사용자 정의 사용자 등록 양식 작성 Django

오류 :

내 form.py
Exception Type: KeyError 
Exception Value: 'First name' 

: 여기

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

, 당신은 오히려 그것을 라벨을 사용하여 필드를 문제 액세스한다 양식 필드 이름으로 액세스해야합니다.

43,는

self.cleaned_data['first_name'] 
마찬가지로

last_namebirthday이어야한다.

+0

감사합니다! 문제가 해결되었습니다! – Liondancer

관련 문제