首页 > 解决方案 > 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 视图中还是在我发送请求的方式中。任何建议表示赞赏!

标签: pythondjangopython-requests

解决方案


问题出在您的请求上,完全由这一行引起:

data = json.dumps({'data': 'test-value'})

你只是想要

data = {'data': 'test-value'}

POST 数据应该作为简单的字典发送,而不是 JSON 字符串 - 请参阅此处的文档和示例。


推荐阅读