Kac*_*ski 6 python django django-admin
我有一个继承自 的视图,它使用模板作为基础LoginRequiredMixin, TemplateView呈现一些数据。admin/base_site.html我将它视为管理界面的一部分,因此它需要管理员登录。我想通过启用左侧的标准侧边栏导航,使此视图更多地成为 Django 管理界面的一部分。
请注意,我在任何地方都没有自定义ModelAdmin定义,我只是在某个预定义的 URL 处呈现模板。界面中也没有使用模型,它解析并显示来自与数据库无关的源的数据。
目前,我只是手动构建所需的上下文数据,例如:
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": []
})
Run Code Online (Sandbox Code Playgroud)
侧边栏可见,但显示错误消息:
将应用程序添加到available_apps( "available_apps": ["my_app"]) 也没有帮助:
所以我的问题是 - 我该怎么做?我可以继承一个类来实现这种行为吗?或者我可以调用一个方法来获取所有必需的上下文数据base_site.html?或者也许我应该在模板中插入一些信息?也许我需要一个AdminSite对象,或者可以以某种方式调用默认对象的方法?
偶然我注意到DefaultAdminSite中有一个对象django.contrib.admin.sites,并且它被实例化为site。因此,就我而言,简单地使用site就足够了。
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))
Run Code Online (Sandbox Code Playgroud)
此外,事实证明我可以使用apps以防导入site出现问题,就像DefaultAdminSite它一样:
AdminSiteClass = import_string(apps.get_app_config("admin").default_site)
self._wrapped = AdminSiteClass()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2459 次 |
| 最近记录: |