码迷,mamicode.com
首页 > Windows程序 > 详细

第二章 restframework——框架安装与APIView

时间:2018-10-12 13:45:53      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:pycha   frame   lis   pychar   两种   com   mil   调用   res   

第二章 restframework——框架安装与APIView

 

一、restframework框架安装

二、APIView介绍

 

一、restframework框架安装

方式一:pip3 install djangorestframework

方式二:pycharm图形化界面安装

方式三:pycharm命令行下安装(装在当前工程所用的解释器下)

 

二、APIView介绍

1.Django的CBV源码分析

CBV(class base view):基于类的view,就叫CBV

Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承、封装、多态)。所以Django在后来加入了Class-Based-View。可以让我们用类写View。这样做的优点主要下面两种:

  1. 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)
  2. 可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性

使用步骤:

 ①使用前切记导入View,将创建的类继承自View

 from django.views import View

 ②该类会自动根据post请求与get请求自动分辨请求类型,选择对应的函数def get()或者def post()

 ③dispatch类似装饰器,可以在def get()或者def post()前后添加代码

    记得继承类obj=super().dispatch(request, *args, **kwargs),在其前后添加代码

 ④在路由调用视图函数时记得调用as_view()方法

技术分享图片

from django.views import View
class AddPublish(View):
    def dispatch(self, request, *args, **kwargs):
        print(request)
        print(args)
        print(kwargs)
        # 可以写类似装饰器的东西,在前后加代码
        obj=super().dispatch(request, *args, **kwargs)
        return obj

    def get(self,request):
        return render(request,‘index.html‘)
    def post(self,request):
        request
        return HttpResponse(‘post‘)

源码分析(右击新标签中打开图片可以看的清楚些)

技术分享图片

使用装饰器装饰CBV(dispatch)

类中的方法与独立函数不完全相同,因此不能直接将函数装饰器应用于类中的方法 ,我们需要先将其转换为方法装饰器。

Django中提供了method_decorator装饰器用于将函数装饰器转换为方法装饰器。

# 使用CBV时要注意,请求过来后会先执行dispatch()这个方法,如果需要批量对具体的请求处理方法,如get,post等做一些操作的时候,这里我们可以手动改写dispatch方法,
这个dispatch方法就和在FBV上加装饰器的效果一样。

class Login(View):
     
    def dispatch(self, request, *args, **kwargs):
        print(‘before‘)
        obj = super(Login,self).dispatch(request, *args, **kwargs)
        print(‘after‘)
        return obj
 
    def get(self,request):
        return render(request,‘login.html‘)
 
    def post(self,request):
        print(request.POST.get(‘user‘))
        return HttpResponse(‘Login.post‘)

 

第二章 restframework——框架安装与APIView

标签:pycha   frame   lis   pychar   两种   com   mil   调用   res   

原文地址:https://www.cnblogs.com/neymargoal/p/9777241.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!