【问题标题】:How do I decode a DRF response object's content to a Python String?如何将 DRF 响应对象的内容解码为 Python 字符串?
【发布时间】:2021-09-14 01:25:15
【问题描述】:

我在 Django Rest Framework 中有以下路线:

from rest_framework.viewsets import ModelViewSet
from rest_framework.renderers import JSONRenderer
from rest_framework.response import Response

class MainViewset(ModelViewSet):
    renderer_classes = [JSONRenderer]
    authentication_classes = []
    permission_classes = []

    def alive(self, request):
        return Response("API is Alive", 200)

我有一个调用此 API 路由的 Django 测试,需要 JSON 字符串:

def test_base_route(self):
    c = Client()
    response = c.get('/budget/alive')
    self.assertTrue(response.status_code == 200)
    self.assertEqual(response.content.decode("UTF-8"), "API is Alive")

但是,我收到以下错误:

    def test_base_route(self):
        c = Client()
        response = c.get('/budget/alive')
        self.assertTrue(response.status_code == 200)
>       self.assertEqual(response.content.decode("UTF-8"), "API is Alive")

E       AssertionError: '"API is Alive"' != 'API is Alive'
E       - "API is Alive"
E       ? -            -
E       + API is Alive

我发现这很奇怪,因为我解码了字符串。我知道去掉引号是一件简单的事情,但是在发送 JSON 时将单个字符串序列化为响应并在 DRF 中的响应内容中取回它的正确方法是什么?

【问题讨论】:

    标签: json django django-rest-framework


    【解决方案1】:

    对于这种情况,您可以使用.data

    self.assertEqual(response.data, "API is Alive")
    

    【讨论】:

      猜你喜欢
      • 2023-03-07
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-06
      • 1970-01-01
      相关资源
      最近更新 更多