PythonのDjangoフレームワークでテンプレートライブラリを作成する方法を詳しく説明します

1791 ワード

カスタムラベルを書くにしてもフィルタを書くにしても、最初にしなければならないことはテンプレートライブラリを作成することです(Djangoがインポートできる基本構造).
テンプレートライブラリを作成するには、次の手順に従います.
第一に、テンプレートライブラリをどのDjangoアプリケーションの下に置くべきかを決定します.もしあなたがmanageを通過したら.py startappは、そこに置くことができるアプリケーションを作成したり、テンプレートライブラリに個別にアプリケーションを作成したりすることができます.後者をもっとお勧めします.あなたのfilterは後の工事で役に立つかもしれません.
どんな方法を採用しても、INSTALLED_にアプリケーションを追加してください.APPS中.私たちは後でこの点を説明します.
第二に、適切なDjangoアプリケーションパッケージにtemplatetagsディレクトリを作成します.このディレクトリはmodelsとpy 、 views.pyなどは同じ階層にあります.例:

books/
  __init__.py
  models.py
  templatetags/
  views.py


templatetagsで2つの空のファイルを作成します:1つの_init__.py(PythonにPythonコードを含むパッケージであることを伝えます)と、カスタムのラベル/フィルタ定義を保存するためのファイルです.2番目のファイルの名前は、後でラベルをロードするために使用されます.たとえば、カスタムラベル/フィルタがpollと呼ばれている場合extras.pyのファイルには、テンプレートに次の内容を書き込む必要があります.

{% load poll_extras %}


{%load%}ラベルチェックINSTALLED_APPSの設定では、インストールされているDjangoアプリケーションのテンプレートライブラリのみをロードできます.これは安全特性です.各Djangoインストールに露出することなく、多くのテンプレートライブラリのコードを1台のコンピュータに配置できます.
特定のモデル/ビューに関連付けられていないテンプレートライブラリを書いた場合、templatetagsパッケージのみを含むDjangoアプリケーションパッケージを得るのは完全に正常です.templatetagsパッケージにどれだけのモジュールを配置するかには制限はありません.注記:{%load%}文は、アプリケーション名ではなくPythonモジュール名を指定してラベル/フィルタをロードします.
Pythonモジュールを作成すると、フィルタを作成するかラベルを作成するかに応じてPythonコードを作成するだけです.
合法的なラベルライブラリとして、モジュールにはregisterというモジュールレベルの変数が含まれる必要があります.この変数はtemplate.Libraryの例は、すべての登録ラベルとフィルタのデータ構造です.モジュールの上部に次の文を挿入します.

from django import template

register = template.Library()


に注意
Djangoのデフォルトのフィルタとラベルのソースコードを読んでください.そこには多くの例があります.彼らはそれぞれ:django/template/defaultfilters.pyとdjango/template/defaulttags.py .django.contribの一部のアプリケーションにはテンプレートライブラリも含まれています.
register変数を作成すると、テンプレートのフィルタとラベルを作成するために使用できます.