Возврат JSON или шаблона на основе параметра запроса с помощью django restframework

'''

class ProfileList(APIView): 
    renderer_classes = [TemplateHTMLRenderer]
    template_name = 'profile_list.html'

    def get(self, request):
        queryset = Profile.objects.all()
        return Response({'profiles': queryset})

'''

В соответствии с документацией, вышеупомянутый View рендерит и возвращает html-шаблон. Однако, как управлять представлением, чтобы оно возвращало json или html шаблон в представлении? Например, при указании параметра ?type=html возвращается html-страница, а при ?type=json - json-данные.

Просто добавьте это условие (также добавьте *args, **kwargs к методу get - хорошая практика на будущее).

from django.http import JsonResponse

def get(self, request, *args, **kwargs):
    queryset = Profile.objects.all()
    if (response_type := request.GET.get("type")) and response_type == "json":
        return JsonResponse({'profiles': queryset})
    return Response({'profiles': queryset})
Вернуться на верх