Как устранить AssertionError: .accepted_renderer not set on Response в Django Rest Framwork

В то время как я вызываю Django url, я получаю ошибку:

AssertionError: .accepted_renderer not set on Response.

Мой код:

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)

def getEmployees(request):
    employee_list = employees.objects.all()
    serializer = EmployeeSerializer(employee_list, many = True)
    return Response(serializer.data)

Эта ошибка обычно указывает на то, что вы пытаетесь вернуть ответ из вашего представления Django, который не был обработан рендерером. В Django рендереры используются для преобразования данных в ответе в формат, который может быть возвращен клиенту, например, JSON или XML.

Чтобы исправить эту ошибку, необходимо указать рендерер для ответа. Вы можете сделать это, установив атрибут .accepted_renderer на объекте ответа, или используя декоратор @api_view и указав рендерер в аргументе renderer_classes.

Вот пример того, как использовать декоратор @api_view для указания рендерера для представления Django:

from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.renderers import JSONRenderer

@api_view(["GET"], renderer_classes=[JSONRenderer])
def my_view(request):
    data = {"hello": "world"}
    return Response(data)

В этом примере декоратор @api_view используется для указания того, что представление должно принимать только GET-запросы, а ответ должен быть отрисован с помощью класса JSONRenderer. Это гарантирует, что ответ будет правильно отформатирован, прежде чем он будет возвращен клиенту.

[На этот вопрос ответил OpenAPI]

Между декораторами @api_view не должно быть пробелов, а представления getData и getEmployee должны иметь свои отдельные декораторы

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

@api_view(('GET',))
@renderer_classes((TemplateHTMLRenderer, JSONRenderer))
def getEmployees(request):
    employee_list = employees.objects.all()
    serializer = EmployeeSerializer(employee_list, many = True)
    return Response(serializer.data)
Вернуться на верх