Django学习笔记5-url

先来看一下普通的url的格式

{% url 'login_action'%}

但由于name没有作用域,Django在反解URL时,会在项目全局顺序搜索,当查找到第一个name指定URL时,立即返回

我们在开发项目时,会经常使用name属性反解出URL,当不同app不小心定义相同的name时,可能会导致URL反解错误,为了避免这种事情发生,引入了命名空间
 
 
再看一种url格式
{% url 'login:login_action'%}

前一个login是命名空间,后一个是name

 
 
对不同版本的django,命名空间的使用方式也不同
在2.0以前,需要以下的方式来定义命名空间
#项目下的urls.py
urlpatterns = [ path('admin/', admin.site.urls), path('',include('login.urls',namespace="login")) ]
#app下的urls.py
urlpatterns = [
    path('login/',views.login),
    path('login/action/',views.login_action,name='login_action')
]

但在2.0,为了简化项目下的urls.py,将命名空间的方式放在了app里的urls.py,通过app_name代替namespace

#项目下的urls.py
urlpatterns = [ path('admin/', admin.site.urls), path('',include('login.urls')) ] #app下的urls.py app_name='login' urlpatterns = [ path('login/',views.login), path('login/action/',views.login_action,name='login_action') ]
 

猜你喜欢

转载自www.cnblogs.com/O-OK/p/9002081.html