首页 > 解决方案 > 如何解决 AssertionError: .accepted_renderer not set on Response in django and ajax

问题描述

当我在 ajax 中调用 Django url 时,出现以下错误

AssertionError: .accepted_renderer 未在响应上设置。

这是我的代码:

function download(){

    $.ajax({
        url: "/mdm/exam_app/get_assessment_count/",
        dataType: 'json',
        data:{
        },
        type:'GET',
        success: function (data) {
          alert("inside the success method");
    },
        error: function(){
          console.log("error");
          }        
      });
}

标签: ajaxdjango

解决方案


如果您使用的是基于函数的视图,那么这个问题通常意味着您忘记将@api_view@renderer_classes装饰器添加到您的视图中。

例子:

from rest_framework.decorators import api_view, renderer_classes
from rest_framework.renderers import JSONRenderer, TemplateHTMLRenderer

@api_view(('GET',))
@renderer_classes((TemplateHTMLRenderer, JSONRenderer))
def get_assessment_count(request):
    [...]
    data = {'count': queryset.count()}
    return Response(data, template_name='assessments.html')

推荐阅读