Develop Flask Application

Flask TIPS


Flask Degub Mode

デバッグモードのメリット

  • エラー情報がWebページに表示される
  • オートリローダがONになり、コード編集時に自動的にアプリに反映される(手動による再起動が不要になる)
# if __name__ == "__main__": で起動する
if __name__ == "__main__":
    app.run(debug=True, host="0.0.0.0", port=5050)
# .env ファイルに記載して、flask run で起動
FLASK_APP=apps.py
FLASK_DEBUG=1     #1 degub モード、 0で production モード.
FLASK_RUN_HOST='0.0.0.0'
FLASK_RUN_PORT=5050

ENDPOINT

@app.route("/hobby", endpoint="preferable")
def hobby():
    return "Programming"

@app.route("/ask")
def ask():
    return redirect(url_for("preferable"))
  • Endpoint(エンドポイント)は通常、APIにアクセスするためのURIのことを指すが、FlaskではURIと紐づけられた**関数名**または**関数につけた名前**のことを指す。
  • endpoint名を設定しない場合、関数名hobbyがEndpointになる

CRUD と HTTPメソッド

@app.route("/hobby", methods=["GET”], endpoint="preferable")

def hobby():
    return "Programming"
  • CRUDは、アプリケーション実行したいリソースの操作こと。プロトコルがHTTPの場合HTTPメソッドを利用する
  • HTTPメソッドとは、クライアントがサーバーにリクエストする際のコード(GET、POST、PUT, DELETEなど)
  • 参照などのリクエストはGETが使われる。メソッドが指定されない場合デフォルトでGETが使われる

Ruleと変数

@app.route("/introduction/<name>")
def introduction(name):
    return f"Hi, there, this is {name}!"
  • @app.routeデコレーターのRuleに変数を指定できる。変数は、<変数名>の形式で指定する

テンプレートエンジン

  • テンプレートエンジンとは、テンプレートと呼ばれるひな形とデータを合成して成果ドキュメントを出力するソフトウェア
  • レンダリングとは、情報として読み取れる形にすること
# app.py

@app.route("/hello")
def hello():
    return render_template("helloworld.html", name="Mash")
<!DOCTYPE html>
<HTML>
    <HEAD>
        <meta charset="utf-8">
        <title>NaC APPs</title>
        <link rel="stylesheet" href={{ url_for('static', filename='stylesheet.css')}}>
    </HEAD>

    <BODY>
        <H1>Hello Flask!</h1>
        <h2>I am {{ name }}!</h2>
    </BODY>
</HTML>
  • 変数として与えたname=”Mash”とHTMLのテンプレートをレンダリングして、I am Mash!と表示させている

Jinja2 の利用

staticファイルとCSSの設定方法

url_forの使い方

アプリケーションコンテキスト と リクエストコンテキスト

  • 「コンテキスト」とは、一般的には何かが存在する環境や状況を指す。
  • プログラミングにおいては、コンテキストは特定の操作やタスクが実行される際の状態や環境を意味する