Python学习笔记:7.5.4 Django快速建站 - Web开发实战API2

前言:本文是学习网易微专业的《python全栈工程师 - Django快速建站》课程的笔记,欢迎学习交流。同时感谢老师们的精彩传授!

一、课程目标

  • 了解REST含义
  • 用户登录和退出
  • 用户注册

二、详情解读

2.1.REST
2.1.1.概念介绍
  • RESTREpresentation State Transfer的缩写,这个词首先于2000年出现在Roy Thomas Fielding的博士论文中。Fielding将他对互联网软件的架构原则,定名为REST。如果一个架构符合REST原则,就称它为RESTful架构。
  • REpresentation State Tranfer,直译:表现层状态转移。
    – 资源: 是网络上的实体,可以是文本、图片、音乐等。用一个URI(统一资源定位符)定位资源,即URI是每个资源的地址或标识符。
    – 上网:即访问一系列URI,得到资源,也就是客户端和服务器端传递实体进行互动的过程。
    – 把资源呈现出来的形式,即为”表现层“。文本:txt、html、xml;图片:jpg、png
  • 客户端通过HTTP协议与服务器端互动:
    GET:获取资源
    POST:新建资源
    PUT:更新资源
    DELETE:删除资源
  • 客户端借助上述操作,是服务器端的实体发生”状态转化“(State Transfer)。
  • 客户端总是和服务器端实体的某种表现层进行交互,故称之为”表现层状态转化“。
  • RESTful API:本质还是一个HTTP请求。
    Python学习笔记:7.5.4 Django快速建站 - Web开发实战API2_第1张图片
2.2.用户权限的API
2.2.1.使用第三方应用
  • django-rest-auth
    RESTfulAPI
    – 基于django-rest-framework
    – 功能:用户注册、登录、退出、密码修改和重置、第三方登录
  • 安装:
pip install django-rest-auth
  • 官方网站:https://django-rest-auth.readthedocs.io/en/latest/

  • blog/settings.py中添加应用

INSTALLED_APPS = [
	......,
	'rest_framework',
	'rest_framework.authtoken',  # new
	'siteusers',
	'rest_auth'  # new
]
  • 配置路由:siteusers/urls.py
urlpatterns = [
	path('', include(router.urls)),
	path('rest-auth/', include('reste_auth.urls')), # new
]
  • 迁移数据: auth/authtoken......
python manage.py migrate
2.2.2.POSTMAN
  • 用户登录/POST
    http://localhost:8000/api/v1/rest-auth/login/
    Python学习笔记:7.5.4 Django快速建站 - Web开发实战API2_第2张图片
    备注:老师的演示里会有csrf的验证,但是小编自己的操作没有这个验证,不知道是不是django REST framework版本的问题。本地操作用的3.11.0版本的。

如果有提示csrf错误的同学,可以在blog/settings.py末尾添加如下配置:

REST_FRAMEWORK = {
	'DEFAULT_PERMISSION_CLASSES': (
		'rest_framework.permissions.IsAuthenticated', # 必须有
	),
	'DEFAULT_AUTHENTICATION_CLASSES': (
		'rest_framework.authentication.TokenAuthentication',
	)
}
  • 然后重启项目。
  • 用户退出:http://localhost:8000/api/v1/rest-auth/logout/
    Python学习笔记:7.5.4 Django快速建站 - Web开发实战API2_第3张图片
2.2.3.用户注册
  • pip install django-allauth

  • 增加如下app
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'rest_auth.registration',

  • 添加blog/settings.py配置:
    SITE_ID = 1
    EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

  • 增加URL列表:在siteusers/urls.py文件中添加
    path('rest-auth/registration/', include('rest_auth.registration.urls')),

  • 迁移数据库

python manage.py migrate
  • 测试
    postman注册一个用户,然后再查询结果。
    Python学习笔记:7.5.4 Django快速建站 - Web开发实战API2_第4张图片
    此时,当获取用户信息时会遇到一个权限问题,如下图:
    Python学习笔记:7.5.4 Django快速建站 - Web开发实战API2_第5张图片
    上述问题的解决方法:
    1)、用户登录获取token
    2)、提交token获取用户信息
    Python学习笔记:7.5.4 Django快速建站 - Web开发实战API2_第6张图片
    Python学习笔记:7.5.4 Django快速建站 - Web开发实战API2_第7张图片
    关于django-rest-auth的更多用法,请参考官方文档:https://django-rest-auth.readthedocs.io/en/latest/

三、课程小结

  • 01 登录与退出
  • 02 用户注册

你可能感兴趣的:(Python全栈工程师学习笔记)