Python 3 – Flaskチュートリアル:テンプレート-Pythonチュートリアル

テンプレートは、ビジュアルを再利用するのに役立ちます。 すべてのWebアプリで、ビジュアルが再利用されます。 これは、ビジネスロジックとプレゼンテーションロジックを分割するのに役立ちます。 アプリコードをグラフィックデザインコードと混在させたくありません。

分析アプリを想像してみてください。 すべてのページで同じナビゲーションとフッターが必要です。 内容は異なる場合がありますが、一般的なデザインは同じです。 それはテンプレートで行われます。

関連コース: Python Flask:Flaskを使用してWebアプリを作成する

テンプレートの例

最初に実行したいのは、テンプレート用のディレクトリを作成することです。 以下のコマンドを使用して、ターミナルからこれを実行できます。 まだ行っていない場合は、アプリを作成してください。 プロジェクトディレクトリの名前が「app」であるとすると、

(venv) $ mkdir app/templates

単一のテンプレートは単なるファイルです。 各テンプレートにはHTMLコードが含まれています。これはWebの標準言語です。

フラスコテンプレート変数

ファイルindex.htmlを作成しましょう

<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h1>Hello {{ username }}</h1>
</body>
</html>

そのほとんどは、Webの標準であるHTMLタグ(<記号と>記号の間)です。

だからそれらは何ですか {{ そして }} シンボル?

これは、WebページにPython変数を表示する方法です。 これらは、表示される変数のプレースホルダーです。

このテンプレートには、タイトルとユーザー名の2つの変数を渡すことができます。

テンプレートレンダリング

知っておくべき重要なことの1つは、テンプレートを使用してビジネスロジックをプレゼンテーションロジックから分離することです。 これにより、ソフトウェアの保守性、拡張性、および移植性が向上します。

変数はPythonコードから渡すことができます。 Pythonはテンプレートをレンダリングする必要があるため、そのためのモジュールをインポートします。

from flask import render_template

元のコードを変更します。

@app.route("https://pythonbasics.org/")
def index():
return 'Web App with Python Flask!'

テンプレートをレンダリングして変数を渡すものに:

@app.route("https://pythonbasics.org/")
@app.route('/index')
def index():
name = 'Rosalia'
return render_template('index.html', title='Welcome', username=name)

次に、アプリを起動します。

次に、ターミナルにテキストが表示されます。

* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:81/ (Press CTRL+C to quit)

そして、端末に表示されているURLをWebブラウザで開きます。

render_template

上記の例では、関数を呼び出しました render_template()。 なぜこのメソッドを呼び出して、すぐにhtmlデータを返さないのですか?

フラスコはという名前の言語にバンドルされています Jinja2。 これにより、変数を含めたり、ループを作成したり、テンプレートにifステートメントを追加したりすることができます。

次のような変数を含める方法はすでに見ました title そして username 上記の例では。 では、ループとifステートメントをどのように含めますか?

jinjaフラスコテンプレートエンジン

フラスコテンプレートの場合

テンプレートにifステートメントを含めることができます。 Pythonで使用するのと同じ演算子を使用できます(==、>、<、> =、<=、)。 のような節 else または elif 使用することもできます。

このコードでは、入力変数のユーザー名によって出力が異なります。 ユーザー名は、Pythonコード(ビジネスロジック)でテンプレート(プレゼンテーションロジック)に渡されます。

<html>
<head>
<title>{{ title }}</title>
</head>
<body>
{% if username == "Rosalia": %}
<h1>Hello my love</h1>
{% else %}
<h1>Hello {{ username }}</h1>
{% endif %}
</body>
</html>

ループ用フラスコテンプレート

ユーザーのリストなど、大量のデータがある場合は、forループを使用してデータを反復処理する必要があります。 Pythonコードを次のように変更します。

@app.route("https://pythonbasics.org/")
@app.route('/index')
def index():
users = [ 'Rosalia','Adrianna','Victoria' ]
return render_template('index.html', title='Welcome', members=users)

コードにはリスト(ユーザー)が含まれています。 そのリストはrender_template関数に渡されます。 テンプレートでは、forループを使用してリストを反復処理できます。

<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<ul>
{% for member in members: %}
<li>{{ member }}</li>
{% endfor %}
</ul>
</body>
</html>

コードのタグ {% そして %} 使用されています。
変数を表示するには、タグを記述します {{ そして }}

jinja2のforループ

例をダウンロード

Hope this helps!

Source link