django-allauth 集成指南:从安装到社交登录配置

一颗松果
一颗松果
发布时间:2026-10-13| 4人浏览过
原创

本文详细介绍 django-allauth 的安装与基础配置,涵盖 settings.py 和 urls.py 的关键设置。通过 GitHub 示例演示如何获取 Client ID 并配置社交应用,解决 404 错误及登录跳转问题,帮助开发者快速实现网站的用户注册、登录及第三方账户集成。

django-allauth 是一个集成的 Django 应用,旨在为网站提供完整的身份验证解决方案,包括用户注册、登录、账户管理以及第三方(社交)账户的身份验证功能。

鉴于您已决定使用 django-allauth,本文假设您已具备 Django 基础知识,例如能够使用 Django 搭建 Web 应用程序或小型博客网站。

安装与基本配置

安装与基本配置

安装

安装 django-allauth


pip install django-allauth

基础配置步骤

基本配置

首先,在项目根目录下的 settings.py 文件中添加以下相应配置代码。


TEMPLATES = [
  {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [],
    'APP_DIRS': True,
    'OPTIONS': {
      'context_processors': [
        'django.template.context_processors.request',
      ],
    },
  },
]

AUTHENTICATION_BACKENDS = (
  'django.contrib.auth.backends.ModelBackend',
  'allauth.account.auth_backends.AuthenticationBackend',
)

INSTALLED_APPS = (
  
  # 这两个django本身的app也是需要的,但不需要重复添加
  'django.contrib.auth',
  'django.contrib.sites',

  'allauth',
  'allauth.account',
  'allauth.socialaccount',

  # 下面是django-allauth目前支持的社交账号,加上你需要的就行了,不用全加上:
  'allauth.socialaccount.providers.amazon', # 亚马逊
  'allauth.socialaccount.providers.angellist',
  'allauth.socialaccount.providers.asana',
  'allauth.socialaccount.providers.auth0',
  'allauth.socialaccount.providers.authentiq',
  'allauth.socialaccount.providers.baidu', # 百度
  'allauth.socialaccount.providers.basecamp',
  'allauth.socialaccount.providers.bitbucket',
  'allauth.socialaccount.providers.bitbucket_oauth2',
  'allauth.socialaccount.providers.bitly',
  'allauth.socialaccount.providers.coinbase',
  'allauth.socialaccount.providers.dataporten',
  'allauth.socialaccount.providers.daum',
  'allauth.socialaccount.providers.digitalocean',
  'allauth.socialaccount.providers.discord',
  'allauth.socialaccount.providers.douban', # 豆瓣
  'allauth.socialaccount.providers.draugiem',
  'allauth.socialaccount.providers.dropbox',
  'allauth.socialaccount.providers.dwolla',
  'allauth.socialaccount.providers.edmodo',
  'allauth.socialaccount.providers.eveonline',
  'allauth.socialaccount.providers.evernote',
  'allauth.socialaccount.providers.facebook',
  'allauth.socialaccount.providers.feedly',
  'allauth.socialaccount.providers.fivehundredpx',
  'allauth.socialaccount.providers.flickr',
  'allauth.socialaccount.providers.foursquare',
  'allauth.socialaccount.providers.fxa',
  'allauth.socialaccount.providers.github', # GitHub
  'allauth.socialaccount.providers.gitlab',
  'allauth.socialaccount.providers.google',
  'allauth.socialaccount.providers.hubic',
  'allauth.socialaccount.providers.instagram',
  'allauth.socialaccount.providers.kakao',
  'allauth.socialaccount.providers.line',
  'allauth.socialaccount.providers.linkedin',
  'allauth.socialaccount.providers.linkedin_oauth2',
  'allauth.socialaccount.providers.mailru',
  'allauth.socialaccount.providers.mailchimp',
  'allauth.socialaccount.providers.meetup',
  'allauth.socialaccount.providers.naver',
  'allauth.socialaccount.providers.odnoklassniki',
  'allauth.socialaccount.providers.openid',
  'allauth.socialaccount.providers.orcid',
  'allauth.socialaccount.providers.paypal',
  'allauth.socialaccount.providers.persona',
  'allauth.socialaccount.providers.pinterest',
  'allauth.socialaccount.providers.reddit',
  'allauth.socialaccount.providers.robinhood',
  'allauth.socialaccount.providers.shopify',
  'allauth.socialaccount.providers.slack',
  'allauth.socialaccount.providers.soundcloud',
  'allauth.socialaccount.providers.spotify',
  'allauth.socialaccount.providers.stackexchange',
  'allauth.socialaccount.providers.stripe',
  'allauth.socialaccount.providers.trello',
  'allauth.socialaccount.providers.tumblr',
  'allauth.socialaccount.providers.twentythreeandme',
  'allauth.socialaccount.providers.twitch',
  'allauth.socialaccount.providers.twitter',
  'allauth.socialaccount.providers.untappd',
  'allauth.socialaccount.providers.vimeo',
  'allauth.socialaccount.providers.vk',
  'allauth.socialaccount.providers.weibo', # 新浪微博
  'allauth.socialaccount.providers.weixin', # 微信
  'allauth.socialaccount.providers.windowslive',
  'allauth.socialaccount.providers.xing',
  
)

SITE_ID = 1  # 不要漏了这句哦

其次,在项目的 urls.py 文件(通常与 settings.py 位于同一目录)中添加如下 URL 配置:


urlpatterns = [
  url(r'^accounts/', include('allauth.urls')),
]

提示:

如果您熟悉 django.contrib.auth.urls 模块,使用 django-allauth 后,您可以利用 allauth 提供的 account_login、account_logout、account_set_password 等 URL 来替代原有的 login、logout、password_change 等 URL。

接着,在项目根目录(即 manage.py 所在的文件夹)中执行以下命令以应用数据库迁移。


python manage.py migrate

最后,重启服务器以应用更改。

添加社交账号登录

添加社交账号登录

后台站点与应用配置

后台设置

注意:网站通常分为开发环境(本地主机,如 http://127.0.0.1:8000)和生产环境(服务器部署,如 http://www.honkerzhou.com)。为简化描述,下文将使用“你的域名”代表网站主页地址,请根据实际情况区分,以免混淆。

  1. 进入后台管理界面(地址格式为 你的域名/admin/),点击“站点”(Sites),新增一个站点记录,域名填写“你的域名”,名称可随意填写,保存即可。
  2. 在“社交账号”(SOCIAL ACCOUNTS)下的“社交应用”(Social application)中新增一个社交应用,需填写相关信息。以下以支持 GitHub 社交账号登录为例进行说明。
  3. Provider:选择 GitHub;
  4. 名称(Name):可随意填写,只要便于自己识别即可,建议填写为 GitHub;
  5. Client id 和 Secret key:需前往 GitHub 申请获取。若不清楚如何操作,请参考获取第三方应用的 Client id 和 Secret key 相关文档;
  6. Key:可不填;
  7. Sites:在可用站点列表中选择你的域名,将其移至右侧“选中的站点”中,然后保存。

获取第三方应用凭证

获取第三方应用的 Client id 和 Secret key

1.GitHub

登录 GitHub 后,依次进入 Settings -> Developer settings -> 在 OAuth Apps 下点击 New OAuth App,按步骤填写信息并进入下一步,即可看到 Client id 和 Secret key。

注意:

  1. Homepage URL 填写你的域名;
  2. Authorization callback URL 填写你的域名/accounts/github/login/callback/。

验证与初步使用

验证和初步使用

  1. 重要:请先注销你的管理员账号以便测试。
  2. 访问网址:你的域名/accounts/login/,你将看到一个排版较为简陋的页面,这是 django-allauth 自带的默认模板。若此时选择通过 GitHub 账号登录并出现授权提示,说明前述步骤正确,恭喜!
  3. 但你会发现授权登录后跳转至你的域名/accounts/profile/,并显示 404 错误。请勿惊慌,只需在 settings.py 文件中添加代码:LOGIN_REDIRECT_URL = '/',保存后刷新页面,即可跳转至网站主页面;
  4. 如需退出登录,访问网址:你的域名/accounts/logout/ 即可注销。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。