Возврат 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})