【问题标题】:Django rest framework request data is always nullDjango rest 框架请求数据始终为空
【发布时间】:2017-07-31 10:35:27
【问题描述】:

我只是想尝试简单的Django rest框架代码,我使用API​​VIEW并通过浏览器发布数据。

代码:

class GetData(APIView):

    def post(self, request, format=None):
        if request.method == 'POST':
            item_id = request.data.get('item_id')
            return Response({"return": "OK ","item_id":item_id})
        else:
            return Response({"return": "NOT OK "})

无论我“发布”什么,上面的代码都应该回显 item_id。但结果始终为空。

发布数据:

{ "item_id" : "3456787"}

结果:

{"item_id":null,"return" :"OK "}

我不明白我哪里出错了。上面的代码在我的 Loaclhost 中运行良好,但在生产服务器中无法运行。

【问题讨论】:

  • 您发布的数据是什么?标题是什么?
  • 我正在使用可浏览的 api。使用 chrome 浏览器发布数据。 mediaType 是application/json
  • Content-Type: application/json
  • request.body里的数据不是吗?如果是字典: request.body.get('item_id') ?
  • @DA-- 不,他正在使用解析 request.body 并将其放入 request.data 的 DRF

标签: django python-2.7 django-rest-framework


【解决方案1】:

从一个使用最新 django 和 DRF 的新项目开始,并更改了以下内容

app1/views.py

class GetData(APIView):
def post(self, request, format=None):
    if request.method == 'POST':
        item_id = request.data.get('item_id')
        return Response({"return": "OK ","item_id": item_id})
    else:
        return Response({"return": "NOT OK "})

仅更改 proj/settings.py

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework'
]

app/urls.py

from django.conf.urls import url
from django.contrib import admin
from app1.views import GetData
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^test/', GetData.as_view())
]

查询:

curl -X Post http://localhost:8000/test/ -H "Content-Type: application/json" -d '{ "item_id":"3456787"}'

结果:

{"item_id":"3456787","return":"OK "}%

【讨论】:

  • 正如我在问题前面提到的。它在 localhost 中运行良好,但在生产服务器中运行良好。我在这里github.com/tomchristie/django-rest-framework/issues/3623 发现了类似的问题。这是apache配置的问题。但链接中没有正确的解决方案
  • @Naroju,我遇到了同样的问题,因为它在本地可以正常工作,而您在 iis 服务器中的问题也一样。
猜你喜欢
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 2017-05-22
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多