前々回の記事
前回の記事となります
全てこちらをベースに進めております
前回までは
ルーティングでURLとFlaskの処理を対応づけることで、URLと関数を紐付けることを細かく確認しました
今回は
render_template() 関数による読み込み
から実行していこうと考えております
render_template() 関数とは
render_template() 関数を利用することで、Template(=雛形) である user.html に サーバのデータを組み込めます
render_template() 関数をを使う場合には、importによる記述と
templatesフォルダを新たに作成しそこにhtmlファイルを置きます
render_template() 関数をを用いる際には、templatesフォルダを作成する必要があり
作成していないとhtmlファイルを読み込むことが出来ませんのでご注意ください
そこでまず templatesフォルダを作成します
- app.py(flaskでサーバー処理を行うpythonファイル)
- templates(HTMLファイルが沢山入るフォルダ)
└ index.html
ここでエラーが出るため python のインタプリタを調整中です
また、ここまで基本 windows のデスクトップ環境で実施していたため
ubuntu の実施も検討します
Linux(ubuntu)で再検討
仮想環境の作成 ubuntu
python3 -m venv venv
仮想環境の有効化 ubuntu
source venv/bin/activate
仮想環境を有効にして 最小限のアプリを作成する
flaskbookフォルダを作成します
flaskbook
- apps
- minimalapp
- venv
minimalapp配下にapp.pyを作成する
apps/minimalapp/app.py
#flask クラスをimport
from flask import Flask
#Flask クラスをインスタンス化する
app = Flask(__name__)
#URLと実行する関数をマッピングする
@app.route("/")
def index():
return "Hello, Flask book like CEML"
app.py の環境変数を設定します
Linuxの環境変数とは、Linuxで動作するプログラムの設定値や読み込むファイルのディレクトリなどを設定した外部から参照できる変数のようなものです
最小限のアプリを起動する前に 環境変数FLASK_APP と FLASK_ENV を設定する必要が有ります
FLASK_APP=アプリの場所
FLASK_ENV=development または production を指定する
development を設定すると デバックモードがonになる
app.py のあるディレクトリに移動して 環境変数を設定 Linux
export FLASK_APP=app.py
export FLASK_EV=development
その後
flask run
で実装
右のローカルホスト上で http://127.0.0.1:5000/
Hello, Flask book like CEML
と表示されます
exportコマンドで環境変数を設定しましたが
それだとコンソールからのログアウト時に消えてしまいます
アプリ単位で環境変数を設定する
.envを利用すると アプリ単位で環境変数を設定できます
python-dotenvをインストールします
pip install python-dotenv
その後 - minimalapp 配下に
.envを作成し
FLASK_APP = app.py
FLASK_EV = development
アプリケーションルート
アプリケーションルートとは、アプリを実行するディレクトリのことで
モジュールやパッケージを読み込むパスは
アプリケーションルートにより決まります
.env が有る場合 .envがあるディレクトリがアプリケーションルートとなります
flaskbook
- apps
- minimalapp
- .env
- venv
minimalappの配下がアプリケーションルートとなります
今後 複数のアプリ開発をする際
その都度VSCodeのウインドウを切り替えなくてすむように
アプリケーションルートをflaskbookディレクトリに変更しましょう
flaskbook
- .env
- apps
- minimalapp
- venv
これでアプリケーションルートがflaskbookに変わりました
flaskbookディレクトリにに移動し
flask run コマンドを実行
右のローカルホスト上で http://127.0.0.1:5000/
Hello, Flask book like CEML
と表示されます
次はルーティングを利用してみます