1. 程式人生 > 其它 >Django學習筆記九---003篇---名稱空間和url的使用方式

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

後續再詳細介紹。