如何在Django网址中添加可选的Slug

时间:2020-10-21 14:32:24

标签: django django-urls

我想在Django中的URL中添加一个可选的Stackoverlow(如slug)

path(
    r"item/<int:pk>/<slug:slug>",
    ItemDetailView.as_view(),
    name="item_detail",
),

我如何使该段塞为可选,以便它在所有三种情况下均能正常工作:

  1. item / 1
  2. item / 1 /
  3. item / 1 / slug

2 个答案:

答案 0 :(得分:1)

您可以使用re_path

from django.urls import re_path

urlpatterns = [
    re_path(r'^item/(?P<pk>[0-9]+)(?:/(?P<slug>[-\w]+))?/$', ItemDetailView.as_view(), name="item_detail"),
]

答案 1 :(得分:0)

最简单的方法是使用不同的路径:

urlpatterns = [
    path('item/<int:pk>/', ItemDetailView.as_view(), name="item_detail"),
    path('item/<int:pk>/<slug:slug>/', ItemDetailView.as_view(), name="item_detail"),
]
相关问题