1
在ListAPIView中,我尝试重载用于呈现HTML和JSON的类,如下所示。对于JSON呈现,预计会提供serializer.data以响应呈现JSON输出。对于HTML呈现,预计会为响应呈现HTML提供字典类型和模板名称的context_data。用于渲染JSON和HTML的通用视图
要重新使用rest框架现有代码,我尝试提取其余框架已经序列化的数据,并一次性使用序列化数据和模板名称重载Response数据。由于提供的数据不是dict类型,结果是HTML模板未按预期呈现。
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)
不知响应扩展到与串行器构造对象,在字典类型的数据,模板作为参数使我们可以重新使用该库,而不显式地标识请求的格式。任何提示或建议。
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)
你解决它以某种方式? – Daviddd