【发布时间】:2021-04-16 20:37:10
【问题描述】:
我有一个选项允许用户更改其个人资料中的电子邮件但不确认新电子邮件,因此当他输入新电子邮件时我想激活电子邮件以将其保存在他的个人资料中,如何添加确认
- 我正在使用 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.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()
我的代码 |表格.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
urls.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>
当用户添加新电子邮件时,下一步是如何添加激活?
【问题讨论】:
标签: python django django-models django-forms