• rest_framework-解析器-总结完结篇


    感谢alex和武老师
    前戏: Djaogo对请求体只支持 application/x-www-form-urlencoded请求头以及name=alex&age=18的数据格式
    django.request.POST/ request.body
    1. 请求头要求
    Content-Type: application/x-www-form-urlencoded
    PS:如果请求头中的 Content-Type:application/x-www-form-urlencoded, request.POST中才有值(去request.body里面解析数据)

    2.数据格式要求:
    name=alex&age=18&gender=男

    如:
    a. form表单提交
    <form method..>
    input...
    </form>

    b. ajax提交
    $.ajax({
    url:...
    type:POST,
    data:{name:alex, age=18}
    })

    #自定义请求头

    $.ajax({
    url:...
    headers:{'Content-Type':"application/json"}
    data:{name:alex, age=18} #内部转化 name=alex &age=18
    })
    #body有值, POST无

    $.ajax({
    url:...
    type:POST,
    headers('Content-Type':'application/json)
    data:JSON.atringfy({name:alex,age=18}) #{name:alex,age:18}
    })
    #body有值, POST无值
    获取数据的话 json.loads(request.body)


    rest_framework解析器, 对请求体数据进行解析

    from rest_framework.parsers import JSONParser,FormParser

    class ParseView(APIView):
    """
    JSONParser:表示解析content-type:application/json头 常用这个
    FormParser:表示解析application/x-www-form-urlencoded
    """
    parser_classes = [JSONParser,FormParser]
    def post(self, request, *args, **kwargs):
    """
    允许用户发送JSON格式数据
    a. content-type:application/json
    b.{'name':'alex', 'age':18}

    1.获取用户请求
    2.获取用户请求体
    3.获取用户请求头和parser_classes = [JSONParser, FormParser,]
    4. JSONParser对象请求体
    5.request.data
    """
    #获取解析后的结果
    print(request.data)
    return HttpResponse('ParserView')

    全局配置:
    REST_FRAMEWORK = {
    "DEFAULT_PARSER_CLASSES":['rest_framework.parsers.JSONParser','rest_framework.parsers.FormParser']
    }

    后期通过request.data传值

    如果是上传
    from rest_framework.parsers import FileUploadParser
  • 相关阅读:
    kubernetes
    dubbo
    前端控件+资源
    Gossip
    问题解决1
    react
    impala
    storm+Calcite
    ASP.NET页面传值与跳转
    经典FormsAuthenticationTicket 分析
  • 原文地址:https://www.cnblogs.com/Liang-jc/p/9392933.html
Copyright © 2020-2023  润新知