urls.py 中的扩展路径名

Extending path name in urls.py

假设我的 views.py 包含多个视图,这些视图旨在更深入 url 路径。

urlpatterns = [
    path('<int:table_pk>/order/', views.menu_category_view, name='menu_category_view'),
    path('<str:menu_category>/', views.menu_item_view, name='menu_item_view'),
]

第一个视图生成的路径为 <int:table_pk>/order/。 如果我希望第二个视图具有如下 <int:table_pk>/order/<str:menu_category>/ 的路径,我应该如何以 DRY 方式传递变量(在视图 and/or 模板中)? 如果我有更多的路径级别需要以同样的方式在其上方扩展路径怎么办?

您可以使用 include(…) clause [Django-doc]:

from django.urls import include

urlpatterns = [
    path('<int:table_pk>/order/', <b>include([</b>
        path('', views.menu_category_view, name='menu_category_view'),
        path('<str:menu_category>/', views.menu_item_view, name='menu_item_view'),
    <b>])</b>)
]

include(…) 之前的 path(…) 因此对于包含在 include(…).

中的列表中的两个 path(…) 都是通用的

因此,您可以使用 include 构建层次结构,其中 path(…) 可以包含在另一个 path(…)include(…) 中,等等