Djangoのドキュメントは明確に次のように述べている:Django:プロジェクトごとにではなく、アプリケーションごとに 'unoverridable'管理テンプレートをオーバーライドしますか?
ないのcontrib \管理者\テンプレート内のすべてのテンプレート\管理者は、アプリごとやモデルごとに上書きすることができます。私が興味を持ってるもの - - リストされているものの中ではありません
はその後、およびbase.html
、base_site.html
とindex.html
が可能なものを示しています。プロジェクトごとにオーバーライドできますが、アプリごとにオーバーライドすることはできません。
私の質問です:django.contrib.adminの中にコードを編集することを伴わない方法がありますか?私はいくつかのモノづくりの解決策を考えていきたいと思っています:-)。私は本当に私のアプリケーションのtemplates
ディレクトリ内の3つのファイルのカスタムバージョンを持って、それらを使用するアプリを使用する各プロジェクトを持っているしたい。
私が興味を持っている理由は、大きくカスタマイズされた管理インターフェイスを備えた大規模で再利用可能なアプリケーションを作成していることです。プロジェクトごとに「コア」テンプレートをオーバーライドするのは最良の解決策ではありません。アプリケーションが使用される各プロジェクトのテンプレートディレクトリにカスタムテンプレートをコピーする必要があります。これらのコアテンプレートを新たに変更して新しいバージョンのアプリケーションをリリースすると、影響を受けるプロジェクトにすべてを再コピーする必要があります。ああ。
私は、選択したいくつかのテンプレートをアプリごとにオーバーライドできるようにするという決定の背後にある理由を理解しています。結局のところ、それらをオーバーライドすることが可能だった場合、どのアプリのオーバーライドされた管理者が優先されますか?
私の場合、アプリはいくつかのクライアントプロジェクトの中心となり、それらのプロジェクトの他のアプリは単にサポートの役割を果たすだけです。
既存のテンプレートをCSSベースでカスタマイズするだけで済むようになりました。私はJavaScript DOM操作ソリューションに頼ることを躊躇しています。
解決方法の1つは、カスタムbase.html
などのテンプレートをappname/templates/admin /に配置してから、それらをプロジェクトのテンプレートフォルダにシンボリックリンクすることです。そうすれば、アプリケーションのアップデートはプロジェクトレベルで自動的に有効になります。
もっと良いことが示唆されない限り、シンボリックは私の選択方法ですが、誰かがより良い解決策を持っているかどうか聞いてみたいと思います。
PROJECT_PATH = os.path.abspath(os.path.dirname(__ FILE__)) –
マイアプリはPROJECT_PATHの内側に住んでいませんが、そうでないものがきれいに解決策のように見えます。ありがとう! –