首页 > 解决方案 > 分页停止在 Django 应用程序上工作

问题描述

我是 Django 的新手,我刚刚拿起一本书“Django 2 by example”。我遵循了教程中的所有代码,但是有些东西打破了分页,我只是不知道它是什么。我得到“Page of .”的输出。而不是“第 1 页,共 1 页。在我的博客的底部。在下面找到我的一些代码:。PS:请忽略代码中的缩进。谢谢。

视图.py

 from django.shortcuts import render, get_object_or_404
 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
 from django.views.generic import ListView
 from django.core.mail import send_mail
 from django.db.models import Count
 from taggit.models import Tag
 from .models import Post, Comment
 from .forms import EmailPostForm, CommentForm



 def post_list(request, tag_slug=None):
    object_list = Post.published.all()
    tag = None`

    if tag_slug:
    tag = get_object_or_404(Tag, slug=tag_slug)
    object_list = object_list.filter(tags__in=[tag])

    paginator = Paginator(object_list, 3) # 3 posts in each page
    page = request.GET.get('page')
    try:
         posts = paginator.page(page)
    except PageNotAnInteger:
    # If page is not an integer deliver the first page
         posts = paginator.page(1)
    except EmptyPage:
    # If page is out of range deliver last page of results
         posts = paginator.page(paginator.num_pages)
    return render(request,
              'blog/post/list.html',
              {'page': page,
               'posts': posts,
               'tag' : tag})

列表.html

{% extends "blog/base.html" %}

{% block title %}My Blog{% endblock %}

{% block content %}
 <h1>My Blog</h1>
 {% if tag %}
 <h2>Posts tagged with "{{ tag.name }}"</h2>
 {% endif %}
 {% for post in posts %}
 <h2>
  <a href="{{ post.get_absolute_url }}">
    {{ post.title }}
  </a>
 </h2>
 <p class="tags">
  Tags:
  {% for tag in post.tags.all %}
    <a href="{% url "blog:post_list_by_tag" tag.slug %}">
      {{ tag.name }}
    </a>
    {% if not forloop.last %}, {% endif %}
  {% endfor %}
</p>
<p class="date">
  Published {{ post.publish }} by {{ post.author }}
</p>
{{ post.body|truncatewords:30|linebreaks }}
 {% endfor %}
 {% include "pagination.html" with page=page_obj %}
{% endblock %}

Pagination.html(模板)

<div class="pagination">
     <span class="step-links">
       {% if page.has_previous %}
        <a href="?page={{ page.previous_page_number }}">Previous</a>
       {% endif %}
       <span class="current">
         Page {{ page.number }} of {{ page.paginator.num_pages}}.
       </span>
         {% if page.has_next %}
            <a href="?page={{ page.next_page_number }}">Next</a>
         {% endif %}
      </span>
</div>

标签: pythondjangopagination

解决方案


推荐阅读