zoukankan      html  css  js  c++  java
  • 七 .Django---framework框架 解析器

    一 .解析器

    https://www.jb51.net/article/166237.htm  解释器配置

    https://www.cnblogs.com/crazymagic/p/9572240.html   解释器配置 源码解析

    DRF默认解释器
    
        from rest_framework.parsers import JSONParser,FormParser,MultiPartParser,FileUploadParser
        parser_classes = [JSONParser,FormParser]
    一、解析器概念
    根据请求头 content
    -type 选择对应的解析器对请求体内容进行处理。 有application/json,x-www-form-urlencoded,form-data等格式

    1. 解析器的配置

    2-1 全局使用(settings内配置)
    REST_FRAMEWORK = {
        'DEFAULT_PARSER_CLASSES':[
            'rest_framework.parsers.JSONParser'
            'rest_framework.parsers.FormParser'
            'rest_framework.parsers.MultiPartParser'
        ]
     
    }
     
    '''
    路由配置
    '''
    urlpatterns = [
        url(r'test/', TestView.as_view()),
    ]
     
    '''
    视图函数
    '''
    from rest_framework.views import APIView
    from rest_framework.response import Response
     
    class TestView(APIView):
        def post(self, request, *args, **kwargs):
            print(request.content_type)
     
            # 获取请求的值,并使用对应的JSONParser进行处理
            print(request.data)
            # application/x-www-form-urlencoded 或 multipart/form-data时,request.POST中才有值
            print(request.POST)
            print(request.FILES)
            return Response('POST请求,响应内容')
     
        def put(self, request, *args, **kwargs):
            return Response('PUT请求,响应内容')


    #
    全局使用

    REST_FRAMEWORK = { "DEFAULT_PARSER_CLASSES": ["rest_framework.JSONParser", "rest_framework.FormParser"] }

    2. 局部使用 -  parser_classes

    '''
    仅处理请求头content-type为application/json的请求体
    '''
    from rest_framework.views import APIView
    from rest_framework.response import Response
    from rest_framework.request import Request
    from rest_framework.parsers import JSONParser
     
     
    class TestView(APIView):
        parser_classes = [JSONParser, ]
     
        def post(self, request, *args, **kwargs):
            print(request.content_type)
     
            # 获取请求的值,并使用对应的JSONParser进行处理
            print(request.data)
     
            # application/x-www-form-urlencoded 或 multipart/form-data时,request.POST中才有值
            print(request.POST)
            print(request.FILES)
     
            return Response('POST请求,响应内容')
     
        def put(self, request, *args, **kwargs):
            return Response('PUT请求,响应内容')
     
    局部
    from rest_framework.parsers import JSONParser, FormParser class ParserView(APIView): parser_classes = [JSONParser] """ JSONParser: 表示只能解析 application/json 请求头 FormParser: 表示只能解析 application/x-www-form-urlencoded 请求头 """ def post(self, request, *args, **kwargs): """ 允许用户发送JSON格式的数据 a. content-type: application/json b. {"name": 'alex', "age": 18} :param request: :param args: :param kwargs: :return: """ """ 1. 获取用户请求 2. 获取用户请求体 3. 根据用户请求头和 parser_classes = [JSONParser, FormParser] 中支持的请求头进行比较 4. JSONParser对象中去请求体 5. request.data """ print(request.data) return HttpResponse('JSON测试')
  • 相关阅读:
    Java数组的内存结构
    2014.11.9--最近的小感悟
    十一两天感悟
    Are you happiness
    Are you busy?
    Lesson 81-82 Are they true
    Lesson 79-80 People are getting sick
    Lesson 77-78 Socially Discriminated Against
    Lesson 75-76 Shopping on the web
    更新单点,求区间—— luogu 3374
  • 原文地址:https://www.cnblogs.com/lovershowtime/p/11651705.html
Copyright © 2011-2022 走看看