首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在自定义视图中启用django管理侧栏导航?

如何在自定义视图中启用django管理侧栏导航?
EN

Stack Overflow用户
提问于 2022-04-25 08:46:39
回答 3查看 982关注 0票数 6

我有一个继承自LoginRequiredMixin, TemplateView的视图,它使用admin/base_site.html模板作为基础呈现一些数据。我将其视为管理界面的一部分,因此需要管理员登录。我希望通过启用左侧的标准侧边栏导航,使此视图更多地成为Django管理界面的一部分。

请注意,我在任何地方都没有自定义的ModelAdmin定义,我只是在某个预定义的URL上呈现模板。接口中也没有使用任何模型,它解析和显示来自数据库-无关来源的数据。

目前,我只是手动构建所需的上下文数据,例如:

代码语言:javascript
复制
data = super().get_context_data(**kwargs)
data.update(**{
    "is_popup": False,
    "site_header": None,
    "is_nav_sidebar_enabled": True,
    "has_permission": True,
    "title": "My title",
    "subtitle": None,
    "site_url": None,
    "available_apps": []
})

侧边栏是可见的,但显示一个错误消息:

available_apps ("available_apps": ["my_app"])添加应用程序也没有帮助:

所以我的问题是-我该怎么做?是否有我可以继承的类来实现这种行为?或者我可以调用一个方法来获取base_site.html所需的所有上下文数据?或者我应该在模板中插入一些信息?也许我需要一个AdminSite对象,或者可以以某种方式调用默认对象的方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-05-07 10:14:13

偶然地,我注意到django.contrib.admin.sites中有一个django.contrib.admin.sites对象,它被实例化为site。因此,在我的例子中,仅仅使用site就足够了。

代码语言:javascript
复制
from django.contrib.admin import AdminSite
from django.contrib.admin.sites import site
admin_site: AdminSite = site
data.update(**admin_site.each_context(self.request))

此外,我可以使用apps来防止导入site成为问题,就像DefaultAdminSite所做的那样:

代码语言:javascript
复制
AdminSiteClass = import_string(apps.get_app_config("admin").default_site)
self._wrapped = AdminSiteClass()
票数 3
EN

Stack Overflow用户

发布于 2022-05-06 12:35:09

包含在基本模板中的app_list.html模板需要一个上下文变量available_apps,其结构与描述的这里相同。

由于您可能无法使这包括与您的应用程序正常工作,您也可以覆盖{% block nav-sidebar %}在您的基本模板,并提供一些HTML适合您的用例。

但是毕竟,使用您的应用程序重用为不同的应用程序(admin)创建的模板可能不是一个好主意,因为很难预测它们将如何运行,它们的需求是什么,从长远来看,除了这些维护之外,也将是一个问题,因为将来Django版本可能会改变它们。

票数 1
EN

Stack Overflow用户

发布于 2022-05-07 03:51:46

您必须包括django admin在模板中使用的默认上下文变量。这可以通过调用each_context函数来完成:

代码语言:javascript
复制
data.update(self.admin_site.each_context(request))

我也有自定义的管理视图和模板在我的项目,这是很好的工作我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71996754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档