Skip to main content
 首页 » 编程设计

python之django 管理站点的两个实例之模板

2025年05月04日25shanyou

出于某种原因,我需要在我的项目中有两个不同的 Django 管理站点实例——默认管理站点和一个从 AdminSite 继承的类实例。

所以我创建了一个类 MyAdminSite(AdminSite)

然后我写了这样的东西:

my_admin_site = MyAdminSIte(name='myadmin') 

然后我在 urls.py 中添加了正确的条目。

一切正常。

但是现在我想自定义一些模板。
在 settings.py 中:

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 
TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),) 

然后我创建了目录: /PROJECTDIR/templates/admin 和 /PROJECTDIR/templates/myadmin

问题是,我根本无法扩展/覆盖“myadmin”django 管理站点中的模板。 例如,如果我在/templates/admin/中添加一个空的“base_site.html”,那么两个管理站点都将变为空白。

但是当我将相同的文件添加到/templates/myadmin/时,没有任何反应。

有什么建议吗?

请您参考如下方法:

您可以覆盖 AdminSite 的类变量来指定不同的模板:

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

你也可以覆盖 ModelAdmin 的类变量来指定不同的模板:

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 

例如:

class MyAdminSite(AdminSite): 
    app_index_template = "my/new/admin/app_index.html"