Django Admin:为两个管理站点使用不同的模板

2024-04-23

我有一个 Django 项目,有两个不同的管理站点(如中所述文档 http://docs.djangoproject.com/en/1.2/ref/contrib/admin/#multiple-admin-sites-in-the-same-urlconf )

我想为每个人都有不同的自定义模板。 我知道如何通过将 html 文件放在 myproject/templates/admin/ 目录中来覆盖自定义模板。 但是,两个管理站点都使用这些模板!

我不明白如何指定另一组自定义模板。

理想情况下,我希望拥有:

# For first admin site
myproject/templates/admin-a/
   base.html
   base_site.html

and:

# For second admin site
myproject/templates/admin-b/
   base.html
   base_site.html

第一个选择是有两个ModelAdmin类,其中一个派生自第二个类,并带有一些定义模板的附加参数,以下是管理代码的一部分:

# Custom templates (designed to be over-ridden in subclasses)
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

上述变量可以在您的管理类中设置。

第二种方法是将基本模板名称传递到模板中,然后使用此(变量)作为参数extends模板标签。文档在这里。 http://docs.djangoproject.com/en/1.3/ref/templates/builtins/#extends

第三个选项是运行两个代码实例,但两个配置具有不同的设置变量TEMPLATE_DIRS,第一个例如:

TEMPLATE_DIRS = ('templates-a',)

second

TEMPLATE_DIRS = ('template-b', 'template-a')

在这里拥有两个模板目录可以让您fallback选项,因此您将仅定义那些不同的模板。

第三个选项最容易实现(无需更改代码),但它需要 2 个独立的实例同时工作(消耗更多的系统资源)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django Admin:为两个管理站点使用不同的模板 的相关文章

随机推荐