同時重寫和擴充 Django 管理範本
重寫 Django 的管理範本是自訂管理介面的常見需求。但是,當您想要覆蓋和擴充模板,同時也想利用 AppDirectories 模板載入器時,您可能會面臨困境。
覆蓋與擴展
在 Django 中,覆蓋模板涉及完全替換現有模板文件,而擴展允許您將內容添加到模板內的特定塊。
AppDirectories 範本載入器的挑戰
The AppDirectories 範本載入器在覆寫和擴充管理範本時提出了挑戰。使用此載入器時,Django 希望擴充模板與原始模板位於同一目錄中。如果管理範本位於不同的應用程式中,這可能會出現問題。
現有解決方案
自訂範本載入器:
建議的解決方案是使用支援跨應用程式目錄擴充模板的自訂模板載入器。 DjangoSnippets.org 上提供了一個這樣的載入器。
自訂 Django 的範本載入器:
另一個選項是自訂 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中文網其他相關文章!