3

Django プロジェクトのテンプレートを階層として視覚的に表現しようとしています。

主なアイデアは、デフォルトのテンプレート ロード機構が返すテンプレート名のリストを取得し (つまりTEMPLATE_DIRS、 、 などを尊重) 、ツリー構造を作成するために、{% extends %} タグをTEMPLATE_LOADERS探してテンプレートを解析することです。{% block %}最後に、可視化に grapviz を使用します。

それが実行可能なアプローチであるかどうかはわかりません。しかし、まず始めに、説明した方法でテンプレートをロードするにはどうすればよいでしょうか?

それとも、似たようなものはすでに存在しますか?

4

1 に答える 1

1

通常、テンプレートはオンラインで名前で検索され、使用される可能性のあるすべてのテンプレートのルート エントリはありません。

したがって、プロジェクトで使用されているすべてのテンプレートを grep したい場合は、TEMPLATE_LOADERS のローダーがチェックする可能性のあるすべての場所をスキャンして、後で下から上へのチェックのために可能なエントリを生成する必要があります。これは難しいでしょう。ローダーのバックエンドの中には、ディレクトリごとのフェッチ操作を許可していないものさえあるかもしれません。
または、INSTALLED_APPS 内のビューと URL ファイルを解析してテンプレート名を grep することもできますが、これはハードコードされたテンプレート名でのみ機能し、さらに困難です。また、ハードコードされた文字列から読み込まれたテンプレートがあるかもしれません...

与えられたテンプレート名については、あなたのアイデアと同じように、テンプレートをロードしてその中のノードをチェックする方が簡単です。django.template.baseそれがどのように機能するかを確認することができます。

さらに、django-debug-toolbar を利用して、リクエストに使用されるテンプレートを表示できます。そして、IMO では、テンプレート構造をフラットでシンプルに保ち、それによって決定された状態を維持する方が簡単に実現できます。

于 2012-04-14T03:46:07.980 に答える