前言:本文是学习网易微专业的《python全栈工程师 - Django快速建站》课程的笔记,欢迎学习交流。同时感谢老师们的精彩传授!
一、课程目标
- 了解
REST
含义 - 用户登录和退出
- 用户注册
二、详情解读
2.1.REST
2.1.1.概念介绍
REST
是REpresentation 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
请求。
2.2.用户权限的API
2.2.1.使用第三方应用
django-rest-auth
–RESTful
的API
– 基于django-rest-framework
– 功能:用户注册、登录、退出、密码修改和重置、第三方登录- 安装:
pip install django-rest-auth
-
在
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/
备注:老师的演示里会有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/
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
注册一个用户,然后再查询结果。
此时,当获取用户信息时会遇到一个权限问题,如下图:
上述问题的解决方法:
1)、用户登录获取token
2)、提交token
获取用户信息
关于django-rest-auth
的更多用法,请参考官方文档:https://django-rest-auth.readthedocs.io/en/latest/
三、课程小结
- 01 登录与退出
- 02 用户注册