Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2
重定向,就是在客戶端提交請求后,本來是訪問A頁面,結果,后台給了B頁面,當然,B頁面中才有需要的信息。
在Flask中,使用redirect()函數實現重定向功能,函數原型如下:
flask.redirect(location, code=302, Response=None)
參數說明:
location是一個鏈接地址,可以使用url_for()函數得到,也可以是靜態文件地址,測試了模板文件的地址,失敗——看來模板還是挺安全的;
code可以取值為301、302、303、305、307,默認302,300、304不可以;
Response是一個響應類,默認是werkzeug.wrappers.Response,而flask.Response是werkzeug.wrappers.Response的子類——在寫文前測試了好多次使用Response這個參數,現在才知道,這是一位類,不是一個對象,就保持默認吧——為什么要更改呢?怎樣的更改是好的?;
下面是我的測試代碼及頁面:
1 # flask.redirect(location, code=302, Response=None) test 2 @app.route('/rd0') 3 def rd0(): 4 return redirect('the value in rd0') 5 6 @app.route('/rd1') 7 def rd1(): 8 return redirect(Response('the value in rd1')) 9 10 @app.route('/rd11') 11 def rd11(): 12 return redirect('rdtest', 302, Response=Response('the value in rd11')) 13 #return redirect('rdtest', 302, Response) # 更改為此行代碼了才可以正常 14 15 @app.route('/rd2') 16 def rd2(): 17 return redirect(url_for('hello')) 18 19 @app.route('/rd3') 20 def rd3(): 21 return redirect('/static/static1.html') 22 23 @app.route('/rd31') 24 def rd31(): 25 return redirect('/templates/tmpt1.html') 26 27 @app.route('/rd4') 28 def rd4(): 29 return redirect(url_for('hello'), 307)
各個鏈接的測試頁面:
/rd0
/rd1
/rd11
將rd11()的12行代碼注釋掉、取消地13行代碼注釋,測試頁面如下:這次傳了正確的參數,沒有發生服務器錯誤了!
/rd2
/rd3
/rd31
/rd4
絮叨:
初步掌握這個重定向函數了,花了近一個半小時啊!中間遇到的問題又讓自己進步了,開心!尤其是看英文文檔的功力——看着文檔都把參數類型搞錯了!