Python| Django-allauth 设置和配置
用户注册是 Web 应用程序最重要的部分之一。 django-registration-redux
和django-alluth
是 Django 中最著名的注册应用程序。本教程系列涉及django-allauth
的设置、配置和自定义,并为希望快速开始使用allauth
并在此过程中轻松进行有用自定义的新用户提供指南。
本文介绍了设置和一些基本配置。稍后,我们将处理社交登录、扩展类和高效使用DefaultAccountAdapter
添加自定义流程。
对于django
新手或django-allauth
本身的新用户来说,它可能会让人不知所措。尽管它有很好的文档,但由于所涉及的开发人员的时间和资源限制,该库上的文章和深入的教程并不多。所以这个系列试图解决这个问题,并制作一个全面的系列指南,让django-allauth
易于使用,并在 django-community 中使用。
如何设置?
您可以下载本教程中使用的文件以抢占先机。以下步骤将指导您完成设置。
- 如果您还没有 Django 项目,请创建一个。
- 使用命令
pip install django-allauth
django-allauth
- 将
'allauth
,allauth.account'
,allauth.socialaccount
和所有必要的社交登录名添加到INSTALLED_APPS.
您可以在此处查看支持的 API 的完整列表。社交登录功能将在下一篇文章中详细介绍。配置您安装的应用程序后,应该与下面给出的类似。
INSTALLED_APPS = [
'django.contrib.admin',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.facebook',
'django.contrib.auth',
'django.contrib.sites',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
- 在
settings.py
中配置template
上下文处理器设置,并在项目 urls.py 中添加 URL 模式TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ os.path.normpath(os.path.join(BASE_DIR, 'templates')), ], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django.template.context_processors.request', ], }, }, ]
- 添加以下身份验证后端。
AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend', )
- 从 django-allauth 存储库或我的自定义存储库中复制模板文件(我已经进行了一些修改和一些良好的结构)并将其粘贴到项目目录的
templates
文件夹中。 - 在主项目目录的
urls.py
中添加 allauth url。添加 allauth url 后,如下所示,from django.contrib import admin from django.urls import path from django.conf.urls import url, include urlpatterns = [ path('admin/', admin.site.urls), url(r'^accounts/', include('allauth.urls')), ]
- 您还可以添加自己的自定义 CSS 或我在使用 allauth 模板期间创建的 CSS(经过充分评论和记录)。它包括几乎所有页面的样式,甚至包括用于确认和密码重置电子邮件的移动友好电子邮件模板。您可以通过在项目目录中创建一个
static
文件夹并将 CSS 放在account
文件夹中来做到这一点。 - 运行
python manage.py makemigrations
和python manage.py migrate
运行所有必要的迁移并运行python manage.py runserver
启动 django 服务器。 - 按照 URL 模式显示注册表单。
例如:localhost:8000/accounts/login
显示登录页面。
配置:
大多数 django-allauth 功能都可以使用内置的适配器和变量进行配置,方法是将它们放在settings.py.
文件。尽管文档中有大量这样的选项并有很好的解释,但在下面强调了一些重要的选项。- 电子邮件确认到期:设置帐户需要激活的天数。例如:
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS=7
- 激活所需的电子邮件:此选项允许您设置是否需要电子邮件地址进行注册。设置
False
以禁用电子邮件要求。例如:ACCOUNT_EMAIL_REQUIRED = True
- 账号邮箱验证:该选项可用于设置用户注册账号后是否需要邮箱验证。您可以使用“强制”来阻止用户登录,直到电子邮件得到验证。您可以设置发送电子邮件的
optional
,但允许用户在没有电子邮件的情况下登录。您还可以设置none
以不发送任何验证电子邮件。 (不推荐)例如:ACCOUNT_EMAIL_VERIFICATION = "mandatory"
- 登录尝试限制:这是一个重要功能,可用于防止对用户登录模块的暴力攻击。可以设置登录尝试的最大次数,并且用户在超时之前被阻止登录。此功能使用
ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT
设置。例如:ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5
- 登录尝试限制超时:此设置需要与
ACCOUNT_LOGIN_ATTEMPTS_LIMIT
设置一起使用。设置的值以最后一次不成功登录尝试的秒数为单位。请不要认为这不会阻止管理员登录被暴力破解。 eg:ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 86400 # 1 day in seconds
- 登录和注销 URL 重定向:当用户登录或注销时,您可能希望将用户重定向到特定的 URL 或页面,并且可以使用以下设置来设置这些值。默认情况下,allauth 将登录重定向到
/accounts/profile/
URL 并注销到localhost:8000
或任何localhost
主页。
例如:ACCOUNT_LOGOUT_REDIRECT_URL ='/accounts/login/'
例如:LOGIN_REDIRECT_URL = '/accounts/email/'
最后,您的
allauth
设置应类似于以下设置。#django-allauth registraion settings ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS =1 ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_EMAIL_VERIFICATION = "mandatory" ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5 # 1 day ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 86400 #or any other page ACCOUNT_LOGOUT_REDIRECT_URL ='/accounts/login/' # redirects to profile page if not configured. LOGIN_REDIRECT_URL = '/accounts/email/'
参考资料:
django-allauth 官方文档
我的自定义模板和 CSS - 您还可以添加自己的自定义 CSS 或我在使用 allauth 模板期间创建的 CSS(经过充分评论和记录)。它包括几乎所有页面的样式,甚至包括用于确认和密码重置电子邮件的移动友好电子邮件模板。您可以通过在项目目录中创建一个