分页器 Paginator使用自定义manager管理器
Posted 喵吉欧尼酱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分页器 Paginator使用自定义manager管理器相关的知识,希望对你有一定的参考价值。
分页使用以及异常处理
#_*_* coding: utf-8 _*_* from django.shortcuts import render import logging from django.conf import settings from models import * from django.core.paginator import Paginator,InvalidPage,EmptyPage,PageNotAnInteger # Create your views here. logger = logging.getLogger(‘blog.views‘) def global_setting(request): return { ‘SITE_NAME ‘: settings.SITE_NAME, ‘SITE_DESC‘ : settings.SITE_DESC } def index(request): try: #分类信息的获取(导航) #广告数据 #最新文章获取 article_list = Article.objects.all() paginator = Paginator(article_list,10) #每一页显示10条 try: page = int(request.GET.get(‘page‘,1)) #获取当前页,没有找到数据 就返回第一页 article_list = paginator.page(page) except (EmptyPage,InvalidPage,PageNotAnInteger): article_list = paginator.page(1) #出现异常就跳到第一页 except Exception as e: logger.error(e) return render(request,‘index.html‘,locals()) #local 当前所有的作用域
index下的分页
<div id="pagination"> <ul id="pagination-flickr"> {% if article_list.has_previous %} <li class="previous"><a href="?page={{ article_list.previous_page_number }}">«上一页</a></li> {% else %} <li class="previous-off">«上一页</li> {% endif %} <li class="active">{{ article_list.number }}/{{ article_list.paginator.num_pages }}</li> {% if article_list.has_next %} <li class="next"><a href="?page={{ article_list.next_page_number }}">下一页 »</a></li> {% else %} <li class="next-off">下一页 »</li> {% endif %} </ul> </div>
这种方式不推荐 直接见第二种
1、使用filter()进行查询
2、values(),distinct()的使用
3、django中直接使用sql的两种方式
SELECT DISTINCT DATE_FORMAT(date_publish, ‘%Y-%m‘) as col_date FROM blog_article ORDER BY date_publish
3.1、raw (异常:Raw query must include the primary key,返回结果必须包含主键)
3.2、excute
# Article.objects.values(‘date_publish‘).distinct() #去除重复,文章发布时间精确到秒 所有用着合格方法有点行不通 # cursor = connection.cursor() # cursor.execute("SELECT DISTINCT DATE_FORMAT(date_publish, ‘%%Y-%%m‘) as col_date FROM blog_article ORDER BY date_publish") # row = cursor.fetchall() # print row
以上是关于分页器 Paginator使用自定义manager管理器的主要内容,如果未能解决你的问题,请参考以下文章