テンプレート エンジンを作成すると、開発者が Web レンダリング システムの基礎を理解するのに役立ちます。 RelaxTemplates は、テンプレートのレンダリングのプロセスを簡素化する、軽量の Python ベースのテンプレート エンジンです。 RelaxTemplates は、教育的かつ初心者向けに設計されており、変数置換、ループ、条件分岐、継承、再利用可能なスニペットなどの中心的な概念を示しており、テンプレート エンジン アーキテクチャを詳しく知りたい開発者にとって理想的な選択肢となっています。
RelaxTemplates は、テンプレート エンジンをわかりやすくする必要性から生まれ、開発者がテンプレート機能を探索し、その上に構築できるようにします。 Django や Jinja2 などの本番環境に対応したエンジンとは異なり、RelaxTemplates はシンプルさを重視しており、ユーザーがより詳細に制御してカスタマイズの追加や機能の拡張を試すことができます。
RelaxTemplates は、最新のテンプレート エンジンに期待される重要な機能を提供します。
これらの各機能とその使用方法を見てみましょう!
RelaxTemplates の使用を開始するには、PyPI からインストールするだけです:
pip install relaxtemplates
次に、パッケージをインポートし、テンプレート ファイルを定義します。 RelaxTemplates テンプレートは、変数、ブロック、その他のテンプレート ロジックを組み込むための特別な構文を備えた標準 HTML ファイルです。
RelaxTemplates は、中括弧とタグを使用して変数、条件、ループ、およびその他のテンプレート要素を定義する簡単な構文を採用しています。
変数は、指定されたコンテキストの値に動的に置き換えられるよう、{{ }} でラップされます。たとえば、次のテンプレートの変数 user_name はユーザーの名前に置き換えられます。
<div>Hello, {{ user_name }}!</div>
{'user_name': 'Alice'} のようなコンテキストを使用してレンダリングすると、次のように出力されます。
pip install relaxtemplates
RelaxTemplates の条件を使用すると、特定の条件に基づいてコンテンツをレンダリングできます。サポートされている演算子には、>、<、>=、<=、==、および != が含まれます。以下に例を示します:
<div>Hello, {{ user_name }}!</div>
user_age が 18 を超える場合、テンプレートは最初のメッセージを出力します。それ以外の場合は、代替メッセージが表示されます。
{% each %} ブロックはコレクションを反復処理し、項目をリストしたり、繰り返しセクションを表示したりする簡単な方法を提供します。
<div>Hello, Alice!</div>
柔軟性を高めるには、ループ内で .. を使用して外部スコープの値を参照します。これは、現在のアイテムの外部にコンテキスト データが必要な場合に特に便利です:
{% if user_age > 18 %} <p>Welcome, adult user!</p> {% else %} <p>Welcome, young user!</p> {% end %}
RelaxTemplates を使用すると、テンプレートから関数を直接呼び出すことができます。関数は位置引数とキーワード引数の両方を受け入れることができます。
{% each items %} <p>{{ it }}</p> {% end %}
この例では、format_date と log がテンプレート内で呼び出され、必要に応じて日付の書式設定やログ記録が有効になります。
RelaxTemplates の最も強力な機能の 1 つは、テンプレートの継承のサポートです。これにより、基本テンプレート (標準レイアウトなど) を定義し、それを子テンプレートで拡張できます。
ベーステンプレート (base.html):
{% each items %} <p>Outer name: {{ ..name }}</p> <p>Item: {{ it }}</p> {% end %}
子テンプレート (child.html):
<p>{% call format_date date_created %}</p> <p>{% call log 'Event logged' level='debug' %}</p>
この設定により、レイアウト全体を再定義することなく、子テンプレートでタイトルやコンテンツなどの特定のブロックをオーバーライドできるようになります。
ヘッダーやフッターなどの再利用可能なテンプレート スニペットをテンプレート内に挿入するには、{% include 'template_name' %} を使用します。
<!DOCTYPE html> <html> <head> <title>{% block title %}Default Title{% endblock %}</title> </head> <body> <div id="content"> {% block content %}Default content.{% endblock %} </div> </body> </html>
この機能は、共通セクションを個別のファイルに分割することでテンプレートをモジュール化し、重複を減らし、読みやすさを向上させるのに役立ちます。
テンプレートとコンテキストを定義する:
{% extend 'base' %} {% block title %}Custom Page Title{% endblock %} {% block content %} <p>This is custom content for the child template.</p> {% endblock %}
テンプレートをレンダリングします:
{% include 'header' %} <p>Welcome to the page!</p> {% include 'footer' %}
RelaxTemplates は、Django や Jinja2 のような堅牢なエンジンの最適化には及ばないかもしれませんが、小規模なアプリケーションや実験では効率的に実行されます。以下は、RelaxTemplates と他のエンジンの比較です:
Template | Runs | Time Taken (ms) |
---|---|---|
Relaxtemplates | 10,000 | 0.19 |
Django | 10,000 | 0.39 |
Django (default loader) | 10,000 | 0.22 |
Jinja2 | 10,000 | 3.28 |
Jinja2 (env) | 10,000 | 0.10 |
これらの結果は、RelaxTemplates が運用環境向けではないものの、テスト、学習、小規模アプリケーションには効率的なオプションであることを示しています。
RelaxTemplates は投稿を受け付けており、新しいアイデアはいつでも大歓迎です。機能の追加、コードの最適化、ドキュメントの強化に興味がある場合でも、このプロジェクトを自由に調べて試してみてください。
RelaxTemplates でテンプレートを作成しましょう!
以上がRelaxTemplates プロジェクトの構築: 初心者に優しい Python テンプレート エンジンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。