首页 > 解决方案 > 如何在 Django Url 中添加可选的 slug

问题描述

我想在 Django 中的网址中添加一个可选的 Stackoverlow,例如 slug

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

如何使 slug 可选,以便它在所有三种情况下都有效:

  1. 项目/1
  2. 项目/1/
  3. 项目/1/蛞蝓

标签: djangodjango-urls

解决方案


您可以使用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"),
]

推荐阅读