Flaskの小技まとめ|LAN内からのアクセス・関数の呼び出し・favicon設定
/ 4 min read
Table of Contents
はじめに
Flaskで小さなツールを作るときによく使う設定をまとめました。どれも数行で済みますが、毎回調べ直しがちなものです。
同じLAN内の別端末からアクセスする
開発サーバーは既定では自分のPCからしか見えません。run() にホストを指定すると、同じネットワーク内の他の端末からアクセスできるようになります。
if __name__ == "__main__": app.run("0.0.0.0")192.168.1.2 のPCで実行していれば、スマートフォンなどから http://192.168.1.2:5000 で開けます。スマホでの表示確認をしたいときに便利です。
ポートを変えたい場合は指定します。
app.run("0.0.0.0", port=8000)ルーティングから任意の関数を呼び出す
ボタンを押したら処理を実行して、元のページに戻したい、というパターンです。
from flask import Flask, redirect, render_template, url_for
app = Flask(__name__)
def hoge_app(): # 実行したい処理 ...
@app.route("/")def top_page(): return render_template("index.html")
@app.route("/hoge")def hoge(): hoge_app() return redirect(url_for("top_page"))
if __name__ == "__main__": app.run("0.0.0.0", debug=True)url_for() に渡すのはURLパスではなく関数名です。url_for("top_page") は / を返します。パスを直接書かずに済むため、あとからURLを変更しても他の箇所を直す必要がありません。
faviconを設定する
favicon.ico を static フォルダに置き、ルートを1つ追加します。
@app.route("/favicon.ico")def favicon(): return app.send_static_file("favicon.ico")HTMLのテンプレート側で指定する方法もあります。
<link rel="icon" href="{{ url_for('static', filename='favicon.ico') }}" />おわりに
Flaskは小さく作れるのが利点ですが、0.0.0.0 と debug=True の組み合わせだけは扱いを間違えないようにしてください。手元で動かす分には便利な設定が、そのまま公開されると危険な設定になります。
