【发布时间】:2015-07-16 18:45:01
【问题描述】:
我有一个基于类的视图,它只显示配置列表。
使用以下代码将此视图添加到 Django 管理站点:
@admin.register(ZbxHostConf)
class ZbxHostConfListViewAdmin(admin.ModelAdmin):
review_template = 'admin/admzbxhostconf_list.html'
def get_urls(self):
urls = super(ZbxHostConfListViewAdmin, self).get_urls()
my_urls = patterns('',
(r'^zbxhostconflist/$', self.admin_site.admin_view(self.review)),
)
return my_urls + urls
def review(self, request):
return ZbxHostConfListView.as_view()(request)
模板扩展了admin/base_site.html 模板。只有登录 Django Admin 站点后,我才能访问该站点。不幸的是,模板无法访问管理视图提供的上下文数据。
正如 Django 文档建议的那样,上下文数据将直接提供给 TemplateResponse 函数:
def my_view(self, request):
# ...
context = dict(
# Include common variables for rendering the admin template.
self.admin_site.each_context(request),
# Anything else you want in the context...
key=value,
)
return TemplateResponse(request, "sometemplate.html", context)
对于基于函数的视图,可能存在 extra_context 参数,但基于类的视图不提供此参数。我想我必须修改 get_context_data 函数,但我真的不明白如何将管理上下文数据提供给基于类的视图的 get_context_data 函数。有什么建议吗?
【问题讨论】:
-
不直接。为了完整起见,我刚刚添加了它。但如果删除会改善问题,我会这样做。