В ListAPIView я пытаюсь перегрузить класс для рендеринга HTML и JSON, как показано ниже. Для рендеринга JSON ожидается предоставление serializer.data для Response для рендеринга вывода JSON. Для рендеринга HTML ожидается предоставление context_data в типе dict и имени шаблона для Response для рендеринга HTML.
Чтобы повторно использовать существующий код rest framework, я пытаюсь извлечь уже сериализованные данные rest framework и за один раз перегрузить данные ответа сериализованными данными и именем шаблона. В результате шаблон HTML не отображается должным образом из-за того, что предоставленные данные не относятся к типу dict.
class UserProfileList(generics.ListAPIView):
model = UserProfile
serializer_class = UserProfileSerializer
template_name = 'userProfile/list.html'
queryset = UserProfile.objects.all()
def list(self, request, *args, **kwargs):
response = super(generics.ListAPIView, self).list(request, *args, **kwargs)
return Response(response.data, template_name=self.template_name)
Интересно, есть ли расширение Response для создания объекта с сериализатором, данными в типе dict, шаблоном в качестве параметров, чтобы мы могли повторно использовать библиотеку без явной идентификации формата запроса. Любые намеки или предложения.
class UserProfileList(generics.ListAPIView):
model = UserProfile
serializer_class = UserProfileSerializer
template_name = 'userProfile/list.html'
queryset = UserProfile.objects.all()
def list(self, request, *args, **kwargs):
return Response(self.get_serilaizer(), self.get_context_data(), template_name=self.template_name)