【发布时间】:2020-04-15 15:02:43
【问题描述】:
我有一个 Django 视图,当用户执行某个任务时,外部 Python 微服务会检索一些数据,然后将一些数据发送到 Django 视图,该视图应该在模板上将其显示给用户。要发送我使用 Python 请求的数据,问题是 Django 拒绝了 Json 响应,原因有两个:1)未设置 CSRF 令牌 2)视图为 @login_required
这是我的看法:
@login_required
def myTestView(request):
if request.method == 'POST':
received_json_data=json.loads(request.body)
print(received_json_data)
print('received.')
这是我发送响应的方式:
import requests
req = requests.post('http://127.0.0.1:8000/myTestView/', json={"test": "json-test"})
print('SENT')
使用实际代码,我从 Django 收到此错误:
Forbidden (CSRF cookie not set.): /myTestView/
[2019-12-24 15:36:08,574] log: WARNING - Forbidden (CSRF cookie not set.): /myTestView/
我知道我可以使用@csrf_exempt,但由于我发送的数据是个人数据,我希望它尽可能安全,所以我需要找到一种方法来发送 CSRF 令牌。我需要做的第二件事是如何使用请求“登录”?
【问题讨论】:
-
这个answer 解释了它。您需要使用 python 请求的会话。
-
这能回答你的问题吗? Passing csrftoken with python Requests
标签: python django python-requests