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有两种主要方法
通用邀请流程:
- 特权用户通过电子邮件(通过 Django 管理员、表单发布、JSON 发布或编程方式)邀请潜在用户
- 用户收到带有确认链接的邀请电子邮件
- 用户单击链接并被重定向到预配置的 URL(默认为 accounts/signup)
Allauth 邀请流程:
- 用户点击链接,他们的电子邮件被确认,他们被重定向到注册
- 注册 URL 已预填充电子邮件,用户在注册后将登录到站点
Allauth 集成
设置 allauth 设置ACCOUNT_ADAPTER
ACCOUNT_ADAPTER = 'invitations.models.InvitationsAdapter'
发送邀请
首先导入模型:
from invitations.utils import get_invitation_model
创建模型的实例:
Invitation = get_invitation_model()
最后将收件人传递给模型并发送。
# inviter argument is optional
invite = 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