You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Django Rest Framework中的AssertionError: .accepted_renderer未设置问题

解决AssertionError: .accepted_renderer not set on Response错误

问题出在getEmployees函数上——它没使用Django REST Framework(DRF)的@api_view装饰器。DRF的Response对象得靠API视图提供的上下文才能自动设置accepted_renderer,普通Django视图直接返回Response会缺失这个必要配置,进而触发错误。

修复方案

给getEmployees函数加上@api_view装饰器,按需添加@renderer_classes(如果需要指定渲染格式,也可以用DRF默认配置)。修改后的代码如下:

from rest_framework.response import Response
from rest_framework.decorators import api_view, renderer_classes
from rest_framework.renderers import JSONRenderer, TemplateHTMLRenderer
from myapp.models import employees
from .serializers import EmployeeSerializer

@api_view(('GET',))
@renderer_classes((TemplateHTMLRenderer, JSONRenderer))
def getData(request):
    employees = {'name':'Bill', 'location':'Kolkata' }
    return Response(employees)

@api_view(('GET',))
# 要是只需要返回JSON,可省略下面的装饰器用DRF默认配置;需要和getData一致的渲染格式就加上
@renderer_classes((JSONRenderer,))
def getEmployees(request):
    employee_list = employees.objects.all()
    serializer = EmployeeSerializer(employee_list, many = True)
    return Response(serializer.data)

补充说明

  • @api_view是DRF标记API视图的装饰器,会给视图添加必要的上下文处理逻辑,保证Response能正确初始化渲染器。
  • 若你的API仅需返回JSON格式,完全可以省略@renderer_classes,DRF默认会使用JSONRenderer。

内容的提问来源于stack exchange,提问作者Aditya Bikram Arandhara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:50:25