django:url的命名空间
Posted zarax
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django:url的命名空间相关的知识,希望对你有一定的参考价值。
在同一个django工程中,不同的app是有可能给url起相同名字的。
如果不做任何处理,那么所有的叫同一个名字的url都会在被调用时使用其中某一个url
举个栗子:
app01的urls中有:
urlpatterns=[path(‘‘,views.index,name=‘home‘), path(‘/login‘,views.login,name=‘login‘),]
app02的urls中有:
urlpatterns=[path(‘‘,views.index,name=‘home‘), path(‘/login‘,views.login,name=‘login‘),]
工程下的urls中有:
urlpatterns=[path(‘app01/‘,include(app01.urls)), path(‘app02/‘,include(app02.urls))]
然后问题就来了:
app01和app02的views中都用reserve调用name=login的url时,调到的都是app02下面的那个
怎么办呢?
将url的命名空间进行限制。
app01-urls:
app_name=‘app01‘ urlpatterns=[path(‘‘,views.index,name=‘home‘), path(‘/login‘,views.login,name=‘login‘),]
app02-urls:
app_name=‘app02‘ urlpatterns=[path(‘‘,views.index,name=‘home‘), path(‘/login‘,views.login,name=‘login‘),]
调用的时候:
reserve("app_name : url名")
这样问题就解决了。
以上是关于django:url的命名空间的主要内容,如果未能解决你的问题,请参考以下文章