python - Django视图不接收Json数据?
问题描述
使用一个简单的 Python 脚本,我想用 Python-Requests 向 Django 视图发送一个请求。Django 视图应该接收请求中的 json 数据并将其打印到我的控制台;这是我尝试过的:
这就是我发送请求的方式:
url = 'http://127.0.0.1:8000/myview/view'
client = requests.session()
csrftoken = requests.get(url).cookies['csrftoken']
data = json.dumps({'data': 'test-value'})
header = {'X-CSRFToken': csrftoken}
cookies = {'csrftoken': csrftoken}
resp = requests.post(url, data=data, headers=header, cookies=cookies)
这就是 Django 视图接收它的方式:
def myview(request):
if request.method == 'POST':
data = request.POST.get('data')
print(data)
print('received.')
response = HttpResponse(get_token(request))
return response
我当前代码的问题是print(data)
会抛出以下输出:
None
received.
[06/Jan/2020 21:23:57] "POST /myview/view HTTP/1.1" 200 64
因此,test-value
它不打印任何内容,而不是打印。我不明白错误是在我的 Django 视图中还是在我发送请求的方式中。任何建议表示赞赏!
解决方案
问题出在您的请求上,完全由这一行引起:
data = json.dumps({'data': 'test-value'})
你只是想要
data = {'data': 'test-value'}
POST 数据应该作为简单的字典发送,而不是 JSON 字符串 - 请参阅此处的文档和示例。
推荐阅读
- python - URL映射到django 1.11中的视图
- python - Python Lambda 函数访问认知“子”uuid
- android - 为什么 Gravity.FILL_HORIZONTAL 在 Wear OS 中只填充一半屏幕?
- python-3.x - **Kwargs 中的输出格式
- javascript - 为什么 javascript polyfill 执行会出错?
- amazon-web-services - 如何在 http 中对源进行云端 https 调用
- python - 如何通过 Python API 为 Google 电子表格中的单元格背景着色
- amazon-web-services - 无法在 Python 中连接到公共 RDS 实例
- html - 单击 URL 并将其下载为 HTML,而不是访问它
- angular - Angular : 发出 post 请求后,如何触发 get 请求并使用修改后的值更新组件?