python - 如何在 Django 1.6 中使用 HTTP POST 请求接收 json 数据?

标签 python django django-views http-post python-requests

我在学习Django 1.6.
我想发布一些JSON使用 HTTP POST 请求,我正在使用 Django 来完成这项任务以进行学习。
我尝试使用 request.POST['data']request.raw_post_datarequest.body 但没有一个对我有用。
我的views.py是

import json
from django.http import StreamingHttpResponse
def main_page(request):
    if request.method=='POST':
            received_json_data=json.loads(request.POST['data'])
            #received_json_data=json.loads(request.body)
            return StreamingHttpResponse('it was post request: '+str(received_json_data))
    return StreamingHttpResponse('it was GET request')

我正在使用 requests 发布 JSON 数据模块。

import requests  
import json
url = "http://localhost:8000"
data = {'data':[{'key1':'val1'}, {'key2':'val2'}]}
headers = {'content-type': 'application/json'}
r=requests.post(url, data=json.dumps(data), headers=headers)
r.text

r.text 应该打印该消息并发布数据,但我无法解决这个简单的问题。请告诉我如何在 Django 1.6 中收集发布的数据?

最佳答案

您在这里混淆了表单编码和 JSON 数据。 request.POST['foo'] 用于表单编码数据。您发布的是原始 JSON,因此您应该使用 request.body

received_json_data=json.loads(request.body)

关于python - 如何在 Django 1.6 中使用 HTTP POST 请求接收 json 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24068576/

相关文章:

python - 查找文本中单词列表中单词的出现次数

python - 如何在 Windows 中用 python 创建服务?

sql - 正确转义原始 Django SQL 查询中的字符串

python - Django rest 框架验证 POST 请求参数的最佳方式

python - 如何修改 Python 'default' 字典,使其始终返回默认值

python - 尝试理解这段 Matlab 代码

python - Django 每个模型都必须有一个 date_created 和 date_modified 字段

python - 在 Django 管理中添加和更改 View 的不同表单字段

python - Django 更新表

django - 从 Django View 中的多个表中获取数据