Django管理界面:两个管理站点使用不同模板的方法

6

我有一个Django项目,其中包含两个不同的管理站点(如文档所述)

我想为每个站点使用不同的自定义模板。 我知道如何覆盖自定义模板,只需将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
1个回答

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模板标记的参数。 此处有文档。

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

TEMPLATE_DIRS = ('templates-a',)

第二个

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

在这里拥有两个模板目录可以给你提供一个备选方案,这样你只需要定义那些不同的模板。

第三个选项最容易实现(不需要改变代码),但它需要同时运行两个分离的实例(消耗更多的系统资源)。


谢谢。我会尝试不同的选项,但第一个似乎最容易实现。然而,在所有提供的管理模板中,“admin/”路径都是硬编码的。我想我必须复制并覆盖它们。也许在模板名称中使用变量是个好主意。 - Stéphane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接