首页 > 解决方案 > 如何将 DRF 响应对象的内容解码为 Python 字符串?

问题描述

我在 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 中的响应内容中的正确方法是什么?

标签: jsondjangodjango-rest-framework

解决方案


您可以.data在这种情况下使用:

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

推荐阅读