0

私の Django アプリケーションでは、ユーザーが電子メール アドレスを変更できるようにしたいと考えています。人々をdjango-profilesに向けるStackOverflowの解決策を見てきました。残念ながら、ユーザーの電子メールを変更するという小さな偉業を達成するために、本格的なプロファイル モジュールを使用したくありません。これがどこかに実装されているのを見た人はいますか。このシナリオでは、確認メールを送信してメール アドレスを確認する手順が必要です。

私はかなりの時間を費やして、機能する解決策を見つけようとしましたが、役に立ちませんでした。

乾杯。

4

3 に答える 3

2

電子メール アドレスはユーザー モデルに属しているため、プロファイルを使用してユーザーが電子メールを更新できるようにする必要はありません。フィールドとして電子メールのみを持つユーザー モデルからモデル フォームを作成し、そのフォームをビューに提供して処理します。何かのようなもの:

class UserInfoForm(forms.ModelForm):
    email = forms.EmailField(required=True)
    class Meta:
        model = User
        fields = ('email',)

def my_view(request):
    if request.POST:
        user_form = UserInfoForm(request.POST, instance=request.user)
        if user_form.is_valid():
            user_form.save()
            return HttpResponseRedirect(reverse('form_success_screen'))
    else:
        user_form = UserInfoForm()
    return render_to_response('my-template.html', {'user_form': user_form}, context_instance=RequestContext(request))

フォームが成功した場合、HttpResponseRedirect を返して、ユーザーを別のページに送ることに注意してください。この場合、urls ファイルから名前付きの URL を検索しています。

于 2010-04-17T12:06:21.790 に答える
1

誰かが自分で書いたようです。ユーザーがメールアドレスを変更し、確認メールを送信できるようにします。

ジャンゴメール変更

于 2010-04-18T12:33:28.843 に答える
0

これが Django 1.4 の新しい要件であるかどうかはよくわかりませんが、Tom の提案を試してみました。

class UserInfoForm(forms.ModelForm):
    email = forms.EmailField(required=True)
    class Meta:
        model = User
        fields = ('email')

フィールドエラーが発生しました。各フィールドの後にコンマを付ける必要があります(またはそれが私のエラーを解決したものです):

fields = ('email',) 

問題を修正しました

于 2012-05-17T05:34:28.380 に答える