當我們訪問網站/的時候,會執行hell_world函數,並把這個函數的返回值返回給瀏覽器,這樣瀏覽器就顯示hello world了
@app.route('/') def hello_world(): return 'Hello World!'
按照這種映射關系,我們可以再寫一個,比如文章列表
@app.route('/article_list/') def article_list(): return 'Article list'
這樣,我們訪問127.0.0.1:5000/article_list/的時候,瀏覽器就會顯示Article list
那么我們要如何給url傳參呢?
比如我們來寫個文章詳情頁
@app.route('/article/<article_id>/') #我們在<>里面寫參數名article_id def article_detail(article_id): #這里的參數名要和上面的一致,即article_id return '您請求的文章是:{}'.format(article_id)
訪問http://127.0.0.1:5000/article/1/
限定參數數據類型
可以對參數限定數據類型,比如上面的文章詳情,限定article_id必須為整數型
@app.route('/article/<int:article_id>/') def article_detail(article_id): return '您請求的文章是:{}'.format(article_id)
這樣當我們傳遞的參數是int類型的時候才能正常訪問,其他類型都會返回404
類型可以設置提下幾種:
string: 默認的數據類型,接收沒有任何斜杠"\ /"的文本
int: 整數形
float: 浮點型
path: 和string類似,但是接受斜杠
uuid: 只接受uuid字符串
any: 可以指定多種路徑,比如以下例子
@app.route('/<any(article,blog):url_path>/<id>/') def item(url_path, id): if url_path == 'article': return '文章詳情:{}'.format(id) else: return '博客詳情:{}'.format(id)
?key=value形式傳參
上面我們接受參數使用的是path形式,下面我們來使用查詢字符串的形式,即?key=value
如果有多個參數,則用&來拼接: ?key1=value1&key2=value2
from flask import Flask, request ... @app.route('/d/') def d(): wd = request.args.get('wd') return '您傳遞的參數是: {}'.format(wd)
如果你的頁面想做SEO優化,就是被搜索引擎搜索到,那么推薦使用path形式
如果無所謂,可以使用查詢字符串方式
提醒
在定義url的時候,一定記得在最后加一個斜杠,
1、如果不加斜杠,那么在瀏覽器中訪問這個url的時候最后加了斜杠,那么就訪問不到了,用戶體驗不好
2、搜索引擎會將不加斜杠的和加斜杠的視為不同的url,而實際上是同一個,那么會給瀏覽器造成一個誤解,加了斜杠就不會出現斜杠的問題