Django Include() 在 urls.py 与两个应用程序



我相信这是一个简单的问题,但我很难弄清楚为什么这不起作用。

我有一个django项目,我添加了第二个应用程序(销售(。 在第二个应用程序之前,我的 urls.py 只是将所有内容路由到第一个应用程序(图表(,如下所示:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('chart.urls')),
]

而且效果很好。

我已经一遍又一遍地阅读了文档,看了很多教程,所以我的印象是我可以简单地修改 urls.py 以包括:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('sales/', include('sales.urls')),
    path('', include('chart.urls')),
]

它应该首先查找带有 sales/的 URL,如果找到,则应将其路由到 sales.urls,如果找不到,则继续前进并将其路由到 chart.urls。 但是,当我加载它并输入 127.0.0.1:8000/sales 时,它返回以下错误:

Page not found (404)
Request Method: GET
Request URL:    http://127.0.0.1:8000/sales/
Raised by:  chart.views.index

这告诉我它不是将我的 sales/url 路由到 sales.urls,而是路由到 chart.urls。 当我将path('', include('chart.urls'))更改为path('', include('sales.urls'))时,它确实将其路由到 sales.urls,因此我知道我的 sales.urls 文件设置正确。

我知道这可能是一个简单的问题,但我无法用我读过的任何东西来弄清楚。 任何帮助,不胜感激。

图表网址:

from django.urls import path, re_path
from . import views
urlpatterns = [
    path('dashboard/', views.chart, name='dashboard'),
    path('', views.index, name='index', kwargs={'pagename': ''}),
    path('<str:pagename>/', views.index, name='index'),
]

销售网址:

from django.urls import path
from . import views
urlpatterns = [
    path('sales/', views.sales, name='Sales Dashboard'),
]

我认为在您的情况下销售页面的正确网址是http://127.0.0.1:8000/sales/sales/

这是因为sales/随后在包含的sales.urls中查找,并且在根/找不到任何 url(其中包含的唯一 url 位于 sales/(在 sales/ 内(,因此将sales/sales/

回答一个旧问题,但可能对其他人有用...

from django.urls import path, include

不要为获取导入包括

这样做:

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^', include('chart.urls')),
    url(r'^sales/', include('sales.urls')),
]

您没有正确执行此操作,因为您没有告诉您的应用程序在加载后转到何处.this r'^'直接转到 chart.url url(r'^', include('chart.urls')),

相关内容

  • 没有找到相关文章

最新更新