• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共43篇

    python3.X - Web - Django3.2.9

关闭

返回栏目

关闭

返回python3.X - Web - Django3.2.9栏目

30 - 表模型 - django.core.paginator - 分页

作者:

贺及楼

成为作者

更新日期:2024-02-18 09:50:42

paginator分页

index.py

  1. import inspect
  2. from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage
  3. class Table_M():
  4. def __init__(self):
  5. self.class_name = "Table_M()"
  6. def to_json(self, data, info="转成json"):
  7. try:
  8. return_data = {
  9. "id":data.id,
  10. "name":data.name,
  11. "date":data.date
  12. }
  13. return return_data
  14. except Exception as e:
  15. logger.error(info+'数据库操作失败: '+ self.class_name + inspect.currentframe().f_code.co_name + str(e))
  16. raise
  17. def index(self,id,page,page_size):
  18. infoList=Info.objects.filter(user_id=id).order_by('id')
  19. paginator=Paginator(infoList,page_size)
  20. try:
  21. pageInfo=paginator.page(page)
  22. except PageNotAnInteger:
  23. pageInfo=paginator.page(1)
  24. except EmptyPage:
  25. pageInfo=paginator.page(paginator.num_pages)
  26. else:
  27. return_data = list(map(self.to_json, pageInfo))
  28. return_data = {
  29. "data":return_data,
  30. "page":page,
  31. "num_pages":paginator.num_pages, # 总页数
  32. "count":paginator.count # 总数据条数
  33. }
  34. return return_data

index.html

  1. <div>
  2. {% for list in pageInfo.object_list %}
  3. <div>
  4. <img src="{{ list.photo.url }}">
  5. {% if list.title %}
  6. <h4>{{ list.title }}</h4>
  7. {% else %}
  8. <h4>相册图片</h4>
  9. {% endif %}
  10. {% if list.introduce %}
  11. <span>{{ list.introduce }}</span>
  12. {% else %}
  13. <span>暂无介绍</span>
  14. {% endif %}
  15. </div>
  16. {% endfor %}
  17. </div>
  18. <div>
  19. {% if pageInfo.has_previous %}
  20. <a href="{% url 'album' id pageInfo.previous_page_number %}">上一页</a>
  21. {% endif %}
  22. {% for page in pageInfo.paginator.page_range %}
  23. {% if pageInfo.number == page %}
  24. <a href="javascript:;"> {{ page }}</a>
  25. {% else %}
  26. <a href="{% url 'album' id page %}"> {{ page }}</a>
  27. {% endif %}
  28. {% endfor %}
  29. {% if pageInfo.has_next %}
  30. <a href="{% url 'album' id pageInfo.next_page_number %}">下一页</a>
  31. {% endif %}
  32. </div>
  1. has_next/previous()判断当前页是否存在下一页/上一页
  2. has_other_pages()判断当前页是否具有上一页或者下一页
  3. next_page_number()如果当前页存在下一页则返回下一页的页数,否则抛出EmptyPage()
  4. previous_page_number