zoukankan      html  css  js  c++  java
  • Blog_Django(六):blog分页列出文章

    在blog中,列出所有文章,需要分如下几步:

    第一步:视图函数

    from django.core.paginator import Paginator, InvalidPage, EmptyPage, PageNotAnInteger
    
    
    
    def index(request):
        try:
            f = open("a.txt", "r")
        except Exception as e:
            logger.error(e)
    
        category_list = Category.objects.all()
    
        # 文章分页
        all_article = Article.objects.all()
        paginator = Paginator(all_article, per_page=2)
        page_index = int(request.GET.get('page', 1))
        try:
            article_list = paginator.page(page_index)
        except (InvalidPage, EmptyPage, PageNotAnInteger) as e:
            article_list = paginator.page(1)
        
        return render(request, "index.html", {"category_list":category_list, "article_list":article_list})
    views.py

    django自带分页器Paginator,需要两个参数:数据列表,每页大小。

    第二步:页面

    {% extends "main/base.html" %}
    {% load staticfiles %}
    {% block content %}
        <div class="topnews">
            <h2>最新文章</h2>
            {% for article in article_list %}
                <div class="blogs">
                    <ul>
                        <h3><a href="/">{{ article.title }}</a></h3>
                        <p>{{ article.description }}</p>
                        <p class="autor">
                            <span class="lm f_l">
                                <a href="/">
                                    {% for tag in article.tag.all %}{{ tag.name }}&nbsp;{% endfor %}
                                </a>
                            </span>
                            <span class="dtime f_l">{{ article.date_publish|date:'Y-m-d' }}</span>
                            <span class="viewnum f_r">浏览(<a href="/">{{ article.click_count }}</a></span>
                            <span class="pingl f_r">评论(<a href="/">{{ article.comment_set.count }}</a></span></p>
                    </ul>
                </div>
            {% endfor %}
        </div>
        {#分页#}
        <div id="pagination">
            <ul id="pagination-flickr">
                {% if article_list.has_previous %}
                    <li class="previous"><a href="?page={{ article_list.previous_page_number }}">&laquo;上一页</a></li>
                {% else %}
                    <li class="previous-off">&laquo;上一页</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 }}">下一页 &raquo;</a></li>
                {% else %}
                    <li class="next-off">下一页 &raquo;</li>
                {% endif %}
            </ul>
        </div>
    {% endblock %}
    index.html

    重点使用了django的分页器。

  • 相关阅读:
    HDU 1950 Bridging signals
    HDU 1025 (LIS+二分) Constructing Roads In JGShining's Kingdom
    HDU 1160 FatMouse's Speed
    HDU 1257 最少拦截系统
    HDU 1574 RP问题
    解同余式ax ≡ c(mod m)
    拓展欧几里得算法及代码实现
    百练 1088 滑雪
    [再做01背包] POJ 3624 Charm Bracelet
    百练 2755 神奇的口袋
  • 原文地址:https://www.cnblogs.com/yangshl/p/6505567.html
Copyright © 2011-2022 走看看