Python Django URL模板在URL.py中错误地预加了最后一个URL
正如标题所述,{%url'urlName'%}正在计算一个包含额外信息的url url.pyPython 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
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声明的目的。谢谢你的帮助,先生。