我正在尝试使用 Django Rest Framework 创建一个带有 rest api 的新模型。
这是我的序列化器:
class FooSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Foo
这是我的观点.py
@api_view(['POST', 'GET','DELETE','OPTIONS'])
def foos(request):
"""
API endpoint to create, delete and get foos
"""
authentication_classes = (authentication.TokenAuthentication,)
permission_classes = (permissions.IsAuthenticated,)
model = Foo
serializer_class = FooSerializer
if request.method == "POST":
data = JSONParser().parse(request)
serializer = FooSerializer(data=data)
if serializer.is_valid():
serializer.save()
return JSONResponse(serializer.data, status=201)
else:
return JSONResponse(serializer.errors, status=400)
return Response(serializer.data)
然后在我的主干视图中:
foo = new Foo
name:'Bla di bla di'
foo.save()
注意到除了 OPTIONS 失败之外,没有 POST。
OPTIONS http://127.0.0.1:8080/api/foo/
我不知道该怎么做,如果我遗漏了帖子的 contentType:"application/json" 部分(手动发布时),这不会发生
它适用于我的终端中的 CURL。
在我的 chrome Inspector > Network 我得到这个:
Request URL:http://127.0.0.1:8080/api/foo/
Request Headersview source
Access-Control-Request-Headers:accept, origin, authorization, content-type
Access-Control-Request-Method:POST
Cache-Control:no-cache
Origin:http://localhost:8000
Pragma:no-cache
请求,响应为空。
编辑
我用 Rest APi 关闭了服务器,发生了完全相同的事情!所以这告诉我一件事,它与服务器无关。一定是AJAX的东西。
我完全糊涂了:-(