Django-allauth入门学习和使用详解
Django-allauth是一个在Django框架下使用的第三方认证和授权库,支持多种OAuth协议和OpenID协议。在本教程中,我们将介绍Django-allauth的基本设置和使用方法。
安装Django-allauth
- 打开终端,进入Django项目所在的虚拟环境。
- 在终端中输入以下命令安装Django-allauth:
pip install django-allauth
- 在项目的settings.py文件中添加Django-allauth应用和AUTHENTICATION_BACKENDS配置:
INSTALLED_APPS = [
# ...
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
# ...
]
SITE_ID = 1
AUTHENTICATION_BACKENDS = [
# ...
'allauth.account.auth_backends.AuthenticationBackend',
# ...
]
- 运行以下命令创建必要的数据表:
python manage.py migrate
- 添加一些Django-allauth的默认URL到项目的urls.py文件中:
from django.urls import path, include
urlpatterns = [
# ...
path('accounts/', include('allauth.urls')),
# ...
]
这样,Django-allauth的安装就完成了。
前台用户注册和登录
- 首先,我们需要在项目的settings.py文件中添加一些必要的配置:
ACCOUNT_EMAIL_VERIFICATION = 'none' # 用户邮箱验证的方式,这里设置为无需验证
ACCOUNT_EMAIL_REQUIRED = True # 是否要求用户填写邮箱
ACCOUNT_AUTHENTICATION_METHOD = 'username_email' # 登录方式,支持用用户名或邮箱登录
LOGIN_REDIRECT_URL = 'home' # 登录后跳转URL
更多的配置可以在Django-allauth官方文档中了解到。
- 在前端模板中添加注册和登录链接:
{% if user.is_authenticated %}
<!-- 用户已登录 -->
{% else %}
<!-- 用户未登录 -->
<a href="{% url 'account_login' %}">登录</a>
<a href="{% url 'account_signup' %}">注册</a>
{% endif %}
- 运行以下命令创建项目的login和logout模板:
python manage.py createcachetable # 创建缓存表
python manage.py collectstatic # 收集静态文件
python manage.py create_template_dirs login # 创建login页面
python manage.py create_template_dirs logout # 创建logout页面
- 编辑login和logout模板,添加以下代码:
{% extends "base.html" %}
{% block content %}
{% load crispy_forms_tags %}
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-6 mt-4">
{% if form.non_field_errors %}
<div class="alert alert-danger" role="alert">
{% for error in form.non_field_errors %}
{{ error }}
{% endfor %}
</div>
{% endif %}
{% if form.errors %}
<div class="alert alert-danger" role="alert">
{% for field in form %}
{% for error in field.errors %}
<strong>{{ field.label }}</strong>: {{ error }}<br>
{% endfor %}
{% endfor %}
</div>
{% endif %}
{% if next %}
<div class="alert alert-info" role="alert">
登录后将跳转到你之前访问的页面.
</div>
{% endif %}
{% crispy form %}
</div>
</div>
</div>
{% endblock %}
{% extends "base.html" %}
{% block content %}
<div class="container">
<div class="jumbotron mt-4">
<h1 class="display-4">已经安全退出</h1>
<p class="lead">你已经退出当前登录状态,现在可安全地关闭浏览器.</p>
</div>
</div>
{% endblock %}
- 运行以下命令启动Django服务:
python manage.py runserver
现在你可以在前端页面上点击注册和登录链接,进入相应的注册和登录页面,进行测试。
使用社交账号登录
Django-allauth支持通过第三方OAuth协议和OpenID协议来进行社交账号登录。在本教程中,我们以Facebook为例进行演示。
- 首先,需要在Facebook开发者平台中注册应用,并获得应用ID和应用Secret。将这些信息添加到项目的settings.py文件中:
SOCIALACCOUNT_PROVIDERS = {
'facebook': {
'APP': {
'client_id': '[应用ID]',
'secret': '[应用Secret]',
'key': '',
},
'SCOPE': ['email', 'public_profile', 'user_friends'],
'METHOD': 'oauth2',
'LOCALE_FUNC': lambda request: 'zh_CN',
'VERIFIED_EMAIL': False,
'VERSION': 'v7.0',
}
}
- 在前端模板中添加Facebook登录链接:
{% if user.is_authenticated %}
<!-- 用户已登录 -->
{% else %}
<!-- 用户未登录 -->
<a href="{% provider_login_url 'facebook' next='/' %}">使用 Facebook 账号登录</a>
{% endif %}
- 运行以下命令启动Django服务:
python manage.py runserver
现在你可以在前端页面上点击Facebook登录链接,进行测试。
总结
在本教程中,我们介绍了Django-allauth的基础设置和使用方法,包括前台用户注册和登录以及社交账号登录。通过这些知识点的学习,你可以在Django框架下快速集成用户认证和授权功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django-allauth入门学习和使用详解 - Python技术站