1.drf框架全称 djangorestframework
1.如何安装drf框架:
pip3 install djangorestframework #drf框架其实就是一个app称之为drf #django 使用的是MTV模式, 可以写fbv 或cbv #fbv是使用函数写的, 用的就是django原生的 #cbv是使用类来写的, 主要使用drf 以后用到drf框架就是写cbv模式
2. 如何使用drf框架
# 在django项目中设置settings文件内注册rest_framework INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'app01.apps.App01Config', ]
3. 在url层中使用cbv模式 urls配置文件的路由编写规范如下:
from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), # views.Books.as_view()函数执行结果也是个函数内存地址 # url(r'^books/', views.book), url(r'^books/', views.Books.as_view()), ]
#使用cbv模式后面需要加上.as_view()
4. 在views层 编写视图函数模式如下需要继承APIView:
#基于drf写的cbv from rest_framework.views import APIView class Books(APIView): def get(self,request): #一旦继承APIView,request是经过处理的request,新的request # request.POST print(request.GET) print(request.POST) print(request.method) print(request.FILES) print(request.query_params) # print(request._request.GET) #把原来request取出来 #django.core.handlers.wsgi.WSGIRequest 是原来request对象得类 #这个data是post,put的内容,都在它里面,字典形式 print(request.data) print(type(request._request)) ll=[{'id':1,'title':'银瓶梅'},{'id':1,'title':'铜瓶梅'}] return JsonResponse(ll,safe=False,json_dumps_params={'ensure_ascii':False}) def post(self,request): return HttpResponse('ok')
#总结: 一句话使用drf框架就使用cbv模式, 一定要遵守以上的规则,不然就无法正常运行
2.什么是rest_ful规范
1 resufl规范 非常重要 -它是一个规范,面向资源架构 -10条规范: -1 API与用户的通信协议,总是使用HTTPs协议 -2域名 https://api.example.com :尽量将API部署在专用域名(会存在跨域问题) https://example.org/api/:API很简单(我推荐) -3 版本 -https://api.example.com/v1/ -把版本号放在请求头中 127.0.0.1/book/1 -4 路径,视网络上任何东西都是资源,均使用名词表示(可复数) 必须说出来 -127.0.0.1/get_all_book/ 以前你这么写 -127.0.0.1/books/ -5 method,通过请求方式来表示进行的操作 127.0.0.1/books/ get请求:表示获取所有图书 127.0.0.1/books/1 get请求:表示获取id为1的图书 127.0.0.1/books/ post请求:表示新增一本书 127.0.0.1/books/ delete请求:表示删除一本书 127.0.0.1/books/ put/patch请求:表示修改一本书 -6 过滤,通过在url上传参的形式传递搜索条件 -7 状态码 1 开头:服务器正在处理 2 开头:服务器处理成功 3 开头:重定向 4 开头:客户端错误 5 开头:服务器错误 -注意:在返回的数据中携带状态码 -8 错误处理,应返回错误信息,error当做key -9 返回结果针对不同操作,返回数据格式要求 -10 返回结果中提供链接 总结:必须说出来的就两条:路径都用名词表示,请求方式不同,表示不同的操作