📜  Python | Django-allauth设置和配置

📅  最后修改于: 2020-05-09 04:38:55             🧑  作者: Mango

用户注册是Web应用程序最重要的部分之一。 django-registration-reduxdjango-alluth是Django中最著名的注册应用程序。 本教程系列涉及django-allauth设置,配置和自定义,并为新用户提供指南,这些新用户希望快速开始使用allauth并在此过程中轻松进行有用的自定义。
本文介绍设置和一些基本配置。 稍后,我们将处理社交登录,扩展类和有效使用DefaultAccountAdapter添加自定义过程。
djnago-allauth新手或djnago-allauth本身的新用户可能会不知所措。 尽管它有充分的文档,但是由于所涉及的开发人员的时间和资源的限制,关于该库的文章和深入的教程并不多。 因此,本系列文章试图解决该问题,并提供了一系列综合指南,以使django-allauth易于使用并与django社区一起使用。

如何设置?
您可以下载本教程中使用的文件以快速入门。 以下步骤指导您完成设置。

        • 如果您还没有一个Django项目,请创建一个。
        • 使用命令pip install 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文件,并将其粘贴到项目目录中的templates文件夹中。
    • 在您的主项目目录的urls.py中添加allauth URL。 添加allauth网址后,以下内容应如下所示: 
        from django.contrib import admin
        from django.urls import path
        from django.conf.urls import url, include< / code>< / pre>
        
      urlpatterns = [
            path( 'admin/' , admin.site.urls),
            url(r '^accounts/' 'allauth.urls' )),
       ]

       

    • 您还可以自己添加自定义CSS,也可以添加我在使用allauth模板期间创建的CSS(注释并记录在案)。 它包括几乎所有页面的样式,甚至包括用于确认和密码重置电子邮件的移动友好电子邮件模板。 为此,您可以在项目目录中创建一个static文件夹,然后将CSS放在account文件夹中。
    • 运行Python manage.py makemigrationsPython manage.py migrate ,migration运行所有必需的迁移,并运行Python manage.py runserver启动django服务器。
    • 按照URL模式显示注册表格。
      例如: localhost:8000/accounts/login以显示登录页面。

    组态:
    多数django-allauth功能可以通过将内置适配器和变量放在settings.py.中进行settings.py. 文件。 尽管文档中有大量此类选项并提供了很好的解释,但在下面重点介绍了一些重要选项。

        • 电子邮件确认有效期:设置应该激活帐户的天数。 例如: ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS=7
        • 激活所需的电子邮件:此选项允许您设置是否需要注册电子邮件地址。 设置为False可禁用电子邮件。 例如: ACCOUNT_EMAIL_REQUIRED = True
        • 帐户电子邮件验证:此选项可用于设置用户在注册帐户后是否必须进行电子邮件验证才能登录。 您可以使用“强制性”来阻止用户登录,直到验证电子邮件为止。 您可以将发送电子邮件设置为optional ,但允许用户无需电子邮件即可登录。 您也可以设置为不发送任何验证电子邮件。 (不推荐)例如: ACCOUNT_EMAIL_VERIFICATION = "mandatory"
        • 登录尝试限制:这是一项重要功能,可用于防止对allauth中的用户登录模块进行暴力攻击。 可以设置最大尝试登录次数,并且阻止用户登录直到超时。 此功能使用ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT设置。 例如: ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5
        • 登录尝试限制超时:此设置需要与ACCOUNT_LOGIN_ATTEMPTS_LIMIT设置一起使用。 设置的值以秒为单位,以秒为单位,从上次尝试失败登录起。 请不要这样做,这不会阻止管理员登录被强行使用。 例如: 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注册设置
      ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 1
      ACCOUNT_EMAIL_REQUIRED = True
      ACCOUNT_EMAIL_VERIFICATION = "mandatory"
      ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5
     # 1天
      ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 86400
     # 或任何其他页面
      ACCOUNT_LOGOUT_REDIRECT_URL = '/accounts/login/'
     # 重定向到配置文件页面(如果未配置).
      LOGIN_REDIRECT_URL = '/accounts/email/