尝试测试用@api_view
修饰的api时,我会在手动测试时收到与响应不匹配的格式。我期待以下格式:
{
"field": "string value"
}
但是当我尝试发布(从测试中)时,我收到错误,因为格式似乎是这个:
{
"field": ["string_value"]
}
重现此问题:
class Tests(rest_framework.test.APITestCase):
def test_api(self):
...
response = self.client.post(url, data)
...
答案 0 :(得分:1)
您还可以使用以下方法在settings.py
中设置默认格式:
REST_FRAMEWORK = {
'TEST_REQUEST_DEFAULT_FORMAT': 'json',
...
}
...意味着您不必为每个请求进行设置。
答案 1 :(得分:0)
response = self.client.post(url, data, format='json')
请务必将其添加到您的代码中。 format='json'
部分很重要,因为我假设您的端点设置为接收它。您的端点不够聪明,无法识别您发送的格式,但它会识别它是否采用您将其设置为的格式:)您可以通过添加{来覆盖它{1}}或parser_class=(JSONParser,))
到@parser_classes((JSONParser,))
/ APIView
。
检查@apiview
文件中的这一行。
settings.py