【问题标题】:Django Ignore string after PK in URLURL中PK后的Django忽略字符串
【发布时间】:2020-10-08 06:06:58
【问题描述】:

产品 urls.py

urlpatterns = [
    path('<int:pk>/', ProductDetailView.as_view(), name='detail'),
]

目前我的网址看起来像这样http://127.0.0.1:8001/product/11/ 但是,我还想附加产品的蛞蝓。 http://127.0.0.1:8001/product/11/example-slug/

但它后面的字符串是什么并不重要,它应该只使用 pk 来显示页面。它应该忽略/11/ 之后的字符串我该怎么做?

【问题讨论】:

  • 您可以添加您的ProductDetailView 吗?
  • 忽略 slug 可能对 SEO 不利,因为搜索引擎会在 /product/11/example-slug//product/11/other-slug/ 上看到相同的内容。为避免这种情况,Stack Overflow 会重定向到真正的 slug,例如https://stackoverflow.com/questions/62445649/made-up-slug 将被重定向到该问题的正确 slug 的 URL。
  • other-slug 从未链接过,但我明白是的

标签: django regex django-urls


【解决方案1】:

网址:

path(<int:pk>/<str:xxx>', ProductDetailView.as_view(), name='detail')

视图面应如下所示:

   def getproduct(request,pk,xxx):

       the_product= Product.objects.get(pk=pk)

但您应该注意,如果用户更改了 url 的字符串部分,用户仍然可以看到该页面。

【讨论】:

    猜你喜欢
    • 2018-09-27
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    相关资源
    最近更新 更多