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

Таким образом, вы можете быть уверены, что новый адрес электронной почты остается неактивным до тех пор, пока пользователь не нажал на проверить адреса электронной почты ссылку, которая вам будет посылать пользователю. Надеюсь, я ответил на ваш вопрос.

Смежные вопросы