0

現在のユーザーのデータを変更しようとしていますが、成功していません。助けが必要です。

def account_admin(request):
    if request.method == 'POST':
        mod_form = ModificationForm(request.POST)
        if mod_form.is_valid():
            user = User.objects.get(request.user)
            user.set_password(form.cleaned_data['password1'])
            user.email = form.cleaned_data['email']
            user.save
            return HttpResponseRedirect('/register/success/')
    else:
        mod_form = ModificationForm()

    variables = RequestContext(request, {
        'mod_form': mod_form
    })
    return render_to_response('registration/account.html', variables)
4

4 に答える 4

2

request.user既に User のインスタンスになっているため、別のクエリを実行しても意味がありません。

さらに、実際に呼び出す 必要がありますsave()

于 2013-07-31T19:44:38.037 に答える
1

あなたの問題はここにあります:

user = User.objects.get(request.user)

理想的には、

user = User.objects.get(id=request.user.id)

request.userログインしたユーザー オブジェクトのインスタンスとして評価されるため、ここでユーザー オブジェクトを取得するためのクエリは必要ありません。

user = request.user
user.set_password(form.cleaned_data['password1'])
user.email = form.cleaned_data['email']
user.save()

動作するはずです

また、メソッドに@login_requiredデコレータがあることを確認してくださいaccount_admin

于 2013-07-31T19:35:49.570 に答える
0

karthikr と Daniel に感謝します。これがどのように機能するようになったかです:

def account_admin(request):
if request.method == 'POST':
    mod_form = ModificationForm(request.POST)
    if mod_form.is_valid():
        user = User.objects.get(id=request.user.id)
        user.set_password(mod_form.cleaned_data['password1'])
        user.email = mod_form.cleaned_data['email']
        user.save()
        return HttpResponseRedirect('/register/success/')
else:
    mod_form = ModificationForm()

variables = RequestContext(request, {
    'mod_form': mod_form
})
return render_to_response('registration/account.html', variables)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

karthikr、私はまだdjangoを学んでいます。デコレーター@login_requiredのあなたの提案がわかりません。それは何をするためのものか?

于 2013-08-01T09:29:37.083 に答える