flaskを触り始めたので、自分向けのチートシートとして書き留めてます。
Flaskとは?
Pythonで利用できる『Webアプリケーションフレームワーク』のこと。
Flaskのセットアップ
% pip3 install flask
以上。
FlaskのHello World
hello.py
from flask import Flask #Flaskのインポート#お約束
app = Flask(__name__) #Flaskのクラスのインスタンス化#お約束
@app.route('/') #「デコレーター」という機能を使ってルーティングの設定(‘/’を指定はルートへのアクセスを意味します)
def index(): #デコレーターで指定したパスにアクセスされた際に動作する関数を定義
return 'Hello World!' #関数の戻り値がWebリクエストのレスポンスとなる
if __name__ == '__main__':
app.run() #Webアプリの実行
% python3 hello.py
テンプレート
同階層に『templates』というディレクトリを用意しその中にテンプレートファイルを配置して > return render_template(‘hello.html’, …(各種パラメータ)...) なんて書き方もできる。
main.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('hello.html', title='flask test', name='honda')
if __name__ == '__main__':
app.run()
templates/hello.html
<!doctype html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h3>Hello {{ name }}さん!</h3>
</body>
</html>
URLパラメータを使う
main.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World!'
@app.route('/hoge/<name>') #URLパラメータとして扱うアクセスパターンを指定
def hoge(name=None): #URLパラメータとして受け取った値を関数の引数として受け取れるようにしている
return name
if __name__ == '__main__':
app.run()
GETパラメータを扱う
main.py
from flask import Flask, request #リクエストパラメータを扱うためのモジュール
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World!'
@app.route('/hoge')
def hoge():
return request.args.get('name') #『request.args.get()』メソッドでGETパラメータを取得
if __name__ == '__main__':
app.run()
POSTパラメータを扱う
main.py
rom flask import Flask, request #リクエストパラメータを扱うためのモジュール
app = Flask(__name__)
@app.route('/')
def index():
return render_template(‘hello.html’, title=’post test’)
@app.route('/hoge', methods=['POST']) #『POSTパラメータを受け取る』ための明示的な指定
def hoge():
if request.method == 'POST':
name = request.form['name'] #『request.form()』メソッドでPOSTパラメータを取得
else:
name = 'no param'
return name
if __name__ == '__main__':
app.run()
templates/hello.html
<!doctype html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<form method=“POST” action=“./hoge”>
<input type=“submit” value=“送信”>
</form>
<h3>Hello {{ name }}さん!</h3>
</body>
</html>
JSONレスポンスを返却
main.py
from flask import Flask, jsonify //リクエストパラメータを扱うためのモジュール
app = Flask(__name__)
@app.route(‘/json’)
def json_res():
return jsonify(name=‘sosuke’,
sex=‘male’,
age=’20’
if __name__ == '__main__':
app.run()