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名")

这样问题就解决了。

猜你喜欢

转载自www.cnblogs.com/Zarax/p/11870654.html
今日推荐