urls.py 中的 Django Include() 有两个应用程序
Django Include() in urls.py with two apps
我认为这是一个简单的问题,但我很难弄清楚为什么这不起作用。
我有一个 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 时,它 returns 出现以下错误:
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/sales/
Raised by: chart.views.index
这告诉我它没有将我的销售/ 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'),
]
这样做:
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')),
from django.urls import path, include
别忘了导入 include
我认为您的销售页面的正确 url 应该是 http://127.0.0.1:8000/sales/sales/
。
这是因为 sales/
随后正在查找包含的 sales.urls
并且没有在根 /
中找到任何 url(唯一的 url包含在 sales/
(在 sales/
内)所以将是 sales/sales/
回复一个旧问题,但可能对其他人有用...
我认为这是一个简单的问题,但我很难弄清楚为什么这不起作用。
我有一个 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 时,它 returns 出现以下错误:
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/sales/
Raised by: chart.views.index
这告诉我它没有将我的销售/ 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'),
]
这样做:
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')),
from django.urls import path, include
别忘了导入 include
我认为您的销售页面的正确 url 应该是 http://127.0.0.1:8000/sales/sales/
。
这是因为 sales/
随后正在查找包含的 sales.urls
并且没有在根 /
中找到任何 url(唯一的 url包含在 sales/
(在 sales/
内)所以将是 sales/sales/
回复一个旧问题,但可能对其他人有用...