Python Django-allauth设置和配置

Python Django-allauth设置和配置

django-registration-redux和django-alluth是Django中最著名的注册应用。本系列教程涉及django-allauth的设置、配置和定制,并作为新用户的指南,帮助他们快速开始使用allauth,并在使用过程中进行有用的定制,而不会有太多痛苦。

这篇文章涵盖了设置和一些基本配置。稍后,我们将处理社会化登录、扩展类和有效使用DefaultAccountAdapter来添加自定义流程。

对于一个django新手或者django-allauth本身的新用户来说,它可能会让人不知所措。虽然它有很好的文档,但由于相关开发者的时间和资源限制,关于这个库的文章和深度教程并不多。所以这个系列试图解决这个问题,做一个全面的系列指南,让django-allauth对django-community来说易于使用和工作。

如何设置?
你可以下载本教程中使用的文件,以获得一个开始。下面的步骤指导你完成设置。

  • 如果你还没有一个Django项目,请创建一个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中配置模板上下文处理器设置,同时在项目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资源库或我的自定义资源库中复制模板文件(我做了一些修改和一些很好的结构设计),并将其粘贴到你的项目目录下的模板文件夹。
  • 在你的主项目目录的urls.py中添加allauth urls。添加完allauth urls后,下面应该是这样的。
    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(有很好的评论和记录)。它包括几乎所有页面的样式,甚至包括确认和密码重置邮件的移动友好的电子邮件模板。你可以通过在项目目录中创建一个静态文件夹,并将CSS放在账户文件夹中来实现。
  • 运行python manage.py makemigrations和python manage.py migrate来运行所有必要的迁移,运行python manage.py runserver来启动django服务器。
  • 遵循URL模式,显示注册表。
    例如:localhost:8000/accounts/login来显示登录页面。

配置:
大多数django-allauth的功能都可以通过内置的适配器和变量在settings.py.文件中进行配置。虽然文档中有大量这样的选项,并有很好的解释,但下面强调了一些重要的选项。

  • 电子邮件确认过期。设置一个账户需要激活的天数。Eg: ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS=7
  • 激活时需要电子邮件。这个选项允许你设置注册时是否需要电子邮件地址。设置为 “False “则禁用电子邮件要求。Eg: ACCOUNT_EMAIL_REQUIRED = True
  • 帐户电子邮件验证。这个选项可以用来设置用户注册账户后,是否需要进行电子邮件验证才能登录。你可以使用 “强制 “来阻止用户登录,直到电子邮件得到验证。你可以设置 “可选 “来发送电子邮件,但允许用户在没有电子邮件的情况下登录。你也可以设置无,不发送任何验证邮件。(不推荐) Eg: ACCOUNT_EMAIL_VERIFICATION = “mandatory”
  • 登录尝试限制:这是一个重要的功能,可以用来防止对allauth中的用户登录模块的暴力攻击。可以设置最大的登录尝试次数,用户会被阻止登录,直到超时。这个功能利用了ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT设置。Eg: ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5
  • 登录尝试限制超时。这个设置需要与ACCOUNT_LOGIN_ATTEMPTS_LIMIT设置一起使用。设置的值是在最后一次不成功的登录尝试后的秒数。请注意,这并不能防止管理员登录时被暴力攻击。例如:ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 86400 # 1天(秒)。
  • 登录和注销的URL重定向。当用户登录或注销时,你可能想把用户重定向到一个特定的URL或页面,下面的设置可以用来设置这些值。默认情况下,Allauth将登录重定向到/accounts/profile/ URL,注销重定向到localhost:8000或任何localhost主页。
    Eg : ACCOUNT_LOGOUT_REDIRECT_URL =’/accounts/login/’
    Eg : 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/'

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Django 教程