• 请求与响应


    请求

    # 请求对象
    # from rest_framework.request import Request
        def __init__(self, request, parsers=None, authenticators=None,
                     negotiator=None, parser_context=None):
            # 断言 判断request是否是django的HttpRequest的对象
            # 提高程序的健壮性
            assert isinstance(request, HttpRequest), (
                'The `request` argument must be an instance of '
                '`django.http.HttpRequest`, not `{}.{}`.'
                    .format(request.__class__.__module__, request.__class__.__name__)
            )
            # 二次封装request,将原生的request作为drf request对象的 _request属性
            self._request = request
        def __getattr__(self,item):
            # 通过反射,如果要取request.method,是去_request里面去取了
            return getattr(self,_request,item)
    
    # 请求对象.data:前端以三种编码方式传入的数据都可以取出来
    # 请求对象.query_params 与Django标准的request.GET相同,只是更换了更正确的名称而已。

    响应

    # from rest_framework.response import Response
       def __init__(self, data=None, status=None,
                     template_name=None, headers=None,
                     exception=False, content_type=None):
      
    # data:你要返回的数据,字典
    # status:返回的状态码,默认是200
        -from rest_framework import status  在这个路径下,它把所有使用到的状态码都定义成了常量
    # template_name 渲染的模板的名字(自定义模板),不需要了解
    # headers:响应头,可以往响应头放东西,就是一个字典
    # content_type:响应的编码格式,application/json 和 text/html
    
    # 浏览器响应成浏览器的格式,postman响应成json格式,通过配置实现的(默认配置)
    # 不管是postman还是浏览器,都返回json格式数据
    # drf有默认的配置文件--->先从项目的settings中找,找不到,采用默认的
    # drf的配置信息,先从自己类中找--->项目的settings中找--->默认的找
        -局部使用:对某个视图类有效
            -在视图类中写如下
                from rest_framework.renderers import JSONRenderer
                renderer_classes = [JSONRenderer,]
        -全局使用:全局的视图类,所有的请求,都有效
            -在setting.py中加入如下
            # 这个变量REST_FRAMEWORK,里面都是drf的配置信息
            REST_FRAMEWORK = {
                'DEFAULT_RENDERER_CLASSES': (  # 默认响应渲染类
                    'rest_framework.renderers.JSONRenderer',  # json渲染器
                    'rest_framework.renderers.BrowsableAPIRenderer',  # 浏览API渲染器
                )
    }
  • 相关阅读:
    SQL server 插入不同IP的数据库
    SQL Server中的循环例子(网摘)
    C#小型数据库只能查询
    vue.prototype和vue.use的区别和注意点
    Ajax+PHP简单入门教程
    smarty在windows下的安装
    docker安装mysql镜像和容器
    Linux导出未越狱Iphone10.3QQ聊天记录
    记一次Struts中文乱码
    Ubuntu设置服务开机启动
  • 原文地址:https://www.cnblogs.com/ZhZhang12138/p/14875816.html
Copyright © 2020-2023  润新知