DRF 使用的是TokenAuthentication 以前用template渲染的哪种登录方式是用SessionAuthentication 一般浏览器是采用这种的。但是前后端分离的话因为是跨站的。所以几乎不采用Session的方式 。
要杂用呢?
首先要把这种认证方式加入到应用中:
settings.py:
REST_FRAMEWORK = {
# 这条是之前的
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',# 这条是新加的
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
)
}INSTALLED_APPS = [
'rest_framework.authtoken'
]
【Django|Vue + Django 2.0.6 学习笔记 7.1 drf的token登录】urls.py
from rest_framework.authtoken import viewsurlpatterns = [
path('api-token-auth/', views.obtain_auth_token)
]
然后makemigration和migrate
然后数据库中就有了这个表
文章图片
表中的数据刚开始是空的
因为之前创建的用户没有经过token认证创建key所以是空的。 那咋办
通过postman来发送用户名和密码 让TokenAuthentication自动创建key
文章图片
点击send之后在软件下方会返回token的key值
文章图片
这时候再去查数据库表就有了该值。
原理:
urls.py:from rest_framework.authtoken import viewspath('api-token-auth/', views.obtain_auth_token)# 通过rest_framework.authtoken.views.obtain_auth_token 找到对应类:obtain_auth_token = ObtainAuthToken.as_view()#然后找到ObtainAuthToken这个类
文章图片
看下面那个post请求 它接收数据后进行校验(serializer_class = AuthTokenSerializer 这是校验对象)如果校验账号密码没问题则查询是否有token, 没有的话就创建一个token (token, created = Token.objects.get_or_create(user=user))
7.1 完结
推荐阅读
- Django|Vue+Django 2.0.6 学习笔记 5.10 drf过滤
- 数据服务|第四章(Django绑定数据库并发布数据-[基于Vue、Django、supermap iserver和gerapy的生态旅游web系统开发实例])
- 前端|8.Django怎样去调用漂亮的HTML前端页面()
- Python|Django学习笔记
- django|django - 云笔记项目-5-网站首页
- django|django - 云笔记项目-1
- python|游标的简单使用及案例【笔记二】
- Django|Python接口自动化测试系列[V1.0.0][加密接口]
- Django (一)-DRF(DjangoRESTframework)工程搭建