저는 최근에 같은 문제에 직면했습니다. 그리고 나는 그저 다른 플러그인/플러그인을 가지고 있다는 생각을 좋아하지 않았다.
이
signals.py :
from django.contrib.sites.models import Site, RequestSite from django.contrib.auth.models import User from django.db.models.signals import post_save, pre_save from django.dispatch import receiver from registration.models import RegistrationProfile # Check if email change @receiver(pre_save,sender=User) def pre_check_email(sender, instance, **kw): if instance.id: _old_email = instance._old_email = sender.objects.get(id=instance.id).email if _old_email != instance.email: instance.is_active = False @receiver(post_save,sender=User) def post_check_email(sender, instance, created, **kw): if not created: _old_email = getattr(instance, '_old_email', None) if instance.email != _old_email: # remove registration profile try: old_profile = RegistrationProfile.objects.get(user=instance) old_profile.delete() except: pass # create registration profile new_profile = RegistrationProfile.objects.create_profile(instance) # send activation email if Site._meta.installed: site = Site.objects.get_current() else: site = RequestSite(request) new_profile.send_activation_email(site)
는 그래서
User
의 이메일 때마다
당신은 User
에 모델의 싱글 (pre_save
, post_save
) 및 RegistrationProfile
사용을 듣고, 그렇게함으로써 달성 할 수있다 변경되면 사용자가 비활성화되고 활성화 이메일이 사용자에게 전송됩니다.
시험해보십시오. http://stackoverflow.com/questions/2296846/django-apps-for-changing-user-email-with-verification – CppLearner
그 중 어느 것도 작동하지 않는다면, 함께 작업 할 두 개의 앱을 조정하는 데 소비하는 시간이 해시 인증 코드에서 읽는 작은보기를 작성하고 사용자 모델 클래스에 "확인 중"이라는 상태 필드를 추가합니다. 확인이 끝날 때까지 사용자는 잠겨 있습니다. – CppLearner