まずはwebアプリフレームワークであるFlaskをインストール
$pip install Flask
2.0.1 が入りました.
次にjinja2もインストールします。
HTMLにpythonを埋め込むテンプレートエンジンというものらしい。
$pip install jinja2
3.0.1 が入っていました。入れた記憶がないが、Flaskをインストールすると勝手にはいるのかな?
構成は
flaskr>templates>index.html, xxx.html
flaskr>__init__.py, main.py, yyy.py
の2系統ある感じする。templatesは決まりなのでフォルダ名を変えてはいけない。
フォルダ構成を作ったらindex.htmlを書いていきましょう。vs code を使っているなら ! を打つだけで、下のコードが自動的に生成されて便利です。langはenからjaに変えておきます。
1 2 3 4 5 6 7 8 9 10 11 12 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> </body> </html> |
ボディには下記のようなのを入れておきました。
1 2 3 4 5 |
<body> <h1>Flaskの使い方</h1> <h2>最新情報</h2> <p>まだ記事はありません。</p> </body> |
次、__initi__.pyです。
意味わからないけど、下記のような呪文を書きます。
インポートするのはflaskモジュールではなくて自分で作ったflaskrです。
1 2 3 |
from flask import Flask app = Flask(__name__) |
appはFlaskアプリケーションオブジェクト というらしいです。
つぎに、main.pyです。今作ったFlaskアプリケーションオブジェクトをインポートします。
トップページ(‘/’)にアクセスしたときに実行する関数を定義します。
1 2 3 4 5 6 7 8 9 |
# さっき __init__.pyで作ったFlaskインスタンス appをインポートする # なんでオブジェクトがインポートの対象になるのかは不明 from flaskr import app # ルーティングという呪文。Flaskの決まりごと。 @app.route('/') # / はルートで、トップURLを表す。 def index(): # トップ画面にアクセスしたときに実行される pass # とりあえずパス |
トップページにアクセスしたときに、render_templateメソドを使って、index.htmlが表示するようにしましょう。
1 2 3 4 5 6 7 8 9 |
from flaskr import app # レンターテンプレートをインポートする from flask import render_template @app.route('/') def index(): # トップ画面にアクセスしたときに実行される return render_template('index.html') |
最後に__init__.pyの方にこのmain.pyを呼び出せるようにしておく。
1 2 3 4 5 6 7 |
from flask import Flask app = Flask(__name__) print(app) # main.pyをインポートする import flaskr.main |
さて実行しよう
1 2 3 4 5 6 7 8 9 10 11 12 |
from flask import Flask from flask import render_template app = Flask(__name__) # ルーティングという呪文。Flaskの決まりごと。 @app.route('/') # / はルートで、トップURLを表す。 def index(): # トップ画面にアクセスしたときに実行される return render_template('index.html') app.run() |