1. 概要
ルーティングについて、少し突っ込んでみます。
2. 基本
下記の状態で。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, World!"
@app.route('/hello')
def hello():
return "Hello"
if __name__ == "__main__":
app.run()
プロジェクトルートに。
https://example.com/flask/
でアクセスできるものとして、ドキュメントルートにアクセスすれば、ブラウザに「Hello, World!」と表示され。
https://example.com/flask/hello
にアクセスすれば、ブラウザに「Hello」と表示されます。
3. 変数化
「URL」の一部を変数として受け取ることができるようです。
@app.route('/user/<username>')
def show_user_profile(username):
return f'ユーザー名: {username}'
末尾を「username」という変数名として扱います。
https://example.com/flask/user/hogehoge
にアクセスするとブラウザに「ユーザー名: hogehoge」と表示されます。
@app.route('/post/<int:post_id>')
def show_post(post_id):
return f'記事番号: {post_id}'
末尾を「int」型の変数名「post_id」として扱います。
https://example.com/flask/post/123
にアクセスするとブラウザに「記事番号: 123」と表示されます。
4. HTTP メソッド
「request」というクラス(?)をインポートすると。
「HTTP」メソッドをわけて区別することができます。
from flask import request
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
user = request.form['username']
return f'{user}さん、ログインしました'
else:
return '''
<form method="post">
<input type="text" name="username">
<input type="submit" value="ログイン">
</form>
'''
上記の記述をしておいて。
https://example.com/flask/login
にアクセスすると、下記が表示されます。