Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带有两个应用程序的url.py中的Django Include()_Python_Django_Path_Include - Fatal编程技术网

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

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')), ] 而且效果很好 我已经一遍又一遍地阅读了这些文档,并查看了许多教程,因此我的印象是我可以简单地修

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

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

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.url
url(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