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的命名空间的主要内容,如果未能解决你的问题,请参考以下文章

Django:使用变量作为 URL 命名空间?

django-url命名空间+反查

django:url的命名空间

你如何使用 Django URL 命名空间?

django-URL实例命名空间

Django命名空间app_name和namespace