ホームページ  >  記事  >  バックエンド開発  >  Django のテンプレート エンジンと Flask の Jinja2 の詳細

Django のテンプレート エンジンと Flask の Jinja2 の詳細

PHPz
PHPzオリジナル
2023-09-28 11:39:291409ブラウズ

Django のテンプレート エンジンと Flask の Jinja2 の詳細

Django のテンプレート エンジンと Flask の Jinja2 を深く理解するには、具体的なコード例が必要です

はじめに:
Django と Flask は、Python でよく使用され、人気のある 2 つです。 Web フレームワーク。どちらも、動的 Web ページのレンダリングを処理する強力なテンプレート エンジンを提供します。 Django は独自のテンプレート エンジンを使用しますが、Flask は Jinja2 を使用します。この記事では、Django のテンプレート エンジンと Flask の Jinja2 を詳しく説明し、それらの使用法と違いを示す具体的なコード例をいくつか示します。

1. Django テンプレート エンジン

  1. テンプレートの作成と使用
    Django では、HTML ファイルを作成し、その中でテンプレート構文を使用することで、テンプレートを作成できます。テンプレート ファイルは通常、アプリケーションの「templates」ディレクトリに保存されます。
    たとえば、次のように「hello.html」というテンプレートを作成できます。
<!DOCTYPE html>
<html>
<head>
    <title>Hello</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

view 関数で、render 関数を使用してデータを作成できます。テンプレートに渡されてレンダリングされます。たとえば、「name」という名前の変数をテンプレートに渡すことができます。

from django.shortcuts import render

def hello(request):
    name = "John"
    return render(request, 'hello.html', {'name': name})
  1. テンプレート構文
    Django のテンプレート エンジンは、ロジックとデータのプレゼンテーションを処理するための豊富な構文を提供します。テンプレート構文の一般的な例をいくつか示します。
  • 変数: {{ name }} のように、二重中括弧を使用して変数名を囲みます。
  • タグ: 中括弧とパーセント記号を使用して、{% for item in items %} {% endfor %} などのタグを含めます。
  • フィルター: 変数の出力を処理するために、変数の後にパイプ記号とフィルターを使用できます。たとえば、{{ name|title }} は、name 変数を大文字の形式に変換することを意味します。
  1. テンプレートの継承
    Django のテンプレート エンジンは、テンプレートの継承もサポートしています。基本テンプレートを作成すると、他のテンプレートがその基本テンプレートを継承し、基本テンプレートの一部のブロックをオーバーライドして拡張できます。
    たとえば、次のように「base.html」という基本テンプレートを作成できます。
<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    <header>
        {% block header %}{% endblock %}
    </header>
    <div class="content">
        {% block content %}{% endblock %}
    </div>
    <footer>
        {% block footer %}{% endblock %}
    </footer>
</body>
</html>

次に、他のテンプレートで extends キーワードを使用して、以下に示すように、基本テンプレートを継承および拡張します:

{% extends 'base.html' %}

{% block title %}Hello{% endblock %}

{% block header %}
    <h1>Welcome to my website!</h1>
{% endblock %}

{% block content %}
    <p>Hello, {{ name }}!</p>
{% endblock %}

2. Flask の Jinja2 の作成と使用


  1. Django と同様に、Flask はテンプレート エンジンとして Jinja2 を使用します。同様に、HTML ファイルを作成することでテンプレートを作成できます。
    Flask では、テンプレート ファイルは通常、アプリケーションの "templates" ディレクトリに保存されます。
    たとえば、次のように「hello.html」という名前のテンプレートを作成できます。
<!DOCTYPE html>
<html>
<head>
    <title>Hello</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

view 関数で、render_template 関数を使用してテンプレートをレンダリングできます。そしてデータを渡します。たとえば、「name」という名前の変数をテンプレートに渡すことができます。

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def hello():
    name = "John"
    return render_template('hello.html', name=name)
  1. テンプレート構文
    Jinja2 のテンプレート構文は Django のテンプレート構文に似ていますが、いくつかの微妙な違いがあります。一般的なテンプレート構文の例をいくつか示します。
  • 変数: {{ name }} などの変数名を含めるには、二重中括弧も使用します。
  • 制御構造: 中括弧とパーセント記号を使用して、{% for item in items %} {% endfor %} などの制御構造を組み込みます。
  • フィルター: 変数の出力を処理するために、変数の後にパイプ記号とフィルターを使用することもできます。たとえば、{{ name|title }} は、name 変数を大文字形式に変換することを意味します。 。
  1. テンプレートの継承
    Jinja2 はテンプレートの継承もサポートしています。基本テンプレートを作成することも可能で、他のテンプレートは基本テンプレートの一部のブロックを継承、オーバーライド、拡張できます。
    たとえば、「base.html」という基本テンプレートを次のように作成できます。
<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    <header>
        {% block header %}{% endblock %}
    </header>
    <div class="content">
        {% block content %}{% endblock %}
    </div>
    <footer>
        {% block footer %}{% endblock %}
    </footer>
</body>
</html>

次に、他のテンプレートで extends キーワードを使用します。以下に示すような基本テンプレート:

{% extends 'base.html' %}

{% block title %}Hello{% endblock %}

{% block header %}
    <h1>Welcome to my website!</h1>
{% endblock %}

{% block content %}
    <p>Hello, {{ name }}!</p>
{% endblock %}

結論:
Django のテンプレート エンジンと Flask の Jinja2 はどちらも、動的な Web ページ レンダリングを作成するための強力な機能を提供します。この 2 つは構文と使用法に若干の違いがありますが、全体的には非常に似ています。実際の開発では、個人の好みやプロジェクトのニーズに基づいていずれかを選択して使用できます。

上記は、Django のテンプレート エンジンと Flask の Jinja2 についての詳細な理解であり、具体的なコード例を通じて、それらの使用法と違いをより明確に理解できます。この記事が、これら 2 つのテンプレート エンジンを理解して使用するための助けになれば幸いです。

以上がDjango のテンプレート エンジンと Flask の Jinja2 の詳細の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。