Django类视图使用DRF Response报错:.accepted_renderer not set
问题原因及解决办法
这个报错.accepted_renderer not set on Response的核心原因是:你使用了Django REST Framework(DRF)的Response类,但你的类视图并没有继承DRF提供的视图基类,导致Response缺少必要的上下文支持。
DRF的Response不是普通的DjangoHttpResponse,它需要依赖DRF视图基类(比如APIView)提供的渲染器、内容协商等机制来正常工作。如果你的类视图只是继承了Django原生的View,返回Response时就会因为没有初始化渲染器相关的属性而报错。而原生HttpResponse不需要这些额外上下文,所以能正常运行。
解决步骤
- 确保你的类视图继承自DRF的
APIView(或其子类,比如GenericAPIView、ListAPIView等),而不是Django原生的View。 - 导入
APIView:from rest_framework.views import APIView - 修改视图类定义,示例如下:
from rest_framework.views import APIView from rest_framework.response import Response from .models import User from .serializers import UserSerializer class UserListView(APIView): def get(self, request): users = User.objects.all() serializer = UserSerializer(users, many=True) return Response(serializer.data)
这样修改后,DRF的视图基类会自动处理渲染器的初始化,Response就能正常工作了。
内容的提问来源于stack exchange,提问作者Süleyman Eminbəyli
相关产品推荐
相关产品推荐

