Django - 301 redirect with query parameter“?page=”inurls.py

w8f9ii69  于 2023-04-07  发布在  Go
关注(0)|答案(1)|浏览(118)

在Django 1.10中有一些重复页面的问题。当***urls.py***有以下代码时:

urlpatterns = [
    ...
    url(r'^(?P<category_slug>[-\w]+)$', views.category_views, name='cat'),
    ...
]

***views.py***的一部分:

def category_views(request, category_slug):
    category_name = get_object_or_404(Category, slug=category_slug)

***models.py***的一部分:

class Category(models.Model):
    slug = models.SlugField(max_length=50, unique=True, blank=False, verbose_name=u"URL")

页面site.com/category_slug?page=5site.com/category_slug/?page=5显示相同内容。
然后我在***urls.py***中添加了下一个重定向:

urlpatterns = [
    ...
    url(r'^(?P<category_slug>[-\w]+)$', views.category_views, name='cat'),
    url(r'^(?P<category_slug>[-\w]+)/$', RedirectView.as_view(pattern_name='cat', permanent=True)),
    ...
]

现在我已经从site.com/category_slug/?page=5重定向到site.com/category_slug(不带查询参数),但需要site.com/category_slug?page=5
请告诉我在哪里修

2jcobegt

2jcobegt1#

根据1.10的文档,您可以简单地将以下关键字参数query_string = True添加到您的URL:

url(
    r'^(?P<category_slug>[-\w]+)/$',
    RedirectView.as_view(
        pattern_name='cat', 
        permanent=True,
        query_string=True
    )
 ),

相关问题