DRF初识
前言
-
前后端分离
前端与后端分离开,前端负责页面及页面的样式及动态效果;页面需要的数据通过ajax请求,向后端请求数据。后端负责将数据已json的格式返回给前端。 前端使用:大部分使用vue.js,其他有:AngularJs、ReactJs 后端:不规定语言,但返回给前端的都是json数据
-
移动端
分为两部分: App:手机上的APP 后端:给app返回json数据
-
PC端应用
例如:CRM,前端后端一起写,运行在浏览器上。一般情况下都是PC端使用
基于Django实现的任务
-
开发一个系统
-
基于Django开发的接口
需要写四个url来实现对数据的增删改查: http://127.0.0.1:8000/info/list/ http://127.0.0.1:8000/info/add/ http://127.0.0.1:8000/info/update/ http://127.0.0.1:8000/info/delete/
-
基于django且遵循restful规范开发的接口
只需要一个url,即可实现对数据的增删改查 http://127.0.0.1:8000/info/ 前端在发送请求时: get:获取数据 post:添加数据 put:更新全部数据 patch:更新部分数据 delete:删除数据
-
总结:基于Django可以开发遵循restful规范的接口
-FBV 可以实现,但是比较麻烦 -CBV 相对比较简单,根据method的不同做不同的区分
-
DRF简介
- 全称:DjangoRestFramework,依附于Django开发的一个框架;简称DRF
- 注意:若没有drf框架,Django完全可以完成,但是有了drf可以让我们在做特定的业务时更加的省事,节省代码
DRF快速使用
-
安装
pip install djangorestframework
-
使用(djangorestframework,相当于Django的一个APP)
-在settings文件内进行注册: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework' ] -编写路由: from django.conf.urls import url from django.contrib import admin from api import views urlpatterns = [ url(r'^drf/info/', views.DrfInfoView.as_view()), ] -编写视图: from rest_framework.views import APIView from rest_framework.response import Response class DrfInfoView(APIView): def get(self, request, *args, **kwargs): data = [ {'id': 1, 'title': '震惊了.....'}, {'id': 2, 'title': '震惊了.....'}, {'id': 3, 'title': '震惊了.....'}, {'id': 4, 'title': '震惊了.....'}, return Response(data)
-
应用场景
参与前后端分离项目或为APP编写接口时
-
获取前端提交的数据
request.data //自动去request.body中取值并将字节转化为字符再反序列化为json数据
DRF为我们提供的功能
-解析器:解析请求体中的数据,将其变成我们想要的数据格式并放在request.data中
-视图:继承APIView,在内部APIView继承了Django的View
-序列化:对对象或对象列表(queryset)进行序列化操作以及对表单进行验证
-渲染器:将json数据友好的在页面上展示(内部根据请求设备的不同做不同的展示)
模拟浏览器发送请求使用的工具
postman