3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Flaskで動的なWebアプリを作成

Posted at

前回はFlaskの環境構築について説明しました。
今回はFlaskで動的なWebアプリの作成についてまとめました

・前回の記事

・前々回の記事

テンプレート使用

flaskのrender_templateを使ってテンプレートを使用できます

index.py
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    title = 'demo'
    return render_template('index.html', title=title)

ルートパス'/'にアクセスすると、リクエストを受け付け、
index()が呼び出されて'index.html'のテンプレートのレスポンスが返されます

このレスポンスを画面に表示させるためにtemplateが必要です。
templateディレクトリを作成します

mkdir template

templateディレクトリに移動し、index.htmlファイルを作成します

cd template
touch index.html
index.html
<!DOCTYPE html>
<html>
<head>
    <title>demo site</title>
</head>
<body>
    <h1>{{ title }}</h1>
</body>
</html>

実行します

flask run --app index

このコードで画面上に「demo」という文字が出力されます

index.pyでrender_template()のパラメータで渡した'title'の値を
index.htmlの{{ title }}に渡しています

render_template()のパラメータを増やすことが可能です

index2.py
(省略)
@app.route('/')
def index():
    title = 'demo'
    message = 'Hello World'
    return render_template('index.html', title=title, message=message)
index2.html
<!DOCTYPE html>
<html>
<head>
    <title>demo site</title>
</head>
<body>
    <h1>{{ title }}</h1>
    <br>
    <h1>{{ message }}</h1>
</body>
</html>

こうすると画面上に「demo」という文字の下に「Hello World」という文字が出力されます

ルーティング

GET、POST、PUT、DELETEの4つのHTTPメソッドに対応するルーティングのリクエスト処理をFlaskで実装してみます

Flaskでルート'/*'を設定するにはroute()というデコレータを使用します
こうすることで、URLのパスやHTTPメソッドに応じて異なる処理を実行することができます
ユーザーがGETメソッドで特定のURLにアクセスした場合は、GETメソッドに対応する関数が呼び出されます。同様に、POSTメソッドやPUTメソッド、DELETEメソッドなどのHTTPメソッドに対応する関数を設定することもできます

例としてGETメソッドを作成してみます

get.py
from flask import Flask, request

app = Flask(__name__)

@app.route('/get', methods=['GET'])
def get_data():
    return 'GET Request'

if __name__ == '__main__':
    app.run()

GETリクエストを受け取ると、get_data()が呼び出され'GET Request'という文字列が返されます

put.py
from flask import Flask, request

app = Flask(__name__)

@app.route('/put/user_id', methods=['PUT'])
def put_user(user_id):
    data = request.get_json()
    user = data['user'][user_id]
    ...
    # update
    ...
    return {200, f'{user[user_name]} update success'}

if __name__ == '__main__':
    app.run()

これはPUTリクエストを受け取ると、put_user()が呼び出され、対象のuser_idのユーザ情報を更新した後に、レスポンスでステータス200と更新完了のメッセージを返しています

このようにルーティングにより様々なリクエストを処理することができ、ユーザがアクセスするURLに応じてFlaskが様々な方法でデータを処理することができます

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?