2016-03-28 17 views
1

私はユーザーに電子メールの変更を許可したいと思います。私にこれをさせるためのプラグインはありますか?私は "django-change-email 0.1.2"を試みましたが、動作するようには見えません。私は時代遅れのエラーを修正し、それ以降データベースを更新するように頼んだ。私はそうしましたが、データベースは電子メールを変更するための新しいテーブルを表示していませんでした。Djangoはユーザーの電子メールアドレスを更新します

基本的には、ユーザーが自分のメールアドレスを更新することをおすすめします。サーバーは、一意のハッシュを含む確認メールを送信します。これをクリックすると、変更を検証して電子メールを保存します。これは他のプラグインでも可能ですか?ありがとうございました!

答えて

0

ユーザーが電子メールアドレスを変更できるようにする最善の方法は、電子メールアドレスを格納するために使用できる個別のUserProfileモデルを作成することです。コードの例を以下に示します。

class UserProfileForm(ModelForm): 
def __init__(self, *args, **kwargs): 
    super(UserProfileForm, self).__init__(*args, **kwargs) 
    try: 
     self.fields['email'].initial = self.instance.user.email 
    except User.DoesNotExist: 
     pass 

email = forms.EmailField(label="Primary email") 

class Meta: 
    model = Parent 

def save(self, *args, **kwargs): 
    """ 
    Update the primary email address on the related User object as well. 
    """ 
    u = self.instance.user 
    u.email = self.cleaned_data['email'] 
    u.save() 
    profile = super(UserProfileForm, self).save(*args,**kwargs) 
    return profile 

この方法では、ユーザーがユーザーに送信されます確認し、メールアドレスのリンクをクリックしたまで、新しいメールアドレスが非アクティブのままであることを保証することができます。私はあなたの質問に答えました。

関連する問題