如何扩展 django 管理视图?

Posted

技术标签:

【中文标题】如何扩展 django 管理视图?【英文标题】:How to extend django admin view? 【发布时间】:2011-12-12 12:03:46 【问题描述】:

我想在我的 django 管理索引中显示额外的侧边栏。我创建了templates/admin/index.html 并且它出现了。现在我需要一些模型数据。为此,我在文件admin/views.py 中创建了索引函数

def index(request):
    var = 'var'
    return render_to_response('admin/index.html', 'var': var)

没有这个函数我有错误ViewDoesNotExist

但是,模板不会对此示例变量“var”做出反应。此外,我的应用程序未显示在索引中。我只有身份验证应用程序。

我认为我正在覆盖索引功能表单管理视图。如何正确覆盖这个函数?

【问题讨论】:

【参考方案1】:

您可以在 ModelAdmin (admin.py) 类中向视图添加逻辑,而不是完全覆盖视图:

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#other-methods

例如:

class MyAdmin(admin.ModelAdmin)
    ...
    def add_view(self, request, form_url='', extra_context=None):
        # Do some extra queries that will get passed to the template
        c = 'x':SomeModel.objects.all()
        super(MyAdmin, self).add_view(request, extra_context=c)

【讨论】:

好主意但是:add_view - “模型实例添加页面的 Django 视图。”我想访问索引页面上的数据没有 index_view 方法【参考方案2】:

考虑使用 django 管理工具https://bitbucket.org/izi/django-admin-tools/wiki/Home

然后你会得到manage.py customdashboardmanage.py custommenu 等命令。

它甚至还有一个不错的书签功能,可以快速跳转到某些对象或列表页面。

【讨论】:

以上是关于如何扩展 django 管理视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改扩展基本模板的 Django HTML 视图文件?

Django:如何将相同的功能扩展到多个视图?

如何不使用 Django 的管理员登录视图?

如何从视图中呈现特定的 Django 管理页面?

django 管理界面 - 如何在更改列表视图中折叠/展开对象详细信息?

自定义 django 管理视图