2013-08-19 4 views
0

Я пытаюсь создать простую форму, чтобы добавить пользователей. Im использует встроенную форму генератора UserCreationForm(). Я нашел пример кода here, который я использовал.Django keyerror из встроенной формы

вот мое мнение:

def user_add(request): 
    if request.method == "POST": 
     form = UserCreationForm(request.POST) 
     if form.is_valid(): 
      new_user = User.objects.create_user(**form.cleaned_data) 
      login(new_user) 
      return HttpResponseRedirect('main.html') 
    else: 
     form = UserCreationForm() 

    return render(request, 'main/user_add_djDefault.html', {'form': form.as_p()}) 

форма genereated правильно, но когда я ввожу данные и представить его тогда:

Exception Type: TypeError 
Exception Value: 'password1' is an invalid keyword argument for this function 

ошибка происходит здесь:

new_user = User.objects.create_user(form.cleaned_data) 

Поскольку создание и проверка формы основаны на той же модели, мне интересно, откуда эта ошибка возникает ...

ответ

1

Вы получаете ошибку, потому что create_user ожидает параметр, называемый password и НЕpassword1, который используется в UserCreationForm.

Обратите внимание на подпись для create_user:

create_user(self, username, email=None, password=None, **extra_fields) 

Вы можете попробовать вызвать метод как это:

cd = form.cleaned_data 
User.objects.create_user(
    username=cd.get('username'), 
    password=cd.get('password1'), 
) 
+1

Спасибо Дерек. Я думал, что все будет (волшебным образом) сочетаться :), но эти несколько дополнительных шагов не проблема в любом случае ... – 32smooth