用户注册是Web应用程序最重要的部分之一。django-registration-redux和django-alluth是Django中最著名的注册应用程序。本教程系列介绍如何设置, 配置和自定义django-allauth并为希望快速入门的新用户提供指南allauth并一路轻松进行有用的自定义。
本文介绍设置和一些基本配置。稍后, 我们将处理社交登录, 扩展类和有效使用DefaultAccountAdapter添加自定义过程。
它可能会压倒性的詹戈的新手或新用户django-allauth本身。尽管它有充分的文档, 但是由于所涉及的开发人员的时间和资源的限制, 关于该库的文章和深入的教程并不多。因此, 本系列旨在解决该问题, 并提供一系列综合指导django-allauthdjango社区易于使用和使用。
如何设置?
你可以下载本教程中使用的文件以获得一个良好的开端(https://github.com/gajeshbhat/django-experiments/tree/master/allauthdemo)。下面的步骤指导你完成设置。
- 如果你还没有一个Django项目, 请创建一个。
- 安装django-allauth使用命令点安装django-allauth
- 加'allauth, allauth.account', allauth.socialaccount以及所有必要的社交登录信息INSTALLED_APPS。你可以查看受支持的API的完整列表这里(http://django-allauth.readthedocs.io/en/latest/installation.html)。下一篇文章将详细描述社交登录功能。配置完后, 安装的应用程序应类似于以下内容。
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中配置模板上下文处理器设置, 并在项目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存储库或我的自定义存储库(https://github.com/gajeshbhat/django-experiments/tree/master/allauthdemo/templates)中复制模板文件(我进行了一些修改和良好的结构化), 并将其粘贴到项目目录中的templates文件夹中。
在你的主项目目录的urls.py中添加allauth URL。添加allauth网址后, 以下内容应如下所示:
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放入帐户夹。
- 运行python manage.py makemigrations和python manage.py迁移运行所有必要的迁移并运行python manage.py运行服务器启动django服务器。
- 按照URL模式显示注册表格。
例如:本地主机:8000 /帐户/登录显示登录页面。
配置:
大多数django-allauth特性都可以使用内置的适配器和变量进行配置,方法是将它们放在settings.py文件中。
虽然文档中有大量这样的选项(http://django-allauth.readthedocs.io/en/latest/configuration.html),并给出了很好的解释,但下面突出了一些重要的选项。
- 电子邮件确认有效期:设置应该激活帐户的天数。例如:ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 7
- 激活所需的电子邮件:此选项允许你设置是否需要注册电子邮件地址。组false禁用电子邮件要求。例如:ACCOUNT_EMAIL_REQUIRED =真
- 帐户电子邮件验证:此选项可用于设置用户在注册帐户后是否必须进行电子邮件验证才能登录。你可以使用"强制性"来阻止用户登录, 直到验证电子邮件为止。你可以设定可选的用于发送电子邮件, 但允许用户无需电子邮件即可登录。你也可以设定None不发送任何验证电子邮件。 (不推荐)例如:ACCOUNT_EMAIL_VERIFICATION ="强制性"
- 登录尝试限制:这是一项重要功能, 可用于防止对allauth中的用户登录模块进行暴力攻击。可以设置最大尝试登录次数, 并且阻止用户登录直到超时。此功能利用ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT设置。例如:ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5
- 登录尝试限制超时:此设置需要与ACCOUNT_LOGIN_ATTEMPTS_LIMIT设置。设置的值以秒为单位, 以秒为单位, 从上次尝试登录失败。请不要说这不会阻止管理员登录被强行使用。例如:ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 86400#1天(秒)
- 登录和注销URL重定向:当用户登录或注销时, 你可能希望将用户重定向到特定的URL或页面, 并且可以使用以下设置来设置这些值。默认情况下, allauth将登录重定向到/帐户/个人资料/URL并注销到本地主机:8000或任何本地主机主页。
例如:ACCOUNT_LOGOUT_REDIRECT_URL ='/帐户/登录/'
例如:LOGIN_REDIRECT_URL ='/帐户/电子邮件/'
最后, 你的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官方文档:http://django-allauth.readthedocs.io/en/latest/
我的自定义模板和CSS:https://github.com/gajeshbhat/django-experiments/tree/master/allauthdemo
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。