Django 获取通过 cURL 发布的 POST 数据

Django get POST data posted via cURL

我像这样使用 cURL 发送数据:-

curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" -d "{
  \"social_id\": \"string\",
  \"social_source\": \"FB/Gmail\",
  \"access_token\": \"string\"
}"

但我无法在我的视图中获取此数据:-

这是我的观点:-

class UserCreate(View):

    @method_decorator(csrf_exempt)
    def dispatch(self, request, *args, **kwargs):
        return super(UserCreate, self).dispatch(request, *args, **kwargs)

    def post(self, request):
        print request.POST['social_id']

我也试过 request.data。我做错了什么?

如果您要向服务器发布 JSON blob,那么您将没有任何可用的 POST 参数 - 只有当您以 application/x-www-form-urlencoded 格式提交数据时才会填充这些参数(例如,使用 HTML 形式)。

您可以按如下方式访问您的 JSON 数据(从视图函数内部):

import json
data = json.loads(request.body)
# Data is now a python dict, e.g.,
print data['social_id']