Python api#u视图装饰器不';t使用application/x-www-form-urlencoded
我正在读一本关于django rest框架的书 这里有一个特殊的代码,它不适合我。请求数据字段为Python api#u视图装饰器不';t使用application/x-www-form-urlencoded,python,django,django-rest-framework,Python,Django,Django Rest Framework,我正在读一本关于django rest框架的书 这里有一个特殊的代码,它不适合我。请求数据字段为None 视图.py @api_view(['GET', 'POST']) def cars_list(request, format=None): if request.method == 'GET': cars = CarModel.objects.all() cars_serializer = CarSerializer(cars, many=True)
None
视图.py
@api_view(['GET', 'POST'])
def cars_list(request, format=None):
if request.method == 'GET':
cars = CarModel.objects.all()
cars_serializer = CarSerializer(cars, many=True)
return Response(cars_serializer.data)
elif request.method == 'POST':
print(request.data.get('manufacturing_date'))
car_serializer = CarSerializer(data=request.data)
if car_serializer.is_valid():
car_serializer.save()
return Response(car_serializer.data, status=status.HTTP_201_CREATED)
return Response(car_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
汽车模型有一个字段“制造日期”,我正试图打印该字段
使用ModelSerializer
创建CarSerializer
如果我使用curl
提交帖子时没有提及默认情况下application/x-www-form-urlencoded
的“内容类型”,我会看到请求对象是None
但是,这些选项支持所有3个解析器
curl -iX OPTIONS http://localhost:8000/cars/3
输出:
{
"name": "Car Detail",
"description": "",
"renders": [
"application/json",
"text/html"
],
"parses": [
"application/json",
"application/x-www-form-urlencoded",
"multipart/form-data"
]
}
我试图打印请求数据,但得到“无”
print(request.data.get('manufacturing_date'))
在cars_list
基于功能的视图中
当我将内容类型设置为application/json
使用django-1.10和djangorestframework-3.6.3
之后,我检查了文档
并补充说,
“parser_class”装饰器包括所有3个解析器,如下面的示例所示:
@parser_classes((JSONParser,FormParser, MultiPartParser))
但“表单编码”数据仍然不走运