在django测试客户端中访问raw_post_data

发布于 2024-12-11 11:43:43 字数 211 浏览 0 评论 0原文

标题几乎说明了一切:我在几个视图中使用 raw_post_data,因此我需要测试客户端正确授予对其的访问权限。

我从模拟请求中复制了 raw_post_data 字符串,将其传递给 json.loads(),然后使用生成的字典作为测试客户端的 POST 数据。然后,我将内容类型设置为“application/json” - 这会导致 raw_post_data 出现,但它与模拟请求不同。

The title pretty much says it all: I use raw_post_data in a couple of views, and thus I need the test client to properly grant access to it.

I have copied the raw_post_data string, from a mock request, passed it to json.loads(), and then used the resulting dict as the POST data for the test client. Then, I set the content type to "application/json" - this causes raw_post_data to appear, but it is not the same raw_post_data as the mock request.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

独享拥抱 2024-12-18 11:43:43

当您在测试客户端中更改内容类型时,数据参数不再解析为字典,而是直接发送。尝试直接将 JSON 字符串作为数据参数复制到您的发布请求中,您应该在应用程序的 raw_post_data 中收到它。

When you change the content type in the test client, the data parameter is not parsed as a dictionary anymore but sent directly. Try copyin your JSON string directly as the data parameter to your post request, you should receive it in raw_post_data in your application.

谁的年少不轻狂 2024-12-18 11:43:43

只需按照以下步骤操作即可:
   1.将数据属性设置为您的字符串
   2.然后将 content_type 属性设置为 application/octet-stream

    payload = {'k1':'v1'}
    data = json.dumps(payload)
    response = self.client.post(url, data=data, content_type='application/octet-stream', **self.auth_headers)

Just need to follow the steps as below:
    1. set the data attribute to your string.
    2. then set the content_type attribute to application/octet-stream.

    payload = {'k1':'v1'}
    data = json.dumps(payload)
    response = self.client.post(url, data=data, content_type='application/octet-stream', **self.auth_headers)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文