一個網站是由多個頁面組成,而每個頁面的訪問地址都不一樣,這便需要對路由進行管理
普通路由
默認訪問位置,如果我們在路由中單獨寫個‘/’他訪問的就是默認頁面
例如:
from flask import Flask,render_template
app = Flask(__name__)
# 學了路由管理,可以有多個不同的界面
@app.route('/')
def hello_world():
t=render_template('index.html')
return '我是默認頁面'
if __name__ == '__main__':
app.run()
注意:這個訪問路徑是:127.0.0:5000 這個就是默認訪問的
再看下面這個
from flask import Flask,render_template
app = Flask(__name__)
# 學了路由管理,可以有多個不同的界面
@app.route('/xm1')
def head1():
return '我是頁面一'
@app.route('/xm2')
def head2():
return '我是頁面二'
if __name__ == '__main__':
app.run()
帶參數的路由
更多的時候,路由不是固定的,根據顯示的不同頁面,路由裏面某些字段會發生變化
路由裏面還可以帶參數
from flask import Flask,render_template
app = Flask(__name__)
# 學了路由管理,可以有多個不同的界面
@app.route('/xm1/<cs1>') # 參數傳遞
def head1(cs1):
# 函數裏面接收參數
return '我是頁面一,接收的參數是%s'%cs1
if __name__ == '__main__':
app.run()
當然也可以接收多個參數的,並且這裏的參數是必須的多個參數是下面這樣定義的,當然訪問的時候,也需要每個參數之間用‘/’隔開
from flask import Flask,render_template
app = Flask(__name__)
# 學了路由管理,可以有多個不同的界面
@app.route('/xm1/<cs1>/<cs2>') # 參數傳遞
def head1(cs1,cs2):
# 函數裏面接收參數
return '我是頁面一,接收的參數一是%s 參數二是:%s'%(cs1,cs2)
if __name__ == '__main__':
app.run()
URL參數類型過濾和轉換器
參數也是有數據類型的,默認是字符類型,主要有以下幾種數據類型
類型 |
作用 |
string |
默認的字符轉換器,匹配不包含/的字符串 |
int |
接受並轉換成整數 |
float |
接受並轉換成浮點數 |
path |
匹配包含/的字符串 |
uuid |
接收uuid類型的字符串 |
from flask import Flask,render_template
app = Flask(__name__)
# 學了路由管理,可以有多個不同的界面
@app.route('/xm1/<cs1>/<float:cs2>/<int:cs3>') # 參數傳遞
def head1(cs1,cs2,cs3):
# 函數裏面接收參數
return '我是頁面一,接收的參數一是%s 參數二是浮點型的:%f參數三是整形的他是:%d'%(cs1,cs2,cs3)
if __name__ == '__main__':
app.run()
注意:“:”號前後不要有空格,否則會報錯。根據運行的截圖,我們也可以看出這個轉換器確實起到了過濾和轉換的作用。使用轉換器,可以讓我們的路由處理更加嚴謹,
正則路由示例
這裏需要學習正則和裝飾器方面的知識,我已經把前面忘了,,先暫留個坑
構建url地址
有的時候需要在一個頁面上跳轉到另一個頁面,那就需要獲取另一個頁面的url路由地址,我們可以把地址直接硬編碼在頁面上面,但是這樣並不靈活,尤其是另一個頁面的url路由也需要可變參數的時候,硬編碼就沒有辦法了。更好的辦法是在後臺生成另一個頁面的url地址,這個時候就要用到一個新的方法url_for()了。
方法如下:
@app.route('/h1')
def head1():
css3=url_for('h2')
return '主頁<a href=%s>轉到</a>'%css3
@app.route('/h2')
def h2():
h1=url_for()
return '<h2>這裏是h2</h2>,版本號是'
if __name__ == '__main__':
app.run()
這個是簡單的,如果第二個頁面也需要參數,就麻煩一點了
@app.route('/h1')
def head1():
css3=url_for('h2',t=100) #在這裏需要指定,傳參了
return '主頁<a href=%s>轉到</a>'%css3
@app.route('/h2<t>')
def h2(t):
# h1=url_for()
return '<h2>這裏是h2</h2>,版本號是%s'%t
if __name__ == '__main__':
app.run()