2016-03-28 42 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 

通过这种方式,可以确保直到用户点击确认,你会被发送到用户的电子邮件地址联系新的电子邮件地址仍然无效。希望我回答你的问题。

相关问题