Python3.7 windows10環境で『Flask』の最小構成を試す
pythonベースのWebフレームワークは様々ありますが、ハードルの低さとそこそこの機能を兼ね備えているのはおそらく「Flask」です。
そこで、今回はPython3.7 windows10環境に「Flask」を入れて、最小構成で起動するところまでのチュートリアルを解説したいと思います。
Flask実行の準備
flaskパッケージのインストール
pip install flask
flaskをインストールするとjinja2などの必要なものも一緒についてくる。
※なおFlaskはAnacondaで実行するよりpython3.7で実行する方が管理しやすいです。
作業フォルダの作成
どこでも良いので作業フォルダを作成する。
今回は「C:\Python37\flask-project」に作成しました。
最小構成での実行
「main.py」の作成
まず「main.py」を作成します。
※このファイル名は別に他のものでもよいです。
#coding:utf-8 from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return "Hallo World!" if __name__ == '__main__': app.debug = True app.run() #デバッグモードTrueにすると変更が即反映される #ファイルのエンコードはUTF-8で保存すること #下記URLをブラウザに打ち込むとページが開く # http://127.0.0.1:5000/
htmlを使った表示
次にhtmlを使ったwebページ表示を行います。
「templates」「static」フォルダの作成
まず「.html」ファイルを入れるために「templates」フォルダ
「.css」ファイルを入れるために「static」フォルダを作ります。
※なおこの2つのフォルダの名前は固定です。他の名前にするとうまく動作しません。
「index.html」の作成
templatesフォルダに「index.html」を作成し保存します。
{% extends "layout.html" %} {% block body %} <h2> テスト </h2> <hr> {{ text }}<br> <br> {% endblock %}
「layout.html」の作成
同じくtemplatesフォルダに「layout.html」を作成し保存します。
<!DOCTYPE html> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel = "stylesheet" href = "static/style.css"> <title>{{ page_title }}</title> </head> {% block body %} {% endblock %} </html>
「main.py」の上書き
最後にmain.pyに下記の内容を上書きします。
#coding:utf-8 from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html',text="hello woああああrld",page_title="お試しページ") #最初に読み込むhtmlと、htmlに渡す変数を指定 if __name__ == '__main__': app.debug = True app.run() #デバッグモードTrueにすると変更が即反映される #ファイルのエンコードはUTF-8で保存すること #下記URLをブラウザに打ち込むとページが開く # http://127.0.0.1:5000/
実行
さきほどと同じ様にコマンドプロンプトからmain.pyを実行し、ブラウザからhttp://127.0.0.1:5000/を開いてみてください。
以下の様な画面が表示されていれば成功です。
※なおデバッグモードを有効にしておけば、コマンドプロンプトを再起動しなくてもファイルを保存する度に変更が反映されるため、ブラウザの再読込で設定の反映が確認できます。
なおmain.pyに記述した変数である「render_template('index.html',text="hello woああああrld",page_title="お試しページ")」はjinja2を使っています。
jinja2については下記の関連ページもご覧ください。
karupoimou.hatenablog.com