2013-11-25 15 views
8

Tôi đang cố gắng tạo biểu mẫu đăng ký người dùng tùy chỉnh ở Django nhưng tôi nhận được lỗi sau. Tất cả mọi thứ trên trang của tôi hiển thị chính xác tuy nhiên tôi nhận được lỗi.Tạo biểu mẫu đăng ký người dùng tùy chỉnh Django

Lỗi:

Exception Type: KeyError 
Exception Value: 'First name' 

form.py của tôi:

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 My

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

trước khi lưu người dùng, bạn có thể kiểm tra xem người dùng có email đã tồn tại chưa. Bởi vì cuối cùng bạn sẽ có cùng một người dùng với cùng một email nhiều lần –

Trả lời

9

Dưới đây là vấn đề, bạn đang truy cập vào các lĩnh vực bằng cách sử dụng nhãn chứ không phải nó nên được truy cập theo tên trường biểu mẫu:

self.cleaned_data['First name'] 

nên

self.cleaned_data['first_name'] 

Tương tự last_namebirthday.

+0

cảm ơn bạn! đã khắc phục được sự cố! – Liondancer

Các vấn đề liên quan