プログラミング

PythonでWebサービスが作れる?テンプレートエンジンJinjaの継承機能

PythonでWebサービスが作れるの?
 
どうやってWebサービスをテストしたらいいの?

 
Flaskでどんなことができるの?

という悩みを解決できる記事になっています。

なぜなら、私はプログラミング言語Pythonで
Webサービスの開発をしているからです。

結論だけ言うと、

PythonならWebサービスを簡単に作れます。

この記事ではテンプレートエンジンJinjaの継承機能を使う方法を紹介します。

読み終えていただければ、

開発用サーバーで簡単なWebアプリを作る方法が分かります。

※おすすめのプログラミングスクール

せっかくプログラミングができるなら

稼げるレベルまで高めませんか?

現役エンジニアが就職サポートまでしています。

無料トライアル制度もあるのでおすすめです↓

テンプレートエンジンJinjaとは?

テンプレートエンジンJinjaとは?

テンプレートエンジンとは、ひな形(テンプレート)と

実際のデータを合成して成果となるドキュメントを出力する機能のことです。

Webアプリでは、HTMLの出力に特化しています。

FlaskではJinja2というテンプレートエンジンが採用されています。

前回はテンプレートエンジンを使って、

短いWebアプリケーションを作りました。

今回は継承機能の使い方を紹介します。

テンプレートをHTMLで作成(継承機能あり)

継承機能とはWebアプリ内で利用する複数ページで共通する

ヘッダーやフッダーなどのパーツを持つ

基本的なレイアウトファイルを使いつつ、

異なる差分の部分だけを定義したファイルを作るだけでよくなります。

HTMLのファイルはtemplatesというフォルダに入れておきます。

まずはレイアウト用のHTMLファイルを作成します。

<html><head>
<style>
    h3 { background-color: red; padding:8px; }
    div.user {
        border: 1px dotted silver;
        margin: 8px; padding: 8px;    
    }
</style>
</head><body>
    <h1>
        {% block title %}
        {% endblock %}
    </h1>
    <div>
        {% block contents %}
        {% endblock %}
    </div>
</body></html>

次にレイアウトとの差分を定義した

ユーザーリストの一覧を表示するテンプレートを作ります。

{% extends "layout.html" %}

{% block title %}
ユーザーリスト
{% endblock %}

{% block contents %}
    {% for user in users %}
    <div class="user">
        <h3>{{ user.name }}</h3>
        <p>年齢は{{user.age}}才です。</p>
    </div>
    {% endfor %}
{% endblock %}

次にPythonでメインアプリを作ります。

データをPythonで作成

コードはこちらです。

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    users = [
        {'name':'ケイスケ','age':22},
        {'name':'ダイキ','age':25},
        {'name':'セイジ','age':18},
    ]
    return render_template(
        'users.html',
        users=users)

if __name__ == '__main__':
    app.run(host='0.0.0.0')

Pythonを起動させると開発用サーバーが起動します。

webアプリケーションの起動

リンク先にアクセスした結果がこちら。

webアプリケーションの起動

次回はURLパラメーターの取得方法を紹介します。

※おすすめのプログラミングスクール

せっかくプログラミングができるなら

稼げるレベルまで高めませんか?

現役エンジニアが就職サポートまでしています。

無料トライアル制度もあるのでおすすめです↓

ここまで読んでくださりありがとうございました。^^

-プログラミング
-