Flaskは、Pythonの軽量WEBフレームワークである。
Flaskのインストール
とりあえず Flaskをインストールしよう!
pip install Flask
Anacondaの人はこちら。
conda install flask
作業フォルダの作成
Flaskアプリを作るための作業フォルダを作ろう。
mkdir flask_sample
cd flask_sample
Hello Flask
次のファイルを作成して、定番の「Hello World」をブラウザに表示してみよう。
「app.py」
from flask import Flask
app = Flask(__name__)
@app.route('/')
return "Hello World"
if __name__ == "__main__":
app.run(debug=True)
Flaskの起動
次のコマンドでFlaskアプリを実行する。
python hello.py
起動したら「http://localhost:5000/」にアクセスして、ブラウザに「Hello World」が表示されればOKだ!
テンプレートエンジンのJinja2を使う
Flaskには標準でHTMLテンプレートエンジンである「Jinja2」が付属しています。テンプレートエンジンを使用することで、静的なHTMLに対し部分的に動的な処理を施すことができます。
また、サイトヘッダーやフッターなど、どのページでも共通する部分をレイアウトファイルとして作成しておくことで、共通化を図ることができます。
レイアウトファイルの作成
プロジェクトフォルダの下に「templates」フォルダを作成し、そこに「layout.html」というファイルを作成します。(ファイル名は任意の名前でもOK)
ルート
├─ app.py
└─ templates
└─ layout.html ←これを作成
「layout.html」
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ title }}</title>
</head>
<body>
{% block content %}
<!-- ここにメインコンテンツを書く -->
{% endblock %}
</body>
</html>
{{ title }}
には、個別ページで指定したタイトルが入ります。また、{% block content %}
で囲われた部分に個別ページのコンテンツ(HTML)が入ります。
個別ページの作成
お次は、個別ページを作ります。レイアウトファイルで定義した{% block content %}
の中身に入るコンテンツを作成します。
ルート
├─ app.py
└─ templates
├─ layout.html
└─ index.html ←これを作成
「index.html」
{% extends "layout.html" %}
{% block content %}
<h3>Hello Flask</h3>
{% endblock %}
extends
には使用するレイアウトファイルを指定します。
また、{% block content %}
内にコンテンツを作成します。
Jinja2についてもっと詳しく
FlaskでUIを伴うWEBアプリを作る場合、Jinja2のテンプレートエンジンに関する知識は必須です。
Jinja2についてもっと詳しく知りたい場合は、次の記事で詳しく紹介しております。
【関連記事】
▶Jinja2の使い方を紹介。Flask+Jinja2
静的ファイルを扱う
Flaskでは CSS・JavaScirpt・画像ファイルなどの静的リソースは、デフォルトでは「static」フォルダに配置します。
「static」フォルダに、以下の通りCSSとJavaScirptのリソースを配置した場合の、HTMLファイルでの読み込み例は次の通りです。
ルート
├─ app.py
└─ static
├─ js
│ └─ hello.js
└─ css
└─ style.css
「HTML」
<link rel="stylesheet"
href="{{ url_for('static', filename="css/style.css") }}" >
<script type="text/javascript"
src="{{ url_for('static', filename="js/hello.js") }}" ></script>
0 件のコメント:
コメントを投稿