django-allauth入门学习和使用详解


Posted in Python onJuly 03, 2019

django-allauth是集成的Django应用程序,用于解决网站身份验证,用户的注册登录及账户管理,以及第三方(社交)账户的身份验证。

既然你知道并准备使用django-allauth,所以本文假定你已经掌握了基本的django知识(比如会用django搭建Web App,甚至是一个小型博客网站)。

安装与基本配置

安装

pip install django-allauth

基本配置

1.在你项目的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  # 不要漏了这句哦

2.在项目的urls.py(即与setting.py在同一文件夹的urls.py)里 加上 下面这句:

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

温馨提示:

如果你了解或者用过 django.contrib.auth.urls 这个模块的话,那么用了django-allauth后你就可以用由 allauth 提供的 account_login , account_logout , account_set_password ......这些URLs来替代原先的 login , logout , password_change ......

3.在项目的根目录(即manage.py所在文件夹)里执行以下命令:

python manage.py migrate

4.重启服务器。

添加社交账号登录

后台设置

注意:因为做网站一般有两种环境:开发环境(即网站在本地主机上开发)和生产环境(即网站部署在服务器),而开发环境网站主页一般为: http://127.0.0.1:8000 ,生产环境则类似为 http://www.honkerzhou.com ,为简单描述,所以下文我会直接用 你的域名 代替你的网站主页地址,故请分清自己的网站主页地址,以免混淆。

  1. 进入后台管理界面( 你的域名/admin/ ),点击站点(Sites),在里面增加一个站点,域名就写 你的域名 ,名称随意,填好后点保存;
  2. 在社交账号(SOCIAL ACCOUNTS)下的社交app(Social application)里增加一个社交app,需要你填上相关信息(下面以支持GitHub社交账号登录为例)。
  3. Provider:选择GitHub;
  4. 名称(Name):可以随便写,只有你自己能辨别就好,建议写GitHub;
  5. Client id和Secret key: 需要到 GitHub 上申请获取。如没有或不会,详见获取第三方应用的Client id和Secret key;
  6. Key: 可不填;
  7. Sites: 在可用的sites下选中你的域名,将其移到右边选中的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账号登录并且出现了GitHub登录授权的提示说明你前面都做对了,恭喜你!
  3. 但你会发现授权登录后链接到了这个网址: 你的域名/accounts/profile/ ,并且得到一个404页面,这时请别慌张,你只需要在你的settings.py文件里加上这句代码: LOGIN_REDIRECT_URL = '/' 保存后刷新页面,你会发现跳转到了你网站的主页面;
  4. 如果你要退出登录,进入这个网址: 你的域名/accounts/logout/ 注销即可。

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

Python 相关文章推荐
python抓取网页中的图片示例
Feb 28 Python
python获得两个数组交集、并集、差集的方法
Mar 27 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
Python首次安装后运行报错(0xc000007b)的解决方法
Oct 18 Python
Python 专题四 文件基础知识
Mar 20 Python
Python Numpy 数组的初始化和基本操作
Mar 13 Python
Centos 升级到python3后pip 无法使用的解决方法
Jun 12 Python
对pandas的层次索引与取值的新方法详解
Nov 06 Python
用Python从0开始实现一个中文拼音输入法的思路详解
Jul 20 Python
python3实现elasticsearch批量更新数据
Dec 03 Python
基于python实现操作git过程代码解析
Jul 27 Python
Python脚本打包成可执行文件过程解析
Oct 20 Python
python使用mitmproxy抓取浏览器请求的方法
Jul 02 #Python
Python使用线程来接收串口数据的示例
Jul 02 #Python
使用Python在Windows下获取USB PID&VID的方法
Jul 02 #Python
在windows下使用python进行串口通讯的方法
Jul 02 #Python
浅析Python 中几种字符串格式化方法及其比较
Jul 02 #Python
Python实用工具FuckIt.py介绍
Jul 02 #Python
Python如何实现转换URL详解
Jul 02 #Python
You might like
php分页函数
2006/07/08 PHP
PHP 源代码压缩小工具
2009/12/22 PHP
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
初识javascript 文档碎片
2010/07/13 Javascript
jquery isEmptyObject判断是否为空对象的函数
2011/02/14 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
js图片上传的封装代码
2017/08/01 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
2020/03/17 HTML / CSS
会计电算化专业个人的自我评价
2013/11/24 职场文书
求职简历中个人的自我评价
2013/12/01 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
生物科学专业自荐书
2014/06/20 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
股东授权委托书
2014/10/15 职场文书
巾帼文明岗事迹材料
2014/12/24 职场文书
储备店长岗位职责
2015/04/14 职场文书
高中诗歌鉴赏教学反思
2016/02/16 职场文书
从np.random.normal()到正态分布的拟合操作
2021/06/02 Python
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript