Django REST Framework - 让 ListAPIView 的行为类似于纯 ListView
Django REST Framework - let ListAPIView behave similar to pure ListView
我试图说服 ListAPIView
以纯 Django 中的 ListView
的方式行事(这意味着,呈现带有 object_list
变量的模板,可能是一些分页的东西,等等)。这是我试过的:
class UserListView(ListAPIView):
permission_classes = (AllowAny, )
queryset = User.objects.all()
serializer_class = UserListSerializer
renderer_classes = (TemplateHTMLRenderer, )
template_name = 'user/list.html'
假设 User
是内置的 Django 用户模型,UserListSerializer
是 ModelSerializer
和 fields = "__all__"
并且模板只包含一个 for 循环 object_list
显示所有用户。
当我尝试时,出现以下错误:
TypeError: context must be a dict rather than ReturnList.
我一定是做错了什么,我相信我一定有办法利用通用性,但我不知道怎么做。
序列化程序需要 dict
格式的上下文,但您提供的 ReturnList
是由 renderer_classes 生成的。
如果你需要 ListView
我没听懂,那你为什么要使用 ListAPIView
?您显然正在渲染模板 JSON。因此,请说明您需要这样做的具体原因,以便任何人都能理解您想要实现的目标。
好吧,我刚刚踏入陷阱。如果我启用分页,一切都会按预期工作,e。 G。将其添加到我的设置中:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 100
}
我永远猜不到这会是问题所在。
我试图说服 ListAPIView
以纯 Django 中的 ListView
的方式行事(这意味着,呈现带有 object_list
变量的模板,可能是一些分页的东西,等等)。这是我试过的:
class UserListView(ListAPIView):
permission_classes = (AllowAny, )
queryset = User.objects.all()
serializer_class = UserListSerializer
renderer_classes = (TemplateHTMLRenderer, )
template_name = 'user/list.html'
假设 User
是内置的 Django 用户模型,UserListSerializer
是 ModelSerializer
和 fields = "__all__"
并且模板只包含一个 for 循环 object_list
显示所有用户。
当我尝试时,出现以下错误:
TypeError: context must be a dict rather than ReturnList.
我一定是做错了什么,我相信我一定有办法利用通用性,但我不知道怎么做。
序列化程序需要 dict
格式的上下文,但您提供的 ReturnList
是由 renderer_classes 生成的。
如果你需要 ListView
我没听懂,那你为什么要使用 ListAPIView
?您显然正在渲染模板 JSON。因此,请说明您需要这样做的具体原因,以便任何人都能理解您想要实现的目标。
好吧,我刚刚踏入陷阱。如果我启用分页,一切都会按预期工作,e。 G。将其添加到我的设置中:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 100
}
我永远猜不到这会是问题所在。