1

有没有办法根据 Django 版本用不同的文件覆盖管理模板?

我已经admin/index.hml从 Django 管理模板复制,以实现此目的:Django admin, hide a model,但在不同版本的 Django 中该模板有变化,有时分页符(特别是ADMIN_MEDIA_PREFIX在 Django 1.4 中弃用)

我想将我的站点安装在具有不同版本 Django 的许多服务器上,但只使用一个自动通知版本的统一代码。那可能吗?

我已经检查了Django 文档,但我没有找到任何关于此的内容。

4

1 回答 1

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 管理代码中。

于 2012-06-20T19:48:39.047 回答