我正在尝试使用curl进行POST:
curl --dump-header - -H "Content-Type: application/json" -X POST --data '{"item_id": "1"}' http://www.mylocal.com:8000/api/1/bookmarks/
但是,request.POST始终为空。
以下是我的ModelResource代码:
class BookmarkResource(ModelResource):
class Meta:
queryset = Bookmark.objects.all()
resource_name = 'bookmarks'
fields = ['id', 'tags']
allowed_methods = ['get', 'post', 'delete', 'put']
always_return_data = True
authorization= Authorization()
include_resource_uri = False
def determine_format(self, request):
return "application/json"
def obj_create(self, bundle, **kwargs):
request = bundle.request
try:
payload = simplejson.loads(request.POST.keys()[0])
except:
payload = simplejson.loads(request.POST.keys())
有人知道我错过了什么吗?
提前致谢。
答案 0 :(得分:42)
从Django 1.5开始,POST不再包含非表单数据。他们现在在request.body。
https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.POST
答案 1 :(得分:0)
我不是cURL的期望,但是从我的--data
Chrome浏览器工具中复制POST请求如下所示:
--data "foo=bar&bar=foo"
所以看起来您可能想要将命令更改为:
--data item_id="1"
旁注: 我强烈建议您使用以下任一Chrome应用程序来发出HTTP请求:
Advanced REST client或Dev HTTP Client
此外,如果您可以在浏览器中进行呼叫(表单提交等),那么在Chrome开发工具网络面板中,您可以将请求复制为cURL命令(右键单击它)