PythonのFlaskでappコンテキストのエラーの解決方法


PythonのFlaskを触っているとrender_templateの関数でRuntimeError: Working outside of application context.というエラーが出た。プログラミング初心者なので始めは何のことやらわからかったが、調べるとFlaskの関数はFlaskのアプリケーションコンテキストの中でしか実行できないらしい。

つまり、

@main.route('/test')
def test():
    index_html = render_template("index.html")
    return index_html

上記のコードは実行できるが

index_html = render_template("index.html")
@main.route('/test')
def test():
    return index_html

このコードはrender_templateがコンテキストの外にあるのでエラーとなる。

どうしてもルーティングや他のコンテキスト内で実行したいときは

with app.app_context():
# ここに書く

このwithの中に書くとエラーが出ずに実行できる。