# 前言 在大學和碩士期間主要都是接觸深度學習和電腦視覺的方面的研究,但最近慢慢發現,除了要會這些,許多公司也更重視如何把模型的結果接上後端的API或APP來做使用。但我對製作API或APP是完全沒有概念的,所以這是開始學習製作API和APP的第一天。 這是我的學習紀錄,所有範例都是跟著[Book_Python Flask實作記錄](https://hackmd.io/GVo6X6LoS3GNIW50LBJytw)的教學,並使用我自己的方法整理,以及加上自己的看法。 # 說明 在一般的網頁操作中,使用者執行某一個動作之後,我們需要將使用者引導到另一個頁面,這個動作可以透過```redirect```來達成。 延續[從零開始學Flask #08 form action url_for](https://hackmd.io/GBzzKom1RZSOjXki8opSjA?view)的範例,使用者按下Submit之後通常會經過驗證,驗證成功會引導使用者到下一個頁面。所以我們要做的是登入後,透過redirect做到畫面跳轉。 - 只需稍微調整08範例中的python檔和新增一個新的html文件 ```python= from flask import Flask, request, redirect, url_for, render_template # 固定格式 app = Flask(__name__) @app.route('/loginurl', methods=['GET', 'POST']) def login(): if request.method == 'POST': # 使用redirect(url_for('function')) 重新導向到要跳轉的function及url retrun redirect(url_for('hello', username=request.form.get('username'))) return render_template('09_login.html') # 接收login()內的redirect(url_for('function'))傳遞的參數 @app.route('/hello/<username>') def hello(username): return render_template('09_hello.html', username=username) if __name__ == "__main__": app.run(debug=True) ``` 第8行:判斷```request.method```使否為```POST``` 第10行:使用```redirect(url_for('function'))```重新導向到```@app.route('/hello/<username>')```,並傳遞參數```username``` - 新增09_hello.html文件 ```html= <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF_8"> <title> Hello </title> </head> <body> hello, {{username}}, Welcome my homepage </body> </html> ``` 第10行:設置參數```username```,會接收來自```@app.route('/hello/<username>')```內的參數 - 09_login.html與08的範例一樣 ```html= <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF_8"> <title> Hello Page </title> </head> <body> <form method="post" action={{url_for('login')}}> <p> <input type="text" name="username"> </p> <p> <button type="submit"> Submit </button> </p> </form> </body> </html> ``` <br> ==登入畫面如下圖所示:== ![login](https://hackmd.io/_uploads/ryztozkla.png =70%x) <br> ==成功透過```redirect```做到畫面跳轉,如下圖所示:== ![redirect](https://hackmd.io/_uploads/rJnx3f1xT.png =70%x) <br> 按下Submit之後,透過```redirect```將使用者重新導向到```url_for('hello')```,並順利傳遞參數```username```給```09_hello.html```文件中的```{{username}}``` <br> [Source Code Please Visit](https://github.com/ChrisCodeNation/How-to-Make-an-API-with-Flask-Course/blob/main/09_redirect_after_actions.py)