ホームページ >バックエンド開発 >Python チュートリアル >Django 管理者テンプレートを置換せずに拡張およびオーバーライドするにはどうすればよいですか?

Django 管理者テンプレートを置換せずに拡張およびオーバーライドするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-13 00:00:02853ブラウズ

How to Extend and Override Django Admin Templates Without Replacing Them?

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

Django 管理者テンプレートを置き換えずに拡張およびオーバーライドするという課題は、これまでよくありました。開発者の間では懸念が広がっています。このトピックに関する以前の議論にもかかわらず、この問題は、app_directories テンプレート ローダーを使用するプロジェクトで依然として蔓延しています。

回避策の 1 つは、管理テンプレートを複製し、コピーから拡張することですが、これにより複雑さとメンテナンスのオーバーヘッドが追加されます。このプロセスを簡素化するために、開発者が特定のアプリ内の任意のテンプレートを拡張できるカスタム テンプレート ローダーが開発されました。

オーバーライド テンプレート ローダーの実装

管理テンプレート (例: admin/index.html) を使用すると、開発者はアプリのテンプレート ディレクトリに同じ名前で独自のテンプレートを作成し、テンプレートの先頭に次の行を含めることができます:

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

Withinこの拡張テンプレートを使用すると、開発者はブロックを定義して、基本テンプレートの特定の部分をオーバーライドできます。たとえば、サイドバーに追加のリンクを追加するには、次のブロックを作成できます:

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

Django での問題に対処する

最新および以前の時点Django の LTS バージョン (3.2、2.2、1.11) では、app_directories テンプレート ローダーを使用した管理テンプレートのオーバーライドと拡張が文書化された問題のままです。ただし、これが Django の将来のバージョンで対処されるかどうかは不明です。

以上がDjango 管理者テンプレートを置換せずに拡張およびオーバーライドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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