ホームページ  >  記事  >  バックエンド開発  >  AppDirectories テンプレート ローダーを使用して Django 管理者テンプレートをオーバーライドおよび拡張する方法

AppDirectories テンプレート ローダーを使用して Django 管理者テンプレートをオーバーライドおよび拡張する方法

DDD
DDDオリジナル
2024-11-13 09:02:01189ブラウズ

How to Override and Extend Django Admin Templates with AppDirectories Template Loader?

Django 管理テンプレートのオーバーライドと拡張を同時に行う

Django の管理テンプレートをオーバーライドすることは、管理インターフェイスをカスタマイズする場合の一般的なニーズです。ただし、AppDirectories テンプレート ローダーも利用しながら、テンプレートのオーバーライドと拡張の両方を行う場合は、ジレンマに直面することがあります。

オーバーライドと拡張

Django の場合、テンプレートをオーバーライドするには、既存のテンプレート ファイルを完全に置き換える必要がありますが、拡張すると、テンプレート内の特定のブロックにコンテンツを追加できます。 template.

AppDirectories テンプレート ローダーの課題

AppDirectories テンプレート ローダーでは、管理テンプレートをオーバーライドおよび拡張するときに課題が発生します。このローダーを使用する場合、Django は拡張テンプレートが元のテンプレートと同じディレクトリに存在することを想定します。管理テンプレートが別のアプリケーションにある場合、これは問題になる可能性があります。

既存のソリューション

カスタム テンプレート ローダー:

推奨される解決策は、アプリ ディレクトリ間でのテンプレートの拡張をサポートするカスタム テンプレート ローダーを使用することです。このようなローダーの 1 つは、DjangoSnippets.org で入手できます。

Django のテンプレート ローダーのカスタマイズ:

もう 1 つのオプションは、Django の AppDirectories テンプレート ローダーをカスタマイズして、特定のアプリからテンプレートを拡張できるようにすることです。これには、AppDirectories ローダーから継承するカスタム テンプレート ローダー クラスの作成とその動作の変更が含まれます。

Django の将来の計画

この記事の執筆時点では、Django はネイティブにサポートしていません。アプリディレクトリ全体にテンプレートを拡張します。ただし、この機能を提案する GitHub には未解決の問題があります。これを実装すると、Django 管理テンプレートをオーバーライドして拡張するプロセスが大幅に簡素化されます。

カスタム ローダーを使用した使用例:

上記のカスタム テンプレート ローダーを使用すると、テンプレートに以下を実装できます:

{% extends "admin:admin/index.html" %}

{% block sidebar %}
    {{block.super}}
    <div>
        <h1>Extra links</h1>
        <a href="/admin/extra/">My extra link</a>
    </div>
{% endblock %}

このコードは、管理インデックス テンプレートを拡張します。追加のサイドバー コンテンツを使用して、元のテンプレートを効果的にオーバーライドして拡張します。

以上がAppDirectories テンプレート ローダーを使用して Django 管理者テンプレートをオーバーライドおよび拡張する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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