Python web開發:Flask的URL和視圖
URL與視圖
URL與函數的映射:
從之前的文件中,我們已經看到,一個要與執行函數進行映射,使用的是裝飾器。裝飾器中,可以指定的規則來進行更加詳細的映射,比如現在要映射一個文章詳情的,文章詳情的是,id有可能為1、2、3…,那麼可以通過以下方式:
其中,尖括弧是固定寫法,語法為,默認的數據類型是字元串。如果需要指定類型,則要寫成,其中就是類型名稱,可以有以下幾種:
string: 默認的數據類型,接受沒有任何斜杠的字元串。
int: 整形
float: 浮點型。
path: 和類似,但是可以傳遞斜杠。
uuid: 類型的字元串。
any:可以指定多種路徑,這個通過一個例子來進行說明:
以上例子中,這個函數可以接受兩個,一個是,另一個是。並且,一定要傳參數,當然這個的名稱可以隨便。
如果不想定製子路徑來傳遞參數,也可以通過傳統的的形式來傳遞參數,例如:,這種情況下,可以通過來獲取的值。如果是方法,則可以通過來進行獲取。
構造URL(url_for):
一般我們通過一個就可以執行到某一個函數。如果反過來,我們知道一個函數,怎麼去獲得這個呢?函數就可以幫我們實現這個功能。函數接收兩個及以上的參數,他接收函數名作為第一個參數,接收對應URL規則的命名參數,如果還出現其他的參數,則會添加到的後面作為查詢參數。
通過構建的方式而選擇直接在代碼中拼的原因有兩點:
將來如果修改了,但沒有修改該對應的函數名,就不用到處去替換了。
函數會轉義一些特殊字元和字元串,這些事情會自動的幫我們搞定。
下面用一個例子來進行解釋:
指定URL末尾的斜杠:
有些的末尾是有斜杠的,有些末尾是沒有斜杠的。這其實是兩個不同的。
舉個例子:
上述例子中,當訪問一個結尾不帶斜線的:,會被重定向到帶斜線的:上去。但是當我們在定義的的時候,如果在末尾沒有加上斜杠,但是在訪問的時候又加上了斜杠,這時候就會拋出一個錯誤頁面了:
以上沒有在末尾加斜杠,因此在訪問的時候,就會拋出一個錯誤。
指定HTTP方法:
在中可以傳入一個關鍵字參數來指定本方法支持的方法,默認情況下,只能使用請求,看以下例子:
以上裝飾器將讓的既能支持又能支持。
頁面跳轉和重定向:
重定向分為永久性重定向和暫時性重定向,在頁面上體現的操作就是瀏覽器會從一個頁面自動跳轉到另外一個頁面。比如用戶訪問了一個需要許可權的頁面,但是該用戶當前並沒有登錄,因此我們應該給他重定向到登錄頁面。
永久性重定向:的狀態碼是,多用於舊網址被廢棄了要轉到一個新的網址確保用戶的訪問,最經典的就是京東網站,你輸入的時候,會被重定向到,因為這個網址已經被廢棄了,被改成,所以這種情況下應該用永久重定向。
暫時性重定向:的狀態碼是,表示頁面的暫時性跳轉。比如訪問一個需要許可權的網址,如果當前用戶沒有登錄,應該重定向到登錄頁面,這種情況下,應該用暫時性重定向。
在中,重定向是通過這個函數來實現的,表示需要重定向到的,應該配合之前講的函數來使用,表示採用哪個重定向,默認是也即,可以修改成來實現永久性重定向。
以下來看一個例子,關於在中怎麼使用重定向:
作者:南窗客斯黃
源自:
https://blog.csdn.net/nunchakushuang/article/list/2
※Python程序如何打包成exe
※自學 Python 之基礎語法
TAG:python |