Невозможно изменить данные учетной записи и не отправляется электронная почта после редактирования - Django
Итак... Мой основной замысел состоит в том, что когда пользователь редактирует свой аккаунт и меняет email, система должна изменить всю остальную информацию, кроме email, и отправить письмо на новый email (введенный пользователем) со ссылкой подтверждения. После нажатия на ссылку система должна перенаправить пользователя на другую страницу и изменить электронную почту для этой учетной записи. Мой код изменял всю информацию (без отправки электронной почты) до того, как я добавил все эти штучки с электронной почтой. После того, как я его добавил, он не изменяет другие данные учетной записи и не отправляет письмо с подтверждением.
view (я знаю, что есть неполный код, который мне нужно добавить):
class NormalUserEditView(generic.UpdateView):
form_class = EditProfileFormNormal
template_name = 'authentication/edit_normalprofile.html'
success_url = reverse_lazy('profile')
def form_valid(self, form):
me = self.request.user.id
myuser = User.objects.get(email=self.request.POST['email'])
if myuser.email != myuser.email:
current_site = get_current_site(self.request)
email_subject = "Email has been changed for", myuser, " - some website"
email_message = render_to_string('authentication/email_confirmation.html', {
'name': myuser.first_name,
'domain': current_site.domain,
'uid': urlsafe_base64_encode(force_bytes(myuser.pk)),
'token': generate_token.make_token(myuser),
})
email = EmailMessage(
email_subject,
email_message,
settings.EMAIL_HOST_USER,
[myuser.email],
)
email.fail_silently=True
email.send()
messages.success(self.request, f'Account Edit: Successful')
return super().form_valid(form)
def get_object(self):
return self.request.user