0

ユーザーを追加するために簡単なフォームを作成しようとしています。組み込みのフォーム生成 UserCreationForm() を使用しています。ここで使用したサンプルコードを見つけました。

ここに私の見解があります:

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()})

フォームは正しく生成されますが、データを入力して送信すると、次のようになります。

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

ここでエラーが発生します:

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

フォームの作成と検証は同じモデルに基づいているため、このエラーはどこから来るのだろうか...

4

1 に答える 1

1

で使用されているand NOTcreate_userというパラメーターが必要なため、エラーが発生しています。password password1UserCreationForm

の署名に注目してください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'),
)
于 2013-08-19T12:02:24.233 に答える