一般使用者通過瀏覽器向我們的伺服器發起乙個請求(request),這個請求回去訪問檢視函式,(如果不涉及到資料呼叫,那麼這個時候檢視函式返回乙個模板也就是乙個網頁給使用者),檢視函式呼叫模型,模型去資料庫查詢資料,然後逐級返回,檢視函式把返回的資料填充到模板中空格中,最後返回網頁給使用者。
路由系統就是路徑和檢視函式的乙個對應關係。
django的路由系統作用就是使views裡面處理資料的函式與請求的url建立對映關係。使請求到來之後,根據urls.py裡的關係條目,將乙個個url的頁面請求分發給不同的view處理,view再呼叫相應的model和template。
新建的 django 專案中提供了 urls.py(建立專案後自動生成的配置檔案) 路由配置檔案,urls.py 檔案中定義了乙個 urlpatterns 的列表,django 中 url 的定義就是在這個列表完成的。
url(regex,view,name=
none
)
regex:必須有的引數,regex是正規表示式的通用縮寫,它是一種匹配字串或url位址的語法。django拿著使用者請求的url位址,在urls.py檔案中對urlpatterns列表中的每一項條目從頭開始進行逐一對比,一旦遇到匹配項,立即執行該條目對映的檢視函式或二級路由,其後的條目將不再繼續匹配。
view:必須有的引數,當正規表示式匹配到某個條目時,自動將封裝的httprequest物件作為第乙個引數,正規表示式「捕獲」到的值作為第二個引數,傳遞給該條目指定的檢視。如果是簡單捕獲,那麼捕獲值將作為乙個位置引數進行傳遞,如果是命名捕獲,那麼將作為關鍵字引數進行傳遞。
kwargs:可選引數,任意數量的關鍵字引數可以作為乙個字典傳遞給目標檢視。
name:可選引數,對你的url進行命名,可以讓你能夠在django的任意處,尤其是模板內顯式地引用它。相當於給url取了個全域性變數名,你只需要修改這個全域性變數的值,在整個django中引用它的地方也將同樣獲得改變。
django 專案中的url規則定義放在project 的urls.py檔案中,預設內容如下:
from django.conf.urls import url
from django.contrib import admin
urlpatterns =
[ url(r'^admin/'
, admin.site.urls)
,]
示例:在本地實現乙個簡單的頁面訪問功能
x專案名稱是「myject」,views.py檔案編寫:
return httpresponse(html)urls.py檔案編寫:需要在urls.py檔案匯入views.py檔案,然後寫對應關係
from django.conf.urls import url
from django.contrib import admin
from myject import views
urlpatterns =
[ url(r'admin/'
, admin.site.urls)
, url(r'^page$/'
,views.page_view)
,]
SpringCloud框架搭建(七)路由閘道器
當外部的應用如何來訪問內部各種各樣的微服務時,當然可以直接用ip埠加服務來進行訪問,但是這樣就不能實現負載均衡。當然我們可以將外部應用也加入到eureka中,這樣也就可以通過eureka實現負載均衡。但是實際情況下我們不能將所有的請求端都加入eureka中 千萬級訪問量我們不可能將千萬個客戶端都加進...
Django的路由系統01 路由分發
範例 from django.conf.urls import url from django.contrib import admin urlpatterns url r admin admin.site.urls url r publisher list views.publist.as vie...
django3 路由系統高階
1.django的url到底是什麼 就是路徑 看成django的目錄 每個目錄對應個檢視函式 當然乙個url僅能對應乙個函式 2.url的格式 url 正規表示式,views函式名,引數,別名 這裡的正規表示式有個問題就是可能會匹配到多個路徑 匹配的方式是從上到下匹配即停 所以正則一定要嚴謹防止截胡...