Python 当用户更改电子邮件时,是否有方法确认用户电子邮件-django
我有一个选项,允许用户在其个人资料中更改电子邮件,但不确认新电子邮件,因此当他输入新电子邮件时,我希望激活电子邮件以将其保存在其个人资料中,如何添加确认Python 当用户更改电子邮件时,是否有方法确认用户电子邮件-django,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,我有一个选项,允许用户在其个人资料中更改电子邮件,但不确认新电子邮件,因此当他输入新电子邮件时,我希望激活电子邮件以将其保存在其个人资料中,如何添加确认 我正在使用UserCreationForm models.py: from django.db import models from django.contrib.auth.models import User from django.db.models.signals import post_save from django.dispat
- 我正在使用UserCreationForm
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
email_confirmed = models.BooleanField(default=False)
@receiver(post_save, sender=User)
def update_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
instance.profile.save()
我的代码| forms.py:
# Profile Form
class EmailChangeForm(forms.ModelForm):
email = forms.EmailField(required=True,label='Email',widget=forms.EmailInput(attrs={'class': 'form-control center container','style': 'width:85%;text-align: center;background-color:#f6f6f6','placeholder':' Enter Your New E-mail '}) )
class Meta:
model = User
fields = [
'email',
]
def clean_email(self):
email = self.cleaned_data.get('email')
if email and User.objects.filter(email=email).count(): raise forms.ValidationError('Email is already in use, please check the email or use another email')
return email
views.py:
# Edit Profile View
class EmailChange(UpdateView):
model = User
form_class = EmailChangeForm
success_url = reverse_lazy('home')
template_name = 'user/commons/EmailChange.html'
def get_object(self, queryset=None):
return self.request.user
URL.py:
from django.urls import path
from blog_app.views import SignUpView, ProfileView, ActivateAccount,EmailChange
urlpatterns = [
path('profile/change-email/me/', EmailChange.as_view(), name='emailchange'),
]
html页面:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" class="fadeIn fourth" style="background-color:#7952b3" value=" change ">
</form>
{%csrf_令牌%}
{{form.as_p}}
当用户添加新电子邮件时,下一步是添加激活吗?以下是电子邮件激活的大致思路。首先,您需要设置邮件服务器/smtp服务器。然后在模型中添加一个新字段,用于更改电子邮件时生成的哈希。当用户更改其电子邮件时,显示持久消息以向其电子邮件帐户发送确认电子邮件,您可以使用django的消息框架来完成此操作。单击发送电子邮件后,您可以显示消息,让用户确认电子邮件并激活帐户。然后在views.py中创建一个函数和一个url路由,以验证散列并激活帐户。发送给用户的电子邮件中的url将包含您使用更改电子邮件时生成的哈希值创建的用于激活的路由。您可以使用现有的布尔字段检查电子邮件是否经过验证