基于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请求,响应内容')

 

 

 

 

      

 

posted @ 2019-04-10 15:37  cunzhishu  阅读(132)  评论(0)    收藏  举报