【发布时间】:2018-11-05 14:10:06
【问题描述】:
首先,感谢您阅读我的问题 :) 我目前正在一个小型博客平台上工作,我想为我的所有 Post 元素实现分页。 因此我修改了我的 view.py 和实际的 .html 模板。 现在的问题是,每次我访问 post_list.html 页面并单击下一步时都没有发生任何事情。这里有什么问题:
post_list.html
{% extends 'quickblog/base.html' %}
{% block content %}
{% for post in posts %}
<br>
<div class="post">
<h1><u><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></u></h1>
<p>{{ post.text|linebreaksbr }}</p>
<div class="date">
<a>published by: {{ post.author }}</a><br>
<a>published at: {{ post.published_date }}</a><br>
<a>tags: {{ post.tag }}</a>
</div>
</div>
{% endfor %}
<div class="pagination">
<span class="step-left">
{% if posts.has_previous %}
<a href="?page=1">« first</a>
<a href="?page={{ posts.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ posts.number }} of {{ posts.paginator.num_pages }}.
</span>
{% if posts.has_next %}
<a href="?page={{ posts.next_page_number }}">Next</a>
<a href="?page={{ posts.paginator.num_pages }}">Last »</a>
{% endif %}
</span>
</div>
{% endblock %}
views.py
def post_list(request):
list_posts = Post.objects.get_queryset().order_by('created_date')
paginator = Paginator(list_posts, 15) # Show 15 Posts per page
page = request.GET.get('posts')
posts = paginator.get_page(page)
return render(request, 'quickblog/post_list.html', {'posts': posts})
【问题讨论】:
-
不要使用
list作为变量名。list是 python 中的内置类型,如果使用该名称来表示其他内容,很可能会导致令人困惑的错误。 -
感谢您的提示 :) 我会立即尝试
-
还是同样的问题。我将其重命名为 list_posts
-
是的。该评论只是关于良好做法的提示。您的错误是由其他原因引起的。我已经提交了针对此特定问题的建议解决方案的答案。
标签: django templates pagination views