zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    关于AysncController的一次测试(url重写后静态页文件内容的读取是否需要使用异步?)
    JQuery笔记
    ABP文档笔记
    ABP文档笔记
    ABP文档笔记
    设计模式、架构设计 博文收集
    async/await 的一些知识 (死锁问题)
    ABP文档笔记
    ABP文档笔记系列
    ABP文档笔记
  • 原文地址:https://www.cnblogs.com/Liang-jc/p/9392933.html
Copyright © 2011-2022 走看看