gpt4 book ai didi

python - 使用 Django RequestFactory 而不是表单数据的 POST 文档

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:51 25 4
gpt4 key购买 nike

我想构建一个测试中间件的请求,但我不希望 POST 请求总是假设我正在发送表单数据。有没有办法在从 django.test.RequestFactory 生成的请求上设置 request.body

即,我想做类似的事情:

from django.test import RequestFactory
import json

factory = RequestFactory(content_type='application/json')
data = {'message':'A test message'}
body = json.dumps(data)
request = factory.post('/a/test/path/', body)

# And have request.body be the encoded version of `body`

上面的代码将无法通过测试,因为我的中间件需要将数据作为 request.body 中的文档而不是 request.POST 中的表单数据传递。但是,RequestFactory 始终将数据作为表单数据发送。

我可以用 django.test.Client 做到这一点:

from django.test import Client
import json

client = Client()
data = {'message':'A test message'}
body = json.dumps(data)
response = client.post('/a/test/path/', body, content_type='application/json')

我想用 django.test.RequestFactory 做同样的事情。

最佳答案

RequestFactory 内置了对 JSON 负载的支持。您不需要先转储数据。但是您应该将内容类型传递给 post,而不是实例化。

factory = RequestFactory()
data = {'message':'A test message'}
request = factory.post('/a/test/path/', data, content_type='application/json')

关于python - 使用 Django RequestFactory 而不是表单数据的 POST 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49306177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com