Django更新用户电子邮件地址

时间:2016-03-28 07:36:10

标签: django django-models django-views

我想让我的用户更改他们的电子邮件。有插件可以让我这样做吗?我试过" django-change-email 0.1.2",但它看起来不起作用。我修复了一些过时的错误,并要求在此之后更新数据库。我这样做了,但数据库似乎没有显示任何新表来更改电子邮件。

基本上,我希望用户自己更新自己的电子邮件地址。然后,服务器将发送包含唯一哈希的确认电子邮件。单击此按钮将验证更改并保存电子邮件。这可能与其他插件有关吗?谢谢!

1 个答案:

答案 0 :(得分:1)

允许用户更改其电子邮件地址的最佳方法是创建单独的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

这样,您可以确保新用户的电子邮件地址保持不活动状态,直到用户点击了您要发送给用户的验证电子邮件地址链接。希望我回答你的问题。