2012-06-20 72 views
1

根據Django版本,是否有任何方法用不同文件覆蓋管理模板?根據Django版本覆蓋管理模板

我從Django管理模板複製admin/index.hml,要實現這一點:Django admin, hide a model,但也有變化,在不同版本的Django的該模板,有時分頁符(特別是與ADMIN_MEDIA_PREFIX在Django 1.4棄用)

我想用不同版本的Django在許多服務器上安裝我的站點,但只使用一個自動通知版本的統一代碼。那可能嗎?

我查過了Django documentation,但是我還沒有找到任何關於這方面的信息。

回答

2

ModelAdmin類有各種模板設置,您可以在子類中指定。在Django 1.3這些都是(在django.contrib.admin.options,第271行):

add_form_template = None 
change_form_template = None 
change_list_template = None 
delete_confirmation_template = None 
delete_selected_confirmation_template = None 
object_history_template = None 

同樣,AdminSite有各種各樣的模板設置(在django.contrib.admin.sites,第35行):

index_template = None 
app_index_template = None 
login_template = None 
logout_template = None 
password_change_template = None 
password_change_done_template = None 

您可以覆蓋這些子類或指定它們位於代碼的中心位置(例如,__init__.py文件)。例如:

from django.contrib.admin.sites import AdminSite 
AdminSite.index_template = '...' 

然後,您可以根據當前的Django版本更改模板。您可能需要檢查以前Django版本中的代碼,因爲我沒有檢查過所有這些變量是否存在於較早的Django管理代碼中。