Flask TIPS
Flask Degub Mode
デバッグモードのメリット
- オートリローダが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の使い方
アプリケーションコンテキスト と リクエストコンテキスト
- 「コンテキスト」とは、一般的には何かが存在する環境や状況を指す。
- プログラミングにおいては、コンテキストは特定の操作やタスクが実行される際の状態や環境を意味する