我正在读一本关于django-rest-framework的书。
这是一个对我不起作用的特殊代码。请求数据字段为None
views.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)
汽车模型有一个字段' manufacturing_date'我正在尝试打印
使用ModelSerializer
创建CarSerializer
如果我使用curl
提交POST而未提及"内容类型"默认情况下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
之后我检查了文档 http://www.django-rest-framework.org/api-guide/parsers/ 并补充说 " parser_class"装饰器包括所有3个解析器,如下例所示:
@parser_classes((JSONParser,FormParser, MultiPartParser))
但仍然没有运气" form-urlencoded"数据