Django Rest Framework组件:解析器JSONParser、FormParser、MultiPartParser、FileUploadParser
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Django Rest Framework组件:解析器JSONParser、FormParser、MultiPartParser、FileUploadParser,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4722字,纯文字阅读大概需要7分钟。
内容图文
原文链接:https://www.cnblogs.com/wupeiqi/articles/7805382.html
仅处理请求头content-type为application/json的请求体
from django.conf.urls import url, include from web.views.s5_parser import TestView urlpatterns = [ url(r‘test/‘, TestView.as_view(), name=‘test‘), ]
# !/usr/bin/env python # -*- coding:utf-8 -*- 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请求,响应内容‘)
仅处理请求头content-type为application/x-www-form-urlencoded 的请求体
from django.conf.urls import url, include from web.views import TestView urlpatterns = [ url(r‘test/‘, TestView.as_view(), name=‘test‘), ]
# !/usr/bin/env python # -*- coding:utf-8 -*- from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.request import Request from rest_framework.parsers import FormParser class TestView(APIView): parser_classes = [FormParser, ] 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请求,响应内容‘)
仅处理请求头content-type为multipart/form-data的请求体
from django.conf.urls import url, include from web.views import TestView urlpatterns = [ url(r‘test/‘, TestView.as_view(), name=‘test‘), ]
# !/usr/bin/env python # -*- coding:utf-8 -*- from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.request import Request from rest_framework.parsers import MultiPartParser class TestView(APIView): parser_classes = [MultiPartParser, ] 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请求,响应内容‘)
<! DOCTYPE html > < html lang ="en" > < head > < meta charset ="UTF-8" > < title >Title</title></head><body><form action="http://127.0.0.1:8000/test/" method="post" enctype="multipart/form-data"><input type="text" name="user"/><input type="file" name="img"><input type="submit" value="提交"></form></body></html> upload.html
同时多个Parser
当同时使用多个parser时,rest framework会根据请求头content-type自动进行比对,并使用对应parser
from django.conf.urls import url, include from web.views import TestView urlpatterns = [ url(r‘test/‘, TestView.as_view(), name=‘test‘), ]
# !/usr/bin/env python # -*- coding:utf-8 -*- from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.request import Request from rest_framework.parsers import JSONParser, FormParser, MultiPartParser class TestView(APIView): parser_classes = [JSONParser, FormParser, MultiPartParser, ] 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.parsers.JSONParser‘‘rest_framework.parsers.FormParser‘‘rest_framework.parsers.MultiPartParser‘ ] }
from django.conf.urls import url, include from web.views import TestView urlpatterns = [ url(r‘test/‘, TestView.as_view(), name=‘test‘), ] urls.py
# !/usr/bin/env python # -*- coding:utf-8 -*- 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请求,响应内容‘)
原文:https://www.cnblogs.com/-wenli/p/13236593.html
内容总结
以上是互联网集市为您收集整理的Django Rest Framework组件:解析器JSONParser、FormParser、MultiPartParser、FileUploadParser全部内容,希望文章能够帮你解决Django Rest Framework组件:解析器JSONParser、FormParser、MultiPartParser、FileUploadParser所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。