基于Django实现RestFramework
一、restframework框架安装
方式一:pip3 install djangorestframework
方式二:pycharm图形化界面安装
方式三:pycharm命令行下安装(装在当前工程所用的解释器下)
在项目的settings.py配置中配置restframework

二、基于Django实现RestFramework
1、Django的CBV流程分析
扩展(cbv:基于类的views、fbv:基于函数的views)
路由系统(urls):cbv模式需要在路由中使用as_view()方式访问。
1 urlpatterns = [ 2 url(r'^users', Users.as_view()), 3 ]
CBV视图:
需要导入Django的view并在自己的类中继承。
通过getattr反射来实现根据请求方式不同,执行不同的方法。
原理:url --> view方法(通过继承来寻找方法) -->dispatch方法(这里执行反射来寻找:GET/POST/DELETE/PUT/PATCH)
1 from django.views import View 2 from django.http import JsonResponse 3 4 class Users(View): 5 def get(self, request, *args, **kwargs): 6 result = { 7 'status': True, 8 'data': 'response data' 9 } 10 return JsonResponse(result, status=200) 11 12 def post(self, request, *args, **kwargs): 13 result = { 14 'status': True, 15 'data': 'response data' 16 } 17 return JsonResponse(result, status=200)
2、基于Django Rest Framework框架实现
路由(urls)
1 from django.conf.urls import url, include 2 from web.views.s1_api import TestView 3 4 urlpatterns = [ 5 url(r'^test/', TestView.as_view()), 6 ]
views.py
导入rest_franework.views 中的APIView,而它又继承了Django的View
原理:url --> view方法(通过继承来寻找方法) -->dispatch方法(这里执行反射来寻找:GET/POST/DELETE/PUT/PATCH)
1 from rest_framework.views import APIView 2 from rest_framework.response import Response 3 4 5 class TestView(APIView): 6 def dispatch(self, request, *args, **kwargs): 7 """ 8 请求到来之后,都要执行dispatch方法,dispatch方法根据请求方式不同触发 get/post/put等方法 9 10 注意:APIView中的dispatch方法有好多好多的功能 11 """ 12 return super().dispatch(request, *args, **kwargs) 13 14 def get(self, request, *args, **kwargs): 15 return Response('GET请求,响应内容') 16 17 def post(self, request, *args, **kwargs): 18 return Response('POST请求,响应内容') 19 20 def put(self, request, *args, **kwargs): 21 return Response('PUT请求,响应内容')

浙公网安备 33010602011771号