python - 如何在 Django 中实现分页
问题描述
我想在我的自定义 jsonresponse 函数中实现分页。但我不知道我将如何实现这一点。这是我的函数的代码。任何输入都会有很大帮助。谢谢你。
def json_response(data = {}, message = 'successful!', status = 'success', code = 200):
data_set = {}
status = 'success' if code == 200 else 'error'
if status == 'success':
data_set['code'] = code
data_set['status'] = status
data_set['message'] = message
# data_set['data'] = data.data
try:
data_set['data'] = data.data
except TypeError:
data_set['data'] = json.dumps(data)
except AttributeError:
data_set['data'] = data
else:
data_set['code'] = code
data_set['status'] = status
data_set['message'] = message
return JsonResponse(data_set, safe=False, status=code)
解决方案
如果您使用的是 Django Rest 框架,请查看框架提供的分页
https://www.django-rest-framework.org/api-guide/pagination/
例子:
# pagination.py
from rest_framework.pagination import PageNumberPagination
class CustomNumberPagination(PageNumberPagination):
page_size = 10 # Put the number of items you desire
# views.py
from somewhere.pagination import CustomNumberPagination
from somewhere.model import SomeModel
from somewhere.serializer import SomeSerializer
from rest_framework.generics import ListAPIView
class SomeView(generics.ListAPIView):
queryset = SomeModel.objects.all()
serializer_class = SomeSerializer
pagination_class = CustomNumberPagination
PS也可以像下面这样全局配置
# settings.py
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10, # Put the number of items you desire
}
推荐阅读
- variables - Grafana Loki 查询与多选变量的正则表达式插值
- python-3.x - 是否有 python 代码可以完全退出 termux 终端?
- google-chrome - 我们如何添加 .crx 文件并将 idm 手动集成到谷歌浏览器?
- c# - 如何从实体框架中的新记录中获取 Scope_Identity?
- c - char *fgets(char *str, int n, FILE *stream)
- html - 是否可以在轴和拉伸内容上对齐?
- java - Hibernate 嵌入式复合键 - EntityExistsException
- javascript - 检查单击的元素是否具有 jQuery 类
- pandas - 如何将 Pandas GroupBy 的发现应用于源数据
- arrays - 挣扎,求救