我有一个Django项目,有两个不同的管理站点(如documentation中所述)
我想为每个人设置不同的自定义模板。 我知道如何通过将html文件放在myproject / templates / admin /目录中来覆盖自定义模板。 但是,管理站点都使用这些模板!
我不明白如何指定另一组自定义模板。
理想情况下,我想:
# For first admin site
myproject/templates/admin-a/
base.html
base_site.html
和
# For second admin site
myproject/templates/admin-b/
base.html
base_site.html
有什么想法吗?
谢谢, 斯特凡
答案 0 :(得分:1)
第一个选项是有两个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
模板标记的参数。 Documentation here.
第三个选项是运行两个代码实例,但是有两个具有不同设置变量TEMPLATE_DIRS
的配置,第一个例如:
TEMPLATE_DIRS = ('templates-a',)
第二
TEMPLATE_DIRS = ('template-b', 'template-a')
这两个模板目录都为您提供了后备选项,因此您只需定义那些不同的模板。
第三个选项最容易实现(不需要更改代码),但它需要同时处理2个独立的实例(消耗更多的系统资源)。