码迷,mamicode.com
首页 > 其他好文 > 详细

Django Rest framework基础使用之Request/Response

时间:2018-09-25 15:28:04      阅读:391      评论:0      收藏:0      [点我收藏+]

标签:request   两种   技术   status   inf   返回   nbsp   parser   headers   

1、Request

  restframework提供了一个Request对象(rest_framework.request.Request)

  Request对象继承了Django默认的HttpRequest对象,它最核心的功能就是请求数据都包含在request.data属性中,类似于Django的request.POST,但是request.data应用范围更广:

    1)request.data:返回解析之后的请求体数据,类似于Django中标准的request.POST和request.FILES属性。

      request.data包含了解析之后的文件和非文件数据,包含了对POST PUT PATCH请求方式解析后的数据,利用了REST Framework的parsers解析器,不仅支持表单类型数据,也支持json数据

    2)request.query_params:

      与Django标准的request.GET相同

2、Response

  restframework提供了一个Response对象(rest_framework.response.Response), 它是TemplateResponse的一种

  技术分享图片

  参数说明:

    data:返回给前端的数据

    status:状态码,默认200

    template_name:模板名称,如果使用HTMLRenderer时需要指明

    headers:用于存放响应头信息的字典

    content_type:响应数据的content_type,通常无须传递此参数,REST Framework会根据前端请求所需类型数据来设置此参数

3、Status code

  rest_framework.views.Status

  反应了当前请求的成功与否的状态

4、API视图装饰器

  Restframework的API视图 有两种实现方式:

  一种是基于函数的:@api_view

  一种是基于类的:APIView

  1)@api_view

    使用@api_view装饰器,使得我们此处的Request不在是Django标准的HttpRequest,而是restframework的Request。

    默认情况下,只有GET请求会被接收,它也允许我们自己配置函数允许接收的请求类型

    @api_view():默认只接收GET请求

    @api_view(http_method_names=[‘GET‘]):指明接收的请求类型

    @api_view([‘GET‘, ‘POST‘]):接收get post请求

    @api_view

    def Snippet_list(request):

      if request.method=="GET":

        ...

        pass

      elif request.method == "POST":

        ...

        pass

  2)APIView

    APIView是基于类的装饰器,显然,类视图更符合面向对象的原则,它支持GET POST PUT DELETE等请求类型,且各种类型的请求之间,有了更好的分离

    class Snippet_list(APIView):

      def get(self, request):

        ...

        pass

      def post(self, request):

        ...

        pass

 

    

Django Rest framework基础使用之Request/Response

标签:request   两种   技术   status   inf   返回   nbsp   parser   headers   

原文地址:https://www.cnblogs.com/fiona-zhong/p/9687638.html

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