2013-07-31 49 views
9

這看起來應該很簡單,但我必須做錯事。我之前已經爲各個應用擴展了管理模板,但這是我第一次嘗試擴展以全面修改某些應用。如何正確地擴展django admin/base.html模板?

我想改變整個管理員幫助文本的顏色,所以我想擴展base.html模板的extrastyle塊。

所以在我的主模板文件夾,我創建管理員/ base.html文件與此代碼在它:

{% extends 'admin/base.html' %} 

{% block extrastyle %} 
    {# Changing the color of the help text across the entire admin #} 
    <style> 
     .help, p.help { 
      font-size: 10px !important; 
      color: #f00; 
     } 
    </style> 
{% endblock %} 

現在,當我嘗試和訪問管理,服務器完全與「巴士10」崩潰錯誤。我相信這是因爲它試圖擴展自己。由於Django首先在我的應用程序模板文件夾中查找,{%extend'admin/base.html'%}首先發現它自己並且爆炸。

但是,如果我嘗試在其他任何地方放置基本html,它不起作用。如果我把它放在我的一個應用程序中,它只適用於那個應用程序,但是如果我把它放在其他任何地方,它就會被忽略。

從我的理解,這是擴展而不是覆蓋django模板的最佳實踐,所以我想得到這個工作。但是,如果我能做到的唯一方法就是重寫它,那麼這就是我要採用的路線。

回答

17

事實上,你的問題是一個無限的遞歸循環,因爲base.html自我擴展。

達到你想要什麼,你應該覆蓋管理/ base_site.html,而不是(這反過來延伸 base.html文件)。這樣你就可以只替換你感興趣的塊。

+0

啊,這就是我一直在尋找的東西。謝謝! –