gpt4 book ai didi

django - 如何在 DRF 的 APIClient() delete() 请求中设置 header ?

转载 作者:行者123 更新时间:2023-12-03 20:55:08 25 4
gpt4 key购买 nike

运行测试时,我想创建然后删除一些资源。访问目标服务器需要使用 token 进行身份验证。

from django.test import TestCase
from rest_framework.test import APIClient

(...)

class MyTest(TestCase):
def setUp(self):
self.client = APIClient()

def test_creation_and_deletion(self):
payload = {"key": "value"}

# This works, but it's handled by a custom create() method from views.py:
res = self.client.post(<url>, payload)
(...)

# This doesn't work, no custom delete() method is defined anywhere:
tar_headers = {"private-token": "<token>"}
res2 = self.client.delete(res.data["target_resource_url"], headers=tar_headers)

# Either this doesn't work:
self.client.headers.update(tar_headers)
res3 = self.client.delete(res.data["target_resource_url"])

打印 res2给出以下输出:

<HttpResponseNotFound status_code=404, "text/html">

调用 res3给出一个错误:

AttributeError: 'APIClient' object has no attribute 'headers'

发送至 target_resource_url 的删除请求从例如只要在 header 中给出 token , postman 就可以正常工作。

如何处理这个问题?

最佳答案

显然,无法使用 Private-Token 进行身份验证同时通过 APIClient() 请求删除.但相反,好老requests可以使用库:

import requests

HEADERS = {'PRIVATE-TOKEN': <TOKEN>}

res = ...
if "api_link" in res.data:
requests.delete(res.data["api_link"], headers=HEADERS)

关于django - 如何在 DRF 的 APIClient() delete() 请求中设置 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61212009/

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