skip to content
barorin&

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.icostatic フォルダに置き、ルートを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.0debug=True の組み合わせだけは扱いを間違えないようにしてください。手元で動かす分には便利な設定が、そのまま公開されると危険な設定になります。

この記事を書いた人

barorinのプロフィール画像

barorin公認会計士

会計とITの二足のわらじで働く公認会計士です。Pythonを中心に、会計・監査の実務で実際に使っているコードや、Ubuntu・Raspberry Piの設定メモを書いています。