Django用户邀请定制库django-invitations

django-invitations是通用邀请解决方案,具有适应性强的后端和对 django-allauth 的支持,所有电子邮件和消息都是完全可定制的。

这个应用最初是作为django-allauth的邀请解决方案编写的,现在已经重构已删除allauth依赖项,同时保持100%的向后兼容性。

安装要求

  • 支持 Python 3.7 到 3.10
  • 支持 Django 3.2 到 4.0

安装

python -m pip install django-invitations

在INSTALLED_APPS添加“invitations”

INSTALLED_APPS = [    ...    "invitations",    ...]

Allauth 支持

INSTALLED_APPS中的invitations必须在allauth之后。

将邀请 url 添加到您的 urlpatterns

INSTALLED_APPS = [    ...    "invitations",    ...]

运行迁移

python manage.py migrate

使用django-invitations有两种主要方法

通用邀请流程:

  1. 特权用户通过电子邮件(通过 Django 管理员、表单发布、JSON 发布或编程方式)邀请潜在用户
  2. 用户收到带有确认链接的邀请电子邮件
  3. 用户单击链接并被重定向到预配置的 URL(默认为 accounts/signup)

Allauth 邀请流程:

  1. 用户点击链接,他们的电子邮件被确认,他们被重定向到注册
  2. 注册 URL 已预填充电子邮件,用户在注册后将登录到站点

Allauth 集成

设置 allauth 设置ACCOUNT_ADAPTER

ACCOUNT_ADAPTER = 'invitations.models.InvitationsAdapter'

发送邀请

首先导入模型:

from invitations.utils import get_invitation_model

创建模型的实例:

Invitation = get_invitation_model()

最后将收件人传递给模型并发送。

# inviter argument is optionalinvite = Invitation.create('email@example.com', inviter=request.user)invite.send_invitation(request)

要通过 django 管理员发送邀请,只需添加邀请并保存即可。

批量邀请

支持通过 JSON 进行批量邀请。将逗号分隔的电子邮件列表发布到专用 URL,Invitations将返回一个包含有效和无效邀请列表的数据对象。

信号

发出以下信号:

  • invite_url_sent
  • invite_accepted

管理命令

可以使用命令清除已过期和已接受的邀请:

python manage.py clear_expired_invitations

配置

邀请到期前多少天

设置名称:INVITATIONS_INVITATION_EXPIRY

类型:整数

默认值:3

是否可以通过 GET 请求接受确认

设置名称:INVITATIONS_CONFIRM_INVITE_ON_GET

类型:Boolean

默认值:True

是否在用户完成注册后接受邀请

设置名称:INVITATIONS_ACCEPT_INVITE_AFTER_SIGNUP

类型:Boolean

默认值:False

公开用于对受邀者进行身份验证的发布的 URL

设置名称:INVITATIONS_ALLOW_JSON_INVITES

类型:Boolean

默认值:False

注册 URL 的 URL 名称

设置名称:INVITATIONS_SIGNUP_REDIRECT

类型:字符串

默认值:“account_signup”

登录URL的URL名称

设置名称:INVITATIONS_LOGIN_REDIRECT

类型:字符串

默认值:来自 Django 设置LOGIN_URL

适配器

设置名称:INVITATIONS_ADAPTER

类型:字符串

默认值:“invitations.adapters.BaseInvitationsAdapter”

用于自定义集成。如果使用 django-allauth,请将其设置为 ACCOUNT_ADAPTER。

设置自定义电子邮件最大长度值

设置名称:INVITATIONS_EMAIL_MAX_LENGTH

类型:整数

默认值:254

自定义电子邮件主题前缀

设置名称:INVITATIONS_EMAIL_SUBJECT_PREFIX

类型:字符串或无

默认值:无

如果设置为“无”(默认值),邀请电子邮件主题将以括号中的当前网站名称为前缀(例如 [example.com])。对于自定义电子邮件主题前缀,请将其设置为字符串,对于无前缀,请将其设置为空字符串。

邀请模型的应用注册表路径

设置名称:INVITATIONS_INVITATION_MODEL

类型:字符串

违约:invitations.Invitation

管理员外部发送邀请的表单类

设置名称:INVITATIONS_INVITE_FORM

类型:字符串

违约:invitations.forms.InviteForm

admin中发送邀请的表单类

设置名称:INVITATIONS_ADMIN_ADD_FORM

类型:字符串

违约:invitations.forms.InvitationAdminAddForm

admin 中更新邀请的表单类

设置名称:INVITATIONS_ADMIN_CHANGE_FORM

类型:字符串

违约:invitations.forms.InvitationAdminChangeForm

邀请确认 URL

设置名称:INVITATIONS_CONFIRMATION_URL_NAME

类型:字符串

默认值:“invitations:accept-invite”

Allauth 相关设置

设置名称:INVITATIONS_INVITATION_ONLY

类型:Boolean

默认值:False

如果网站仅受邀或向所有人开放(仅在使用 allauth 时相关)

项目github:https://github.com/jazzband/django-invitations
THE END