跳转到主要内容

为Django提供的简单电子邮件确认。

项目描述

https://img.shields.io/travis/mfogel/django-simple-email-confirmation/develop.svg https://img.shields.io/coveralls/mfogel/django-simple-email-confirmation/develop.svg https://img.shields.io/pypi/dm/django-simple-email-confirmation.svg

一个提供简单电子邮件确认的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

安装

  1. 使用 pypipip

    pip install django-simple-email-confirmation
  2. simple_email_confirmation 添加到您的 settings.INSTALLED_APPS

    INSTALLED_APPS = (
        ...
        'simple_email_confirmation',
        ...
    )
  3. 将提供的混入类添加到您的 django 1.5+ 自定义用户模型

    from django.contrib.auth.models import AbstractUser
    from simple_email_confirmation.models import SimpleEmailConfirmationUserMixin
    
    class User(SimpleEmailConfirmationUserMixin, AbstractUser):
        pass

    注意:您并不一定要执行此最终步骤。不执行此步骤,您将没有在 User 对象上的精美辅助函数和属性,但应用程序的其他部分应该可以正常工作。

  4. 更改默认设置(可选)

    默认情况下,密钥不会过期。如果您想使它们过期,请将 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_confirmedunconfirmed_email_createdprimary_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

运行测试

  1. 安装 toxcoverage

    pip install tox coverage
  2. 从存储库根目录运行

    tox
    tox -e coverage

    就这么简单。

发现了一个错误吗?

要提交错误或补丁,请前往 github 上的 django-simple-email-confirmation

鸣谢

最初改编自 Pinax 的 django-email-confirmation,该软件最初改编自 James Tauber 的 django-email-confirmation

项目详情


下载文件

下载您平台所需的文件。如果您不确定该选择哪一个,请了解更多关于 安装包 的信息。

源分布

django-simple-email-confirmation-0.71.tar.gz (11.5 kB 查看散列值)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面