【问题标题】:pagination not showing in Django分页未在 Django 中显示
【发布时间】:2018-03-22 05:57:54
【问题描述】:

嗨,我是 django 的新手,正在尝试设置分页,但它不起作用,我不知道为什么。这是我的项目代码。分页器正在工作,它限制为 5,但只是不显示页码。当我在地址栏中输入 ?page=2 时,它起作用了我做错了什么,请帮忙。

在我看来类

def post_list(request):
    queryset = Post.objects.all().order_by("-timestamp")
    paginator = Paginator(queryset, 5) # Show 5contacts per page
    page_request_var = "page"
    page = request.GET.get(page_request_var)
    try:
        queryset = paginator.page(page)
    except PageNotAnInteger:
    # If page is not an integer, deliver first page.
        queryset = paginator.page(1)
    except EmptyPage:
    # If page is out of range (e.g. 9999), deliver last page of results.
        queryset = paginator.page(paginator.num_pages)

    context = {
        "object_list": queryset,
        "page_request_var": page_request_var,

}
return render(request, "community.html", context)

在我的模板中

 <div class="container">
    {% for obj in object_list %}
    <div class="row">
        <div class="col-sm-4 col-md-4">
            <div class="post">
                <div class="post-img-content">
                    <img src="http://placehold.it/460x250/e67e22/ffffff&text=HTML5" class="img-responsive" />
                    <span class="post-title"><b><a href='{{ obj.get_absolute_url }}'>{{ obj.title }}</a></b><br />
                    </span>
                </div>
                <div class="content">
                    <div class="author">
                        By <b>changeme</b> |
                        <small> {{ obj.timestamp|timesince }} ago</small>
                    </div>
                    <div>
                        {{ obj.content|linebreaks|truncatechars:120 }}
                    </div>
                    <div>
                        <a href="{{ obj.get_absolute_url }}" class="btn btn-warning btn-sm">Read more</a>
                    </div>
                    <hr />
                </div>
            </div>
        </div>


    </div>
    {% endfor %}
    </div>
    <div class="container"> 

    <div class="pagination">
    <span class="step-links">
        {% if queryset.has_previous %}
            <a href="?{page_request_var}=1">&laquo; first</a>
            <a href="?{page_request_var}={{contacts.previous_page_number}}">previous</a>
        {% endif %}

        <span class="current">
            Page {{queryset.number}} of {{queryset.paginator.num_pages}}.
        </span>

        {% if queryset.has_next %}
            <a href="?{page_request_var}={{queryset.next_page_number}}">next</a>
            <a href="?{page_request_var}={{queryset.paginator.num_pages }}">last &raquo;</a>
        {% endif %}
    </span>
</div>
</div>

它只显示页面。 我究竟做错了什么 ?

【问题讨论】:

    标签: python django


    【解决方案1】:

    您在模板中使用了queryset,即使您的上下文中没有它。如您所见,您将queryset 设置为object_list

    context = {
        "object_list": queryset,
        "page_request_var": page_request_var,
    
    }
    

    只需在模板中使用object_list 而不是queryset

    或将object_list 更改为queryset

    context = {
        "queryset": queryset,
        "page_request_var": page_request_var,
    
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-09
      • 2013-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 2018-05-22
      • 1970-01-01
      • 2023-03-04
      相关资源
      最近更新 更多