PythonのFlaskがデフォルトで参照するパスを変更する方法

記事内に広告が含まれています。

PythonのFlaskでは利用する固定のファイル「テンプレート」や「スタイルシート」などは決まった名前のフォルダーに配置しないと参照できません。
(「templates」フォルダーや「static」フォルダー)

基本はそれで良いのでしょうけど、ひとまとめにしたい場合もあります。

今回はFlaskデフォルトで参照するパスを変更する方法を解説します。

Flaskがデフォルトで参照するパスを変更する

PythonのFlaskは利用する「テンプレートファイル」は「templates」、スタイルシートやJavascriptのファイルなどは「static」フォルダーに配置されていると仮定して動作しています。
<<通常のフォルダー構成>>

root
  |--static
  |   |--common.css
  |   |--common.js
  |
  |--templates
  |   |--index.html
  |
  |--main.py

そのフォルダーは実は任意の場所に変更できます。
<<変更後のフォルダー構成>>

root
  |--parts
  |   |--static
  |   |    |--css
  |   |    |   |--common.css
  |   |    |--js
  |   |        |--common.js
  |   |
  |   |--templates
  |   |    |--index.html
  |
  |--main.py

サンプルとして「parts」フォルダー配下にテンプレートとスタイルシート、Javascriptのソースファイルを配置してみます。

static_folderとtemplate_folder

Flaskが参照するパスを変更するにはFlaskの生成時に「static_folder」、「template_folder」を指定して行います。

実際には以下のようなソースになります。

from flask import Flask, render_template

app = Flask( __name__, static_folder="parts/static", template_folder="parts/templates")

@app.route( "/index" )
def index():
    return render_template( "index.html" )

if __name__ == "__main__":
    app.run()

まとめ

Flaskが参照するパスを変更するには引数で「static_folder」、「template_folder」を指定してFlaskを生成することで可能になります。

以上、PythonのFlaskがデフォルトで参照するパスを変更する方法でした。

タイトルとURLをコピーしました