Python Django URL模板在URL.py中错误地预加了最后一个URL

Python Django URL模板在URL.py中错误地预加了最后一个URL,python,django,url,Python,Django,Url,正如标题所述,{%url'urlName'%}正在计算一个包含额外信息的url url.py urlpatterns = [ path('admin/', admin.site.urls), path('logout', include('dashboard.urls')), path('signout/<int:id>/<int:payment>/', include('dashboard.urls')), path('shifts-in-range', include

正如标题所述,{%url'urlName'%}正在计算一个包含额外信息的url

url.py

urlpatterns = [
path('admin/', admin.site.urls),
path('logout', include('dashboard.urls')),
path('signout/<int:id>/<int:payment>/', include('dashboard.urls')),
path('shifts-in-range', include('dashboard.urls')),
path('charts', include('dashboard.urls')),
]
urlpatterns=[
路径('admin/',admin.site.url),
路径('logout',包括('dashboard.url'),
路径('signout//',include('dashboard.url'),
路径('shift-in-range',包括('dashboard.url'),
路径('charts',include('dashboard.url')),
]
在appname/url.py中,我们有一个非常相似的视图:

urlpatterns = [
path('', auth_views.LoginView.as_view(template_name='index.html'), name='login'),
path('signout/<int:id>/<int:payment>/',signout, name='signout'),
path('shifts-in-range',shiftsInRange,name='shifts-in-range'),
path('charts', charts, name='charts'),

]
urlpatterns=[
路径(“”,auth_views.LoginView.as_view(template_name='index.html'),name='login'),
路径('signout//',signout,name='signout'),
路径('shifts-in-range',shiftsInRange,name='shifts-in-range'),
路径('charts',charts,name='charts'),
]
使用此语句时:var signoutURL=“{%url'signout'0 2%}”

其计算结果为url chartsignout/0/2/ 出于某种原因,url.py urlpatterns中的最后一个路径被放在已计算url的前面。切换urlpatterns的顺序也会使其使用新的最后一个模式进行计算。造成这种情况的原因是什么?我如何防止这种情况发生


还值得注意的是,当我硬编码url signout/0/2/时,它无法正常工作,并重定向到根“/”

我认为您对带有
include的
路径的
工作原理有一些误解。其思想是准确地将一部分预先添加到引用的urlpatterns中包含的所有路径

因此,您在这里创建了一些路径,如
注销/0/2
范围内的移位范围内的移位
,等等。这些路径都指向
仪表板
应用程序中的视图。但是,您可以在
仪表板.url中的任何视图前面加上
注销
范围内的移动
图表

如果要在
仪表板中包含路径而不带任何前缀,只需使用空字符串包含一次即可:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('dashboard.urls'))
]
urlpatterns=[
路径('admin/',admin.site.url),
路径(“”,include('dashboard.url'))
]

如果您现在传递一个URL,它将检查路径“eat”,路径头上没有字符,并尝试路径的其余部分(本例中是完整路径)检查
仪表板中的路径。URL

我想您对
包含
路径如何工作有一些误解。其思想是准确地将一部分预先添加到引用的urlpatterns中包含的所有路径

因此,您在这里创建了一些路径,如
注销/0/2
范围内的移位范围内的移位
,等等。这些路径都指向
仪表板
应用程序中的视图。但是,您可以在
仪表板.url中的任何视图前面加上
注销
范围内的移动
图表

如果要在
仪表板中包含路径而不带任何前缀,只需使用空字符串包含一次即可:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('dashboard.urls'))
]
urlpatterns=[
路径('admin/',admin.site.url),
路径(“”,include('dashboard.url'))
]

如果您现在传递一个URL,它将检查路径“eat”,路径头没有字符,然后尝试路径的其余部分(本例中为完整路径)要检查
仪表板中的路径。URL

来自
include
的路径是要预先设置的路径。假设您的
appname
仪表板
?为什么要在每个
路径中包含它?它将在
图表
前面加上前缀,因为这是一种“到达”dashboard.url的方法。这正是使用include的想法,即在
路径(“…”)
中使用URL模式对其进行预处理。
include
中的路径就是预处理的路径。我假设
appname
仪表板
?为什么要在每个
路径中包含它?它将在
图表
前面加上前缀,因为这是一种“到达”dashboard.url的方法。这正是使用include的想法,即在
路径(“…”)
中使用URL模式对其进行前缀。是的,这就解决了这个问题。我误解了include声明的目的。谢谢你的帮助,先生。是的,这就解决了。我误解了include声明的目的。谢谢你的帮助,先生。