Django:如何处理多个应用程序的网址

Ben*_*afa 3 python django

我有两个应用程序:coredm 是我的代码:

核心/urls.py

urlpatterns = [
    path('', views.index, name='index')
]
Run Code Online (Sandbox Code Playgroud)

dm/urls.py

urlpatterns = [
    path('', views.dm, name='dm'),
    path('prices', views.dm_prices, name='prices')
]
Run Code Online (Sandbox Code Playgroud)

我的网站/urls.py

from core import views
from dm import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('core.urls')),
    path("stripe/", include("djstripe.urls", namespace="djstripe")),
    path('dm', include('dm.urls')),
    path('dm/prices', include('dm.urls')),
]
Run Code Online (Sandbox Code Playgroud)

所以,从404页面来看,我可以看到他看到的URL是:

  1. 行政/
  2. [名称='索引']
  3. 条纹/
  4. dm [名称='dm']
  5. DM 价格 [name='prices']
  6. DM/价格 [名称='DM']
  7. dm/prices 价格 [name='prices']

如果有人能向我解释 django 如何读取不同的 URL 以及如何对它们进行排序,我会非常高兴。多谢!

小智 6

首先,您不需要两次包含同一应用程序的网址,include('<my_app>.urls')而是包含您在应用程序的urlpatterns. 所以'dm/prices'在你的情况下是多余的,将其更改为这样就可以完成工作。

from core import views
from dm import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('core.urls')),
    path('dm/', include('dm.urls')),
    path("stripe/", include("djstripe.urls", namespace="djstripe")),
]
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请include()阅读此内容django docs