( ̄◇ ̄;)
啊 果然是好记性不如烂笔头
才下班没多久居然就要忘了
第一坑 POST方法接收请求后,数据解析失败 #
临床表现为:读取request.data提示不支持
提示如下
{UnsupportedMediaType}不支持请求中的媒体类型 “text/xml”
然而仔细看下调试信息就会发现 request.stream.body
里就是我想要的信息。
那解决方法是啥,当然是徒手撸一个Parser,然后告诉他 media_type = 'text/xml'
,也没啥技术含量,因为这个代码都是COPY来的,略作修改就行
参考 Django REST framework- Custom parsers
from rest_framework.parsers import BaseParser
class TextXMLParser(BaseParser):
"""
Plain text parser.
"""
media_type = 'text/xml'
def parse(self, stream, media_type=None, parser_context=None):
"""
Simply return a string representing the body of the request.
"""
return stream.read()
然后在继承了APIView的类里注明 parser_classes
即可
from rest_framework.views import APIView
class Example(APIView):
parser_classes = (TextXMLParser,)
def post(self, request):
data=request.data