brs*_*gic 4 django pagination django-rest-framework
Django Rest Framework generic.ListAPIView 将 next&prev 参数设置为绝对 URL。但我需要将它们设置为相对 URL。
我需要返回 JSON 如下
# {'count': 4, 'next': '?page=2', 'previous': None, 'results': [u'john', u'paul']}
Run Code Online (Sandbox Code Playgroud)
不是这样的
# {'count': 4, 'next': 'http://testserver/foobar?page=2', 'previous': None, 'results': [u'john', u'paul']}
Run Code Online (Sandbox Code Playgroud)
这是 @iankit 建议的实现:
from rest_framework.utils.urls import remove_query_param, replace_query_param
class LeadListPagination(PageNumberPagination):
page_size = 15
def get_next_link(self):
if not self.page.has_next():
return None
url = self.request.get_full_path()
page_number = self.page.next_page_number()
return replace_query_param(url, self.page_query_param, page_number)
def get_previous_link(self):
if not self.page.has_previous():
return None
url = self.request.get_full_path()
page_number = self.page.previous_page_number()
if page_number == 1:
return remove_query_param(url, self.page_query_param)
return replace_query_param(url, self.page_query_param, page_number)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2056 次 |
| 最近记录: |