Flask入門:PythonでWebアプリを作成する基本手順
Pythonの軽量WebフレームワークFlaskを使って、Webアプリを作成する方法を初心者向けに解説。ルーティングやテンプレートの基本を学べます。
Flaskとは?
FlaskはPythonで書かれた軽量なWebフレームワークです。シンプルで柔軟性が高く、小規模から中規模のWebアプリケーション開発に適しています。Flaskは「マイクロフレームワーク」を標榜しており、最小限の機能からスタートして、必要な機能を追加していくスタイルです。
この記事では、Flaskを使って簡単なWebアプリを作成する手順を、ルーティングやテンプレートの基本とともに解説します。
環境準備
まず、Pythonがインストールされていることを確認してください。Python 3.6以上を推奨します。
仮想環境を作成し、Flaskをインストールします。
<h1>仮想環境の作成</h1>
python -m venv venv
<h1>仮想環境の有効化(Windows)</h1>
venv\Scripts\activate
<h1>仮想環境の有効化(Mac/Linux)</h1>
source venv/bin/activate
<h1>Flaskのインストール</h1>
pip install flask
最小限のFlaskアプリ
app.pyというファイルを作成し、以下のコードを記述します。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True)
このコードは、ルートURL(/)にアクセスがあったときに「Hello, World!」という文字列を返すだけのシンプルなアプリです。
アプリの実行
ターミナルで以下のコマンドを実行します。
python app.py
ブラウザで http://127.0.0.1:5000 にアクセスすると、「Hello, World!」と表示されます。
ルーティングの基本
Flaskでは、@app.route()デコレータを使ってURLと関数を結び付けます。これをルーティングと呼びます。
動的なURL
URLの一部を変数として受け取ることもできます。
@app.route('/user/<name>')
def show_user(name):
return f'User: {name}'
このようにすると、/user/Johnにアクセスした場合、User: Johnと表示されます。
HTTPメソッドの指定
デフォルトではGETメソッドのみを受け付けますが、methods引数で指定できます。
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
# ログイン処理
return 'Logged in!'
else:
return 'Login form'
テンプレートの使用
動的なHTMLを生成するには、Jinja2テンプレートエンジンを使います。Flaskには標準で組み込まれています。
テンプレートファイルの配置
プロジェクトのルートにtemplatesフォルダを作成し、その中にHTMLファイルを置きます。
例:templates/index.html
<!DOCTYPE html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>
テンプレートのレンダリング
render_template関数を使ってテンプレートを呼び出します。
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html', title='Home', name='World')
これで、/にアクセスすると、テンプレートに変数が埋め込まれたHTMLが表示されます。
静的ファイルの扱い
CSSやJavaScriptなどの静的ファイルは、プロジェクトのルートにstaticフォルダを作成して配置します。テンプレート内で以下のように呼び出します。
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
フォームデータの取得
POSTリクエストで送信されたフォームデータは、requestオブジェクトから取得します。
from flask import Flask, request
@app.route('/submit', methods=['POST'])
def submit():
username = request.form['username']
return f'Hello, {username}!'
リダイレクトとエラーハンドリング
リダイレクト
redirect関数を使って別のURLにリダイレクトできます。
from flask import redirect
@app.route('/old')
def old():
return redirect('/new')
404エラーハンドリング
カスタムエラーページを表示するには、errorhandlerデコレータを使います。
@app.errorhandler(404)
def page_not_found(error):
return render_template('404.html'), 404
まとめ
この記事では、Flaskを使ったWebアプリ作成の基本を解説しました。
Flaskはシンプルながら拡張性が高く、データベース連携や認証など、さまざまな機能を追加できます。公式ドキュメントも充実しているので、さらに学習を進めてみてください。