rest_framework(解析器 上)

rest_framework 解析器 对请求题数据进行解析

url
from django.conf.urls import url,include
from cmdb import views
urlpatterns = [
    url(r‘^(?P<version>[v1|v2]+)/users/$‘,views.UsersView.as_view(),name=‘user‘),
    url(r‘^(?P<version>[v1|v2]+)/django/$‘,views.DjangoView.as_view(),name=‘ddd‘),
    url(r‘^(?P<version>[v1|v2]+)/parser/$‘,views.ParserView.as_view()),
]

视图 views.py
from rest_framework.parsers import JSONParser,FormParser
class ParserView(APIView):
    parser_classes = [JSONParser,FormParser]  #如果是这样就可以解析两种头了
    #JSONParser:表示只能解析content-type:application/json头
    #FormParser:表示只能解析content-type: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)  #data表示获取解析后的结果
        return HttpResponse(‘ParserView‘)

原文地址:https://www.cnblogs.com/Liang-jc/p/9326806.html

时间: 2024-08-29 11:37:55

rest_framework(解析器 上)的相关文章

自定义频率组件,django自带的组件,解析器

自定义频率组件 from rest_framework.throttling import BaseThrottle, SimpleRateThrottle import time # 设置一分钟只能访问三次 class MyThrottle(BaseThrottle): visitor_dic = {} def __init__(self): self.history = None def allow_request(self, request, view): # META:请求所有的东西的字

rest framework 之解析器

一.示例 1.api/urls.py from django.urls import path, re_path from api.views import UserView, ParserView urlpatterns = [ # path('users/', UserView.as_view()), re_path('(?P<version>[v1|v2]+)/users/', UserView.as_view(), name='api_user'), path('parser/', P

rest_framework之解析器、路由控制、分页

解析器 我们都知道,网络传输数据只能传输字符串格式的,如果是列表.字典等数据类型,需要转换之后才能使用 但是我们之前的rest_framework例子都没有转换就直接可以使用了,这是因为rest_framework有一套解析器, 默认他会帮我们转换3种类型的数据,分别是,JSONParser,FormParser,MultiPartParser 而如果我们需要转换其他数据,需要在视图类里配置parser_classes参数,如下: from rest_framework.parsers impo

springMVC:为MultipartFilte配置了上传文件解析器,报错或不能使用

一.问题描述为支持restful风格请求,并且应对可能上传文件的情况,需要在配置hiddenHttpMethodFilter过滤器之前配置MultipartFilter.目的是让MultipartFilter过滤器先将带文件上传的请求,进行解析.以便hiddenHttpMethodFilter可以取到”_method”参数,转化为相应的http动作. 既然multipartFilter要进行上传文件的解析,那么必然需要MutipartResolver,那么问题发生了! 二.报错:Unable t

Django Restful Framework【第四篇】版本、解析器、序列化和请求数据验证

一.版本 程序也来越大时,可能通过版本不同做不同的处理 没用rest_framework之前,我们可以通过以下这样的方式去获取. class UserView(APIView): def get(self,request,*args,**kwargs): version = request.query_params.get('version') print(version) if version=='v1': #如果版本是v1 ret = { 'code':111, 'msg':'版本一的内容'

django restframework解析器和分页

解析器 由来 django请求的原始数据是放到request.body当中,django默认的解析器只负责解析同时满足下面两个条件的数据 请求头 Content-Type: application/x-www-form-urlencoded 数据格式要求name=alex&age=18 只要这两个条件有一个不满足,django默认的解析器就不会把数据解析到request.POST里. 情况一: $.ajax({ url: ... type: POST, # 请求头默认是 application/

Django rest framework(5)----解析器

解析器前戏 有时候我们在接受前端传送的值的时候,会存在这样一个奇怪的现象使用request.body可以取到值,而使用request.POST的时候去不到值,基于这样的情况,究竟是如何造成的呢? 追了以下源码发现  把request.body  中的值转换成 POST 需要满足以下的两个条件,也就是说必须满足以下两个条件,才可以使用request.POST接受值,否则只能使用request.body 1. 请求头要求: Content-Type: application/x-www-form-u

rest-framework解析器

解析器 1.json解析器 发一个json格式的post请求.后台打印: request_data---> {'title': '北京折叠'} request.POST---> <QueryDict: {}> 2.urlencode解析器 request_data---> <QueryDict: {'title': ['北京'], 'price': ['122']}> request.POST---> <QueryDict: {'title': ['北

django rest framework 解析器组件 接口设计,视图组件 (1)

一.解析器组件 -解析器组件是用来解析用户请求数据的(application/json), content-type 将客户端发来的json数据进行解析 -必须适应APIView -request.data触发 二.序列化组件 2.1.django 自带组件serializer 2.1.1 from django.serializers import serialize2.1.2 origin_data = Book.objects.all()2.1.3 serialized_data = se