首页 > 其他 > 详细

CBV到DRF源码分析

时间:2019-11-23 15:20:26      阅读:79      评论:0      收藏:0      [点我收藏+]

安装

pip3 install djangorestframework

使用

  • 注册app

    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': '震惊了...王阳居然...', 'content': '...'},
                {'id': 2, 'title': '震惊了...王阳居然...', 'content': '...'},
                {'id': 3, 'title': '震惊了...王阳居然...', 'content': '...'},
                {'id': 4, 'title': '震惊了...王阳居然...', 'content': '...'},
            ]
            return Response(data)

DRF的应用场景

以后在公司参与前后端分离项目、参与为app写接口时,用drf会比较方便。

CBV到视图函数源码分析

1.首先注册,写好url,视图

首先下载并安装好djangorestframework

pip3 install djangorestframework

在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': '震惊了...王阳居然...', 'content': '...'},
            {'id': 2, 'title': '震惊了...王阳居然...', 'content': '...'},
            {'id': 3, 'title': '震惊了...王阳居然...', 'content': '...'},
            {'id': 4, 'title': '震惊了...王阳居然...', 'content': '...'},
        ]
        return Response(data)

2.CBV到视图函数源码分析

  • 第一步
urlpatterns = [
    url(r'^drf/info/', views.DrfInfoView.as_view()),
]
请求进来首先执行as_view()

技术分享图片

  • 第二步
然后执行父类的as_view()方法,并赋值给view

技术分享图片

  • 第三步
执行self.dispatch方法,首先取本类DrfInfoView中找,如果没有就找父类APIView中找

技术分享图片
技术分享图片

CBV到DRF源码分析

原文:https://www.cnblogs.com/zhuzhizheng/p/11917697.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!