![](/img/trans.png)
[英]Jquery pagination plugin - Next/Previous pagination links to show next/previous full group of page numbers
[英]Django rest framework: custom pagination next/previous links
在后端作为DEFAULT_PAGINATION_CLASS
我使用内置的PageNumberPagination
。 由于我将vue.js
与fetch
一起使用的原因,我不需要像django-rest-framework
提供的那样传递整个 url:
"count": 5,
"next": "http://127.0.0.1:8000/api/something/?page=2",
"previous": null
但只有基本网址之后的部分,例如:
/api/something/?page=2
或者只是页码,所以我可以建立自己的端点,例如:
if (!pageNumber) {
let endpoint = "/api/something/"
} else {
let endpoint = "/api/something/" + "?page=" + pageNumber;
}
使用引导程序分页组件使用django
和像vue
这样的 JavaScript 框架进行分页的正确方法是什么?
在视图中覆盖您的分页响应会改变您想要的任何内容。
def get_paginated_response(self, data):
return Response({
'links': {
'next': self.get_next_link(),
'previous': self.get_previous_link()
},
'current_page': int(self.request.query_params.get('page', 1)),
'total': self.page.paginator.count,
'per_page': self.page_size,
'total_pages': round(self.page.paginator.count/self.page_size, 1),
'data': data,
})
#it is your pagination.py
from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response
class MyFavoritePagination(PageNumberPagination):
def get_paginated_response(self, data):
nl = self.get_next_link()
pl = self.get_previous_link()
return Response({
'links': {
'next': nl[nl.find("/api") : ] if nl is not None else None,
'previous': pl[pl.find("/api") : ] if pl is not None else None
},
'count': self.page.paginator.count,
'results': data
})
我们可以将PageNumberPagination子类化并覆盖get_next_link()
和get_previous_link()
方法以添加与request
对象中的域不同的域:
url = self.request.build_absolute_uri('https://front-end-domain.com')`
来自build_absolute_uri()
文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.