天天看点

二、django-res-framework—请求和响应

一、Request

1、核心属性:request.data,类似于request.POST

request.POST  # 仅处理表单数据,为POST方法工作
request.data  # 处理任意数据.  Works for 'POST', 'PUT' and 'PATCH' methods.
           

二、Response

该对象是一种TemplateResponse类型,采用未呈现的内容并使用内容协商来确定要

返回给客户端的正确内容类型。

return Response(data)	#呈现客户端所请求的内容类型
           

refactor:重构

三、

suffix:后缀

# from rest_framework import status
# from rest_framework.decorators import api_view
# from rest_framework.response import Response
           

DRY:don‘t repeat yourself

四、FBV与CBV,为什么CBV更好????

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

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

五、使用mixins:混入

from rest_framework import mixins
from rest_framework import generics

minxins.ListModelMixin:针对get queryset提供.list()方法
minxins.RetrieveModelMixin:针对get model提供.retrieve()方法
minxins.CreateModelMixin:针对post提供.create()方法
minxins.UpdateModelMixin:针对put提供.update()方法
minxins.DestroyModelMixin:针对delete提供.destroy()方法
generics.GenericAPIView:为视图提供核心功能(.as_view()等)

注:无论queryset还是model都有这两行
queryset=Snippet.objects.all()
serializer_class = SnippetSerializer

请求的格式
    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)
           

六、混合通用视图

generics.ListCreateAPIView:get query+post+APIView
generics.RetrieveUpdateDestroyAPIView:get model+put+delete+APIView

queryset = Snippet.objects.all()
serializer_class = SnippetSerializer
           

七、python中关键字、函数和方法的区别

1.关键字:关键字是python内置的,具有特殊意义的标识符,自定义标识符命名时不可与之重复。可通过以下
代码查看python内置的关键字内容
import keyword
print(keyword.kwlist)
2.函数:函数是封装了一些独立的功能,可以直接调用,python内置了许多函数,同时可以自建函数来使用。
3.方法:方法和函数类似,同样封装了独立的功能,但是方法是需要通过对象来调用的,表示针对这个
对象要做的操作,使用时采用点方法。


           

八、@api_view的作用是什么??

确保在视图中接收到Request实例,并将上下文添加到Response,以便可以执行内容协商。
           

继续阅读