【Python】Flaskで表示された結果をHTMLファイルとして保存する
Flaskの表示結果をHTMLファイルとして保存したい
Pythonの軽量webフレームワーク「Flask」を使えば、ユーザーからの入力に対して簡単に動的なhtmlを返す事ができます。
ただFlaskで表示される結果は基本的に一時的なものであり、特に設定をしない限り表示されたhtmlコードが何処かに保存されたりすることは有りません。
そこで今回はFlaskの表示結果をHTMLファイルとしてそのまま保存する方法をご紹介したいと思います。
「render_template」に変数入りのhtmlコードを作成し、with openで書き出す
方法は簡単です。Flaskの関数である「render_template」でテンプレートhtmlに変数を入れたhtmlを作成し、with openでファイルとして保存するだけです。
#代入する値。実際にはフォームからのGET/POST通信での値などを入れるとよい num=111111 #ここでrender_templateに変数を入れる html = render_template("output.html",num=num) #最後にHTMLファイルとして保存 with open("templates/test.html", mode='w',encoding="utf-8") as f: f.write(str(html))
注意点としては、保存先を「templates」フォルダにしなければならないということぐらいです。
保存したHTMLファイルの読み込み
読み込みの際には、先程出力したファイルを指定します
#結果の表示 return render_template("test.html")
サンプルコード
from flask import Flask, render_template,request import datetime app = Flask(__name__) #indexページ(フォーム画面) @app.route('/') def index(): ########################### #代入する値。実際にはフォームからのGET/POST通信での値などを入れるとよい num=111111 #ここでrender_templateに変数を入れる html = render_template("output.html",num=num) #最後にHTMLファイルとして保存 with open("templates/test.html", mode='w',encoding="utf-8") as f: f.write(str(html)) ########################### #結果の表示 return render_template("test.html") if __name__ == '__main__': app.debug = False#デバッグモードTrueにすると変更が即反映される app.run()
HTMLファイルとして書き出しておくことで、表示結果を使いまわしたりできます。