flask について
flask は、Flask アプリの構築やデプロイに取り組む Python Web 開発者向けのスキルガイドです。ルーティング、Jinja2 テンプレート、ブループリント、WSGI 設定、拡張機能を扱います。
主な機能
- 01ルート定義と Jinja2 テンプレートの描画
- 02ブループリントによるアプリの整理
- 03WSGI と拡張機能の設定
- 04Flask-SQLAlchemy と Flask-Login の統合
- 05Gunicorn によるアプリのデプロイ
活用シーン
- 01サーバーサイドレンダリングのページ構築
- 02REST API の開発
- 03Flask プロジェクトのブループリント分割
- 04本番アプリの設定とデプロイ
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ partme-ai/ full-stack-skills --skill flaskインストール後、Claude Code で/flaskを入力して読み込まれたか確認します。
同梱ファイルLICENSE.txt
詳細
このスキルを使用する場面
次のようなことをユーザーが希望する場合は、いつでもこのスキルを使用します。
- Flask のルーティングとテンプレートを使って Python の Web アプリケーションを構築する
- WSGI、ブループリント、拡張機能、デプロイを設定する
- Flask-SQLAlchemy、Flask-Login、その他の拡張機能を統合する
- REST API を作成する、または Jinja2 でサーバーサイドレンダリングされたページを提供する
このスキルの使い方
ワークフロー
- アプリを作成する — Flask をインスタンス化してルートを定義します
- テンプレートを追加する — HTML のレンダリングに Jinja2 を使用します
- ブループリントで整理する — 機能をブループリントのモジュールに分割します
- 設定してデプロイする — 環境設定を行い、Gunicorn でデプロイします
クイックスタートの例
# app.py
from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
app.config['SECRET_KEY'] = 'change-me-in-production'
@app.route('/')
def index():
return render_template('index.html', title='Home')
@app.route('/api/items', methods=['GET', 'POST'])
def items():
if request.method == 'POST':
data = request.get_json()
# Process and save item
return jsonify({'status': 'created', 'item': data}), 201
return jsonify({'items': []})
if __name__ == '__main__':
app.run(debug=True)
アプリケーションファクトリーパターン
# __init__.py
from flask import Flask
def create_app(config_name='default'):
app = Flask(__name__)
app.config.from_object(config[config_name])
# Initialize extensions
db.init_app(app)
login_manager.init_app(app)
# Register blueprints
from .auth import auth_bp
app.register_blueprint(auth_bp, url_prefix='/auth')
from .main import main_bp
app.register_blueprint(main_bp)
return app
# Development
flask --app app run --debug
# Production
gunicorn -w 4 -b 0.0.0.0:8000 "app:create_app()"
ブループリントの例
# auth/routes.py
from flask import Blueprint, render_template, redirect, url_for
auth_bp = Blueprint('auth', __name__, template_folder='templates')
@auth_bp.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
# Authenticate user
return redirect(url_for('main.index'))
return render_template('auth/login.html')
ベストプラクティス
- モジュール性を高めるため、ブループリントとともにアプリケーションファクトリーパターンを使用します
- 機密性の高い設定をソースコードに含めず、環境変数を使用します
- リバースプロキシ(nginx)の背後で Gunicorn または uWSGI を使ってデプロイします
- Flask-WTF で CSRF 保護を有効にし、セキュリティヘッダーを設定します
- アプリケーションコンテキストを使った対話型デバッグには
flask shellを使用します
リファレンス
- 公式ドキュメント:https://flask.palletsprojects.com/
キーワード
flask, Python web, routing, templates, Jinja2, blueprints, WSGI, REST API, Gunicorn
コメント
Markdown 対応