下一页按钮不起作用 同一页面正在重新加载
Next page button not working same page is reloading
我的数据库中有 6 个帖子,我想每页显示 3 个帖子。一切正常,没有任何错误,但是当我单击 'next page' link 时,相同的帖子正在重新加载。步骤如下,
加载成功,页面中有 3 个帖子。此外,'next page' link 也按预期位于页面底部。
当我点击下一页时,URL变成:
但是正如我所说,首页的帖子正在重新加载。
url.py:
path('',views.getPosts,name="bloghome"),
path('/<int:selected_page>/',views.getPosts,name="bloghome"),
view.py分页功能:
def getPosts(request,selected_page=1):
posts = Posts.objects.all()
pages = Paginator(posts,3) #Show 3 post per page
try:
returned_page = pages.get_page(selected_page)
except EmptyPage:
returned_page = pages.page(pages.num_pages)
return render(request,'blog.html',{'page':returned_page,
'posts':returned_page.object_list
})
Post 列表页面模板:
{% extends 'blog_mainpage_assets.html' %}
{%load static%}
{% block document_body%}
<div class="container" style="margin-top:40px;">
{%for post in posts%}
<div class="post">
<div class="baslikveyazi">
<div class="baslik_2">
<h2><a href="{% url 'post_detail' post.slug %}">{{post.post_title}}</a></h2>
</div>
<div class="yazi_2">
<div style="word-wrap: break-word;"><p style="font-size:20px;line-height:2;">{{post.post_body|truncatechars:100}}</p></div>
</div>
</div>
</div>
{%endfor%}
{% if page.has_previous %}
<a href="{% url 'bloghome' %}?page={{page.previous_page_number}}">Back</a>
{% endif %}
{% if page.has_next %}
<a href="{% url 'bloghome' %}?page={{page.next_page_number}}">Next</a>
{% endif %}
</div>
{% endblock document_body%}
您的第二个 URL 采用 /blog/<page>/
的形式,但这不是您在 link 中构建的 URL。你的 link 看起来像 /blog/?page=2
。查询参数 (?page=2
) 与 URL 路径 (/2/
) 完全不同,因此您的 selected_page
在您看来永远不会是 1
以外的任何东西.
我将从您的 URL 配置中删除第二个 URL,然后检查视图中的查询参数:
def getPosts(request):
posts = Posts.objects.all()
pages = Paginator(posts, 3) #Show 3 post per page
selected_page = request.GET.get('page', 1)
try:
returned_page = pages.get_page(selected_page)
except EmptyPage:
returned_page = pages.page(pages.num_pages)
我的数据库中有 6 个帖子,我想每页显示 3 个帖子。一切正常,没有任何错误,但是当我单击 'next page' link 时,相同的帖子正在重新加载。步骤如下,
加载成功,页面中有 3 个帖子。此外,'next page' link 也按预期位于页面底部。
当我点击下一页时,URL变成:
但是正如我所说,首页的帖子正在重新加载。
url.py:
path('',views.getPosts,name="bloghome"),
path('/<int:selected_page>/',views.getPosts,name="bloghome"),
view.py分页功能:
def getPosts(request,selected_page=1):
posts = Posts.objects.all()
pages = Paginator(posts,3) #Show 3 post per page
try:
returned_page = pages.get_page(selected_page)
except EmptyPage:
returned_page = pages.page(pages.num_pages)
return render(request,'blog.html',{'page':returned_page,
'posts':returned_page.object_list
})
Post 列表页面模板:
{% extends 'blog_mainpage_assets.html' %}
{%load static%}
{% block document_body%}
<div class="container" style="margin-top:40px;">
{%for post in posts%}
<div class="post">
<div class="baslikveyazi">
<div class="baslik_2">
<h2><a href="{% url 'post_detail' post.slug %}">{{post.post_title}}</a></h2>
</div>
<div class="yazi_2">
<div style="word-wrap: break-word;"><p style="font-size:20px;line-height:2;">{{post.post_body|truncatechars:100}}</p></div>
</div>
</div>
</div>
{%endfor%}
{% if page.has_previous %}
<a href="{% url 'bloghome' %}?page={{page.previous_page_number}}">Back</a>
{% endif %}
{% if page.has_next %}
<a href="{% url 'bloghome' %}?page={{page.next_page_number}}">Next</a>
{% endif %}
</div>
{% endblock document_body%}
您的第二个 URL 采用 /blog/<page>/
的形式,但这不是您在 link 中构建的 URL。你的 link 看起来像 /blog/?page=2
。查询参数 (?page=2
) 与 URL 路径 (/2/
) 完全不同,因此您的 selected_page
在您看来永远不会是 1
以外的任何东西.
我将从您的 URL 配置中删除第二个 URL,然后检查视图中的查询参数:
def getPosts(request):
posts = Posts.objects.all()
pages = Paginator(posts, 3) #Show 3 post per page
selected_page = request.GET.get('page', 1)
try:
returned_page = pages.get_page(selected_page)
except EmptyPage:
returned_page = pages.page(pages.num_pages)