为Django提供的简单电子邮件确认。
项目描述
一个提供简单电子邮件确认的Django应用程序。
此应用程序可用于支持三种不同的组织用户电子邮件地址(es)的方式。每个电子邮件地址都可以处于已确认/未确认状态。
用户有一个存储在User上的电子邮件地址
用户在User模型上存储一个主要电子邮件地址,并在EmailAddress对象中存储N个次要电子邮件地址
用户在EmailAddress对象中存储N个电子邮件地址。
示例
创建新用户,确认其电子邮件
from django.core.mail import send_mail
# ...
email = 'original@here.com'
user = User.objects.create_user(email, email=email)
user.is_confirmed # False
send_mail(email, 'Use %s to confirm your email' % user.confirmation_key)
# User gets email, passes the confirmation_key back to your server
user.confirm_email(user.confirmation_key)
user.is_confirmed # True
为现有用户添加另一个电子邮件地址,确认它,然后将其设置为他们的主要地址。
new_email = 'newaddr@nowhere.com'
confirmation_key = user.add_unconfirmed_email(new_email)
new_email in user.unconfirmed_emails # True
send_mail(new_email, 'Use %s to confirm your new email' % confirmation_key)
# User gets email, passes the confirmation_key back to your server
user.confirm_email(confirmation_key)
new_email in user.confirmed_emails # True
user.set_primary_email(new_email)
user.email # newaddr@nowhere.com
安装
-
pip install django-simple-email-confirmation
将 simple_email_confirmation 添加到您的 settings.INSTALLED_APPS
INSTALLED_APPS = ( ... 'simple_email_confirmation', ... )
将提供的混入类添加到您的 django 1.5+ 自定义用户模型
from django.contrib.auth.models import AbstractUser from simple_email_confirmation.models import SimpleEmailConfirmationUserMixin class User(SimpleEmailConfirmationUserMixin, AbstractUser): pass
注意:您并不一定要执行此最终步骤。不执行此步骤,您将没有在 User 对象上的精美辅助函数和属性,但应用程序的其他部分应该可以正常工作。
更改默认设置(可选)
默认情况下,密钥不会过期。如果您想使它们过期,请将 settings.SIMPLE_EMAIL_CONFIRMATION_PERIOD 设置为 timedelta。
from datetime import timedelta EMAIL_CONFIRMATION_PERIOD_DAYS = 7 SIMPLE_EMAIL_CONFIRMATION_PERIOD = timedelta(days=EMAIL_CONFIRMATION_PERIOD_DAYS)
默认情况下,自动为新用户添加未确认的 EmailAddress 对象。如果您想更改此行为,请将 settings.SIMPLE_EMAIL_CONFIRMATION_AUTO_ADD 设置为 False。
SIMPLE_EMAIL_CONFIRMATION_AUTO_ADD = False
默认情况下,密钥长度为 12。如果您想更改它,请将 settings.SIMPLE_EMAIL_CONFIRMATION_KEY_LENGTH 设置为整数值(最大 40)。
SIMPLE_EMAIL_CONFIRMATION_KEY_LENGTH = 16
您可以使用与 Django 自定义用户模型类似的方式覆盖此应用程序提供的 EmailAddress 模型。这允许您向 EmailAddress 模型添加字段,例如 uuid,或完全定义自己的模型。要设置自定义电子邮件地址模型,请将 settings.SIMPLE_EMAIL_CONFIRMATION_EMAIL_ADDRESS_MODEL 设置为您希望使用的模型,格式为 <app_label>.<model_name>。
simple email confirmation 包含一个管理界面。虽然它是为与提供的 EmailAddress 一起使用而设计的,但使用自定义模型时无法保证管理功能,因此建议您提供自己的管理定义。
现有应用程序的说明
与 Django 的自定义用户模型类似,在默认模型已迁移后迁移自定义电子邮件地址模型不受支持,可能会产生不可预见的影响。建议从一开始就使用自定义模型。
SIMPLE_EMAIL_CONFIRMATION_EMAIL_ADDRESS_MODEL = 'yourapp.EmailAddress'
迁移
0.23 到 1.0
1.0 版本中包含了一些与向后不兼容的更改。
信号参数已重构。现在,email_confirmed、unconfirmed_email_created 和 primary_email_changed 信号将用户类作为 sender 参数发送,并将用户实例作为额外的 user 参数包括在内。您可以按如下方式更新您的代码
@receiver(email_confirmed) def listener(sender, user, email, **kwargs): pass @receiver(unconfirmed_email_created) def listener(sender, user, email, **kwargs): pass @receiver(primary_email_changed) def listener(sender, user, old_email, new_email, **kwargs): pass
Python/Django 支持的版本
Python:2.7、3.4、3.5 和 3.6
Django:1.8 到 2.0
运行测试
发现了一个错误吗?
要提交错误或补丁,请前往 github 上的 django-simple-email-confirmation。
鸣谢
最初改编自 Pinax 的 django-email-confirmation,该软件最初改编自 James Tauber 的 django-email-confirmation。
项目详情
django-simple-email-confirmation-0.71.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 654fc963956639265ed12fe1cc89a2b7392b7c25c8af0fa2be33c43dde2ad691 |
|
MD5 | b55407aaf81371748fc3d5af33c4d31b |
|
BLAKE2b-256 | 0ef9251bc1c25016d6e4cee85278c2a7cd7a1aa873439844d9fbcbc477bf1867 |