带有两个应用程序的urls.py中的Django Include()

时间:2018-08-07 10:46:17

标签: python django path include

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

我有一个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,如果找到该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文件已正确设置。

我知道这可能是一个简单的问题,但是我无法用已读过的任何内容弄清楚。任何帮助表示赞赏。

chart.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'),
]

sales.urls:

from django.urls import path
from . import views

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

3 个答案:

答案 0 :(得分:0)

from django.urls import path, include

不要导入包含

答案 1 :(得分:0)

我认为您所用的销售页面的正确网址应该是http://127.0.0.1:8000/sales/sales/

这是因为sales/然后正在查找包含的sales.urls,而在根/上找不到任何网址(其中唯一的网址是sales/(在sales/sales/sales/

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

答案 2 :(得分:-1)

执行此操作:

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

您没有正确执行此操作,因为您没有告诉应用程序加载后该去哪里。此r'^'会直接转到chart.url url(r'^', include('chart.urls')),