使用django-allauth怎么实现第三方登录
这篇文章将为大家详细讲解有关使用django-allauth怎么实现第三方登录,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
本地登录
先看看django-allauth
的本地登录如何配置。
安装django-allauth
:
(env)>pipinstalldjango-allauth
修改配置文件:
my_blog/settings.py ... TEMPLATES=[ { ... 'OPTIONS':{ 'context_processors':[ #allauth启动必须项 'django.template.context_processors.request', ], }, }, ] AUTHENTICATION_BACKENDS=( #Django后台可独立于allauth登录 'django.contrib.auth.backends.ModelBackend', #配置allauth独有的认证方法,如email登录 'allauth.account.auth_backends.AuthenticationBackend', ) INSTALLED_APPS=[ ... #allauth启动必须项 'django.contrib.auth', 'django.contrib.messages', 'django.contrib.sites', 'allauth', 'allauth.account', 'allauth.socialaccount', #可添加需要的第三方登录 'allauth.socialaccount.providers.github', 'allauth.socialaccount.providers.weibo', ... ] #设置站点 SITE_ID=1 #登录成功后重定向地址 LOGIN_REDIRECT_URL='/article/article-list' ...
注意上面的配置中,有的内容是创建项目时本来就有的,检查一下你的项目中是否包含;有的内容是完全新增的,不要漏掉了。
django-allauth
也是一个app,因此需要分配给它url
:
my_blog/urls.py ... urlpatterns=[ ... path('accounts/',include('allauth.urls')), ... ]
最后一步是迁移数据:
(env)>pythonmanage.pymigrate
这就完成了!
输入django-allauth
的默认登录页面地址:
http://127.0.0.1:8000/accounts/login/
显示页面如下:
设置网站首页
教程到现在,我们的博客都还没有分配首页地址。
博客网站的首页通常就是文章列表本身,因此把这个路由添加到my_blog/urls.py
中:
my_blog/urls.py ... fromarticle.viewsimportarticle_list urlpatterns=[ #home path('',article_list,name='home'), ... ] ...
再把登录成功后的重定向地址改过来:
my_blog/settings.py ... #重定向url #LOGIN_REDIRECT_URL='/article/article-list' LOGIN_REDIRECT_URL='/'
这样就拥有地址为http://127.0.0.1:8000
首页啦。
美化模板
django-allauth
自带的模板是简陋的,需要覆写为自己网站的风格才能使用。
还记得我们一直在使用的虚拟环境吗?没错,所有项目运行所需的第三方库都是保存在虚拟环境的文件夹中的,在本教程中也就是env
文件夹了。找到下面的路径:
env\Lib\site-packages\allauth\templates\account\login.html
这个login.html
就是原始的登录模板文件了。虽然可以直接修改这个文件来优化页面,但是这样做是很蠢的,因为每当你升级库、或者换台电脑部署时,模板又恢复回去了。
正确的做法是复制这个login.html
到你自己项目的templates
文件夹中去。即你需要在项目中创建一个完全相同的路径:
templates\account\login.html
Django会优先在项目中寻找模板文件,因此只要相对路径相同,则可以达到覆写的目的。
接下来就可以愉快的定制风格了。
参考代码如下:
templates\account\login.html {%extends"base.html"%} {%loadi18n%} {%loadaccountsocialaccount%} {%blocktitle%}登录{%endblock%} {%blockcontent%}
{%get_providersassocialaccount_providers%} {%ifsocialaccount_providers%}{%blocktranswithsite.nameassite_name%}请登录已有本地账号或注册新账号。 也可以通过第三方登录:{%endblocktrans%}
第三方登录: {%include"socialaccount/snippets/provider_list.html"withprocess="login"%} 本地登录:
{%blocktrans%}Ifyouhavenotcreatedanaccountyet,thenplease signupfirst.{%endblocktrans%}
{%endif%}