Django分页问题-初学者

Django分页问题-初学者,django,django-models,django-views,django-templates,pagination,Django,Django Models,Django Views,Django Templates,Pagination,我正在和Django做一个项目,第一次学习分页。到目前为止,我已经阅读了很多文档,但仍然无法使其正常工作。我不知道我做错了什么。任何见解都是有益的。据我所知,这应该只会使3篇文章出现在页面上。相反,所有的帖子都会出现。我想让页面上一次只出现3篇文章。我没有发现任何错误。我只看到页面上的所有帖子 views.py from .models import User, Post from django.core.paginator import Paginator def index(reques

我正在和Django做一个项目,第一次学习分页。到目前为止,我已经阅读了很多文档,但仍然无法使其正常工作。我不知道我做错了什么。任何见解都是有益的。据我所知,这应该只会使3篇文章出现在页面上。相反,所有的帖子都会出现。我想让页面上一次只出现3篇文章。我没有发现任何错误。我只看到页面上的所有帖子

views.py

from .models import User, Post
from django.core.paginator import Paginator


def index(request):
    list_of_posts = Post.objects.all().order_by('id').reverse()
    paginator = Paginator(list_of_posts, 3)
    page_number = request.GET.get('page', 1)
    page_obj = paginator.get_page(page_number)

    return render(request, "network/index.html", {
        "list_of_posts": list_of_posts,
        "page_obj": page_obj
    })
用于分页的html部分:

{% extends "network/layout.html" %}
{% load static %}
{% block body %}
         <h3> Welcome. Here is your news feed: </h3>

{% for i in list_of_posts %}

<div class='card mb-3' style="max-width: 530px;" id="card-posts">

        <div class="row no-gutters">
                <div class="col-md-8">
                  <div class="card-body">
                    <h5 class="card-title"><a href="{% url 'profile' username=i.username %}">{{i.username}}</a></h5>
                    <p class="card-text">{{i.text}}</p>
                    <p class="card-text">{{i.timestamp}}</p>
                    <p class="card-text">{{i.amount_likes}}</p>
                  </div>
                </div>
              </div>
            </div>
{% endfor %}
<br><br>
{% endblock %}

<div class="container">
  <ul class="pagination justify-content-center">
      {% if page_obj.has_previous %}
          <li class="page-item"><a href="?page=1" class="page-link">&laquo; First</a></li>
          <li class="page-item"><a href="?page={{ page_obj.previous_page_number }}" 
class="page-link">Previous</a></li>
      {% else %}
      <li class="page-item disabled"><a class="page-link">&laquo; First</a></li>
      <li class="page-item disabled"><a class="page-link">Previous</a></li>
      {% endif %}
      

      {% if page_obj.number %}
      <li class="page-item"><a class="page-link">{{ page_obj.number }}</a></li>
      {% else %}
      <li class="page-item"><a class="page-link">0</a></li>
      {% endif %}

     {% if page_obj.has_next %}
  <li class="page-item"><a href="?page={{ page_obj.next_page_number }}" class="page-link">Next</a></li>
  <li class="page-item"><a href="?page={{ page_obj.paginator.num_pages }}" class="page-link">Last &raquo;</a></li>
  {% else %}
  <li class="page-item disabled"><a class="page-link">Next</a></li>
  <li class="page-item disabled"><a class="page-link">Last &raquo;</a></li>
  {% endif %}
  </ul>
</div>
{%extends“network/layout.html”%}
{%load static%}
{%block body%}
欢迎这是您的新闻提要:
{u帖子列表中i的%u%}

{{i.text}

{{i.timestamp}

{i.amount\u likes}

{%endfor%}

{%endblock%}
    {%如果页面_obj.has_previous%}
  • {%else%}
  • {%else%}
  • 下一步
  • Last» {%endif%}

您在错误的变量上循环
list\u of\u posts
是行中定义的查询集:

list_of_posts = Post.objects.all().order_by('id').reverse()
但是,您希望在分页查询集上循环,这可以通过在
page\u obj
上循环来完成。因此,您的循环应该如下所示:

{% for i in page_obj %}
...
{% endfor %}

显示模板中循环帖子的部分。你有没有可能写一些类似于
{%的东西在文章列表%}
的东西?@AbdulAzizBarkat是的,我有。如果你想看的话,我把它添加到我的帖子里了。谢谢非常感谢。我完全忽略了这一点。成功了。