Python 带有两个应用程序的url.py中的Django Include()
我相信这是一个简单的问题,但我很难弄明白为什么这不起作用 我有一个django项目,并添加了第二个应用程序(销售)。在使用第二个应用程序之前,my urls.py只需将所有内容路由到第一个应用程序(图表),如下所示:Python 带有两个应用程序的url.py中的Django Include(),python,django,path,include,Python,Django,Path,Include,我相信这是一个简单的问题,但我很难弄明白为什么这不起作用 我有一个django项目,并添加了第二个应用程序(销售)。在使用第二个应用程序之前,my urls.py只需将所有内容路由到第一个应用程序(图表),如下所示: urlpatterns = [ path('admin/', admin.site.urls), path('', include('chart.urls')), ] 而且效果很好 我已经一遍又一遍地阅读了这些文档,并查看了许多教程,因此我的印象是我可以简单地修
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('chart.urls')),
]
而且效果很好
我已经一遍又一遍地阅读了这些文档,并查看了许多教程,因此我的印象是我可以简单地修改url.py以包括:
urlpatterns = [
path('admin/', admin.site.urls),
path('sales/', include('sales.urls')),
path('', include('chart.urls')),
]
它应该首先查找带有sales/的url,如果找到了,则应将其路由到sales.url,如果没有找到,则继续并将其路由到chart.url。但是,当我加载它并键入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.url,而是路由到chart.url。当我将path(“”,include('chart.url'))
更改为path(“”,include('sales.url'))
时,它会将其路由到sales.url,这样我就知道sales.url文件设置正确
我知道这可能是一个简单的问题,但我读过的任何东西都无法理解。感谢您的帮助
chart.url:
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'),
]
这样做:
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('chart.urls')),
url(r'^sales/', include('sales.urls')),
]
您没有正确地执行此操作,因为您没有告诉应用程序加载后的去向。此r'^'
直接转到chart.urlurl(r'^',包括('chart.url'),
不要为了导入而包含我认为在您的案例中,销售页面的正确url应该是
http://127.0.0.1:8000/sales/sales/
这是因为sales/
正在查看包含的sales.url
,而在根/
上找不到任何url(其中包含的唯一url位于sales/
(在sales/
内),因此将sales/sales/
回答一个老问题,但可能对其他人有用…您是否在settings.py中的“INSTALLED_apps”中添加了应用程序?因此URL之间存在歧义?两个视图可以具有相同的URL?不要这样做!它将中断
反向(…)
功能。实际上,不管URL的顺序如何,每个URL都只有一个视图,反之亦然(当然是相对于视图参数而言).sales.url和chart.url中有什么?您希望以何种模式提供/sales/request服务?@Chris我无法重现这种行为。您可以添加sales.url和chart.url的内容吗?我已经添加了chart.url和sales.url。当myapp.url实际路由到它们时,这两种模式都可以工作,但是我清楚地意识到了这一点,并且遗漏了一些东西。我感谢所有的反馈。'
和'^'
完全相同。
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('chart.urls')),
url(r'^sales/', include('sales.urls')),
]
from django.urls import path, include