Django學習筆記九---003篇---名稱空間和url的使用方式
一:namespace(名稱空間)
名稱空間(namespace):用來表示識別符號的作用範圍
一個識別符號可以在多個名稱空間中定義,它在不同名稱空間中的含義是互不相干的。這樣,在一個新的名稱空間中可定義任何識別符號,它們不會與任何已有的識別符號發生衝突。
1.1:namespace使用原因
如果一個專案下有多個應用,例如:
專案:mysite下面有polls和text_platform兩個應用。
每個應用下面都有對應urls.py檔案,檔案衝都有一個index/的路徑,
那麼,Django在反向解析路由的時候,就會出現得到不是我們想要的結果。
例如:把polls/urls.py中的index路徑解析到了text_platform/urls.py中,通過views指向了我們不要的頁面。訪問不同URL,反向解析得到相同的path。
雖然我們定義了:name='index',但是,name是沒有作用域的,
而namespace是有作用域的。我們定義namespace後,它就只能作用在該應用下面。
例如:
polls應用和text_platform應用,我們定義了namespace後,那麼,就算他們下面的urls.py檔案中有相同的/index/路徑,那麼,我們反向解析時,也不會指向同一個path,一定是指向每個index對應的path.
(同理,他們也不會與mysite專案下的urls.py檔案中的index/(假如有的話)指向同一個path),
另外注意一點,namespace是與include的可選引數,就是說,當出現了,include的時候,就可以使用namespace,沒有include的時候,namespace是不能使用的。
這一點與name不同,name是在path中都可以使用的。
1.2:namespace的書寫格式:
path('應用名/’,include(('應用名.urls','應用名‘),namespace='應用名’) 注意()的個數,很容易少寫一個()的。
例如:
參考部落格:https://blog.csdn.net/J_wb49/article/details/103055521
二:路由的使用方式
在模板templates中使用路由.
以前講templates的時候,介紹過render函式。
注意的是,render函式的引數,request,templates名稱是必填引數,
context是選填引數。
後續還會繼續寫關於templates的部落格,到時再詳細介紹。
三:路由的重定向
重定向包括兩種,1,路由的重定向 2,自定義檢視的重定向。
其中,自定義檢視的重定向又包括3、種方式,
分別是:HttpResponseRedirect, HttpResponseRedirectBase 和redirect
代表301和302
後續再詳細介紹。