我的项目应用程序之一的 url.py 包含来自其他应用程序的 url 文件。将它们包含在空路线中是否有我忽略的问题?例如:
在
appA
urls.py 中:
urlpatterns = [
path('hub/', views.hub, name='hub'),
path('dashboard/', views.dashboard, name='dashboard'),
path('', views.hub_redirect), # Redirects / to /hub/
path('', include('appB.urls')),
path('', include('appC.urls')),
]
其中
appB.urls
和 appC.urls
都包含具有定义的唯一路线的路径(即,不是 ''
)。有用!但现在想知道是否应该...
我没有看到任何文档说需要非空路由,但现在担心最佳实践。我还担心我不了解应用程序的功能。当我使用
django-admin createapp
时,urls.py 不会自动生成,所以这让我想知道是否应该将 url 全部保留在 appA 上并将它们指向 appB 和 appC 的视图,但我当前的方式对我来说很有意义(因为它在相关功能的应用程序内重构 URL 会更容易,而无需在外部(即 appA 中)进行更改。
其中
和appB.urls
都包含路径,每个路径都有定义的唯一路线。appC.urls
是的,那很好。 Django 尝试通过枚举从上到下的路径来匹配请求路径,并将触发第一个匹配的路径。
include(…)
[Django-doc],或仅两个 .path(…)
[Django-doc],那么它将选择第一个。当然,将它们添加到两个不同的 include(…)
中会让事情变得有点复杂,因为现在路径是在不同的文件中定义的,这使得推理变得更加困难。特别是如果您包含您无法控制的应用程序的路径,最终该包可能会引入新的路径,因此可能会发生重叠。
因此,根据经验,使用非重叠包含通常会更好,但不这样做本身并不是问题。