flask訪問404_FLASK部落格系列3——路由
技術標籤:flask訪問404
斷更了幾天,我又回來了。
今天我們來講講路由。這個路由可不是我們家裡用的路由,Flask路由規則都是基於Werkzeug的路由模組的,它還提供了很多強大的功能。現代 web 應用都使用有意義的 URL ,這樣有助於使用者記憶,網頁會更得到使用者的青睞, 提高回頭率。
從上篇文章我們知道,使用 route()
@app.route('/') def hello_world(): return 'Hello World!' @app.route('/index') def hello_world(): return 'Hello World!'
誒,那有朋友就說,能不能帶引數呢?那當然可以,我們一起來看看。
帶變數的路由
1、在路徑中新增變數
聰明的同學已經猜到了。flask通過把URL的一部分標記為<variable_name>,就可以實現在URL中新增變數。
@app.route('/hi/<username>')
def show_user_ifno(username):
return 'Hi %s' % username
我們只需要在位址列中輸入 http://127.0.0.1:5000/hi/jack, 你將在頁面上看到“Hi jack”的字樣。URL路徑彙總 /hi/ 後面的引數被作為show_user_info()
2、為變數指定型別
在宣告變數時,我們還可以指定變數被對映的型別。使用方法也很簡單,我們只需要加一個轉換器即可。通過使用 <converter:variable_name>
, 為變數指定規則。
比如:
@app.route('/user/<int:user_id>')
def get_user(user_id):
return 'User ID: %d' % user_id
如果你嘗試訪問 http://127.0.0.1:5000/user/jack, 你會看到404錯誤,如下圖:
這是應為引數型別轉換器int:
我們接著來看看,flask支援哪幾種轉換器:
string
(預設值) 接受任何不包含斜槓的文字
int
接受正整數
float
接受正浮點數
path
類似 string
,但可以包含斜槓
uuid
接受 UUID 字串
3、路徑分割符的作用
在URL路徑中,“/”被用作路徑分隔符。當它被寫在URL路徑的開頭時,則表明本路徑是一個絕對路徑。當它被寫在路徑中間時 ,它被用作隔離路徑的層級。那麼,當它被寫在最後時,它的作用又是什麼呢?
我們來看下面的例子。
@app.route('/hello')
def hello():
return 'Hello World!'
@app.route('/hi/')
def hi():
return 'Hello World!'
第1個路徑沒有“/”分隔符,它看上去更像是一個檔名;第2個路徑的最後有“/”分隔符,它看上去更像是一個目錄。兩種方式對它們的訪問效果可是有很大不同的:有“/”作為結尾的路徑除了可以接受對其本身的訪問,也可以接受相同路徑字首但不帶“/”結尾的路徑訪問;而不帶“/”結尾的路徑樣式則沒有此效果。下面我們以表格的形式來呈現給大家看,看完你就會一目瞭然。
當然,路由的知識還有很多,後面還有自定義轉化器,路由地址反向生成等。內容還是蠻多的, 如果您想繼續深入瞭解,可以留言。下期我們再見。