如何在 Django 分页中将 ?page=1 重定向到 /?

Posted

技术标签:

【中文标题】如何在 Django 分页中将 ?page=1 重定向到 /?【英文标题】:How to redirect ?page=1 to / in Django paginations? 【发布时间】:2021-05-13 08:10:21 【问题描述】:

我有点困惑为什么我的视图代码不起作用。每当 /?page=1 到 /

时,我都需要重定向

我的看法:

blogs = models.BlogPost.objects.filter(is_active = True).order_by('-pub_date')
paginator = Paginator(blogs, 12)
page_number = request.GET.get('page')

#THIS IS THE PART THAT DOES NOT WORK#
if page_number == 1:
    redirect('blog:blog', permanent=True)
try:
    page_obj = paginator.page(page_number)
except PageNotAnInteger:
    paginator.get_page(1)
except EmptyPage:
    raise Http404('<h1>Page not found</h1>')

如果我输入 domain.com/?page=1 它应该重定向到 domain.com/

但它仍然是 domain.com/?page=1

我看不到我缺少什么,有人可以帮我吗?

【问题讨论】:

?page=1 有什么问题? @AbdulAzizBarkat 搜索引擎优化人员说这是错误的,谷歌会看到两个相同的页面 request.GET.get('page') 会返回一个字符串,你将它与一个整数进行比较。 @AbdulAzizBarkat 我尝试与“1”进行比较,还尝试在 page_number 上使用 int()。没有任何效果 我测试过,工作正常...试试print(type(page_number), page_number)你得到了什么? 【参考方案1】:

您可以使用redirecview 将任何网址重定向到另一个网址。例如Django URL Redirect

【讨论】:

以上是关于如何在 Django 分页中将 ?page=1 重定向到 /?的主要内容,如果未能解决你的问题,请参考以下文章

Django:如何获取当前 URL 标记名(用于分页)?

django分页后查询丢失

django基础- 分页组件

django分页学习

Django分页器

django中的分页设置