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的分页器。

  • 相关阅读:
    Linux软件安装【JDK安装】
    接口自动化<009>:Python 接口自动化Mock使用
    接口自动化<008>:Python 自定义装饰器
    接口自动化<007>:Python 装饰器 @functools.wraps(func)
    接口自动化<006>:Python 装饰器 @retry
    接口自动化<005>:Python中*args 和 **kwargs的用法详解
    接口自动化<004>:json.dumps()、json.loads()与json.dump()、json.load()
    接口自动化<003>:request部分参数解析
    pycharm常用设置及快捷键说明
    接口自动化<002>:session.request 会话用作前后文管理器
  • 原文地址:https://www.cnblogs.com/yangshl/p/6505567.html
Copyright © 2011-2022 走看看