- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我刚刚更新到 Django Rest Framework 3.1,似乎一切都崩溃了。
在我的 serializers.py
我有以下代码:
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = task
exclude = ('key', ...)
class PaginatedTaskSerializer(pagination.PaginationSerializer):
class Meta:
object_serializer_class = TaskSerializer
这工作得很好。现在随着 3.1 的发布,我找不到关于如何做同样事情的示例,因为 PaginationSerializer
不再存在。我试图继承 PageNumberPagination
并使用其默认的 paginate_queryset
和 get_paginated_response
方法,但我无法再将它们的结果序列化。
换句话说,我的问题是我不能再这样做了:
class Meta:
object_serializer_class = TaskSerializer
有什么想法吗?
提前致谢
最佳答案
我想我想通了(至少在大多数情况下):
我们从一开始就应该使用的是:
只需使用内置分页器并将您的 views.py
更改为:
from rest_framework.pagination import PageNumberPagination
class CourseListView(AuthView):
def get(self, request, format=None):
"""
Returns a JSON response with a listing of course objects
"""
courses = Course.objects.order_by('name').all()
paginator = PageNumberPagination()
# From the docs:
# The paginate_queryset method is passed the initial queryset
# and should return an iterable object that contains only the
# data in the requested page.
result_page = paginator.paginate_queryset(courses, request)
# Now we just have to serialize the data just like you suggested.
serializer = CourseSerializer(result_page, many=True)
# From the docs:
# The get_paginated_response method is passed the serialized page
# data and should return a Response instance.
return paginator.get_paginated_response(serializer.data)
对于所需的页面大小,只需在 settings.py
中设置 PAGE_SIZE
:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 15
}
您现在应该已经准备好响应正文中存在的所有选项(计数、下一个和返回链接),就像更新之前一样。
但是还有一件事仍然困扰着我:我们也应该能够得到新的 html pagination controls由于某种原因,现在缺少...
我绝对可以在这方面使用更多建议...
关于python - Django Rest Framework 3.1 打破了 pagination.PaginationSerializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29128225/
我正在使用 Django REST Frameworks Paginator 对从数据库读取的 JSON 响应进行分页。 我当前的serializers.py 文件如下所示: class Countr
我刚刚更新到 Django Rest Framework 3.1,似乎一切都崩溃了。 在我的 serializers.py 我有以下代码: class TaskSerializer(serialize
我是一名优秀的程序员,十分优秀!