django - 在 Django Admin 中向每个 View (base_site.html)添加内容

标签 django django-models django-admin django-views

我想将对象列表传递到 Djando 管理中的自定义模板,delete_viewchange_view。我修改了 base_site.html 以包含导航栏,并且我想将对象列表从 View 传递到导航栏。

我之前也为 django admin index、changelist_view 和 add_view 做过。我重写了这些函数并添加了我想要的额外内容。

但我不能在两个第一时间做到这一点。这个想法应该是这样的:

@csrf_protect_m
@transaction.atomic
def delete_view(self, request, object_id, extra_context=None):
    extra_context = extra_context or {}                 
    mygetModels = getModels()
    extra_context["modelsTables"] = mygetModels.getTablesModels()
    return super(table_NameAdmin, self).delete_view(request, object_id, extra_context)

正如我之前所说,这在 changelist_view、index 和 add_view 中有效。但不适用于 delete_viewchange_view

最佳答案

根据您发布的代码,我不确定为什么您的 delete_view 不起作用。我建议使用不同的方法将项目添加到上下文中。

尝试覆盖您的管理站点的 each_context方法。这避免了必须覆盖多个模型管理方法。

def each_context(self, request):
    context = super(MyAdminSite, self).each_context(request)
    context['extra_var'] = 'Extra variable'
    return context

如果你想在 Django 管理之外的模板中使用这些变量,你可以写一个 custom template tagcontext processor .

如果您使用的是 Django 1.9+,您可以使用 simple_tag 装饰器 将标记的结果保存到变量。

{% getTablesModels as modelsTables %}

然后就可以使用模板中的变量了

{% for item in modelsTables %}

关于django - 在 Django Admin 中向每个 View (base_site.html)添加内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36420221/

相关文章:

python - django tastypie 中拒绝跨域 json 数据

Python Django 名称错误 : name 'datetime' is not defined

python - Django:创建版本号增加的模型对象

python - 遍历django模板中的json数据

Django 获取内联表单管理员中的实例

python - Django ManyToManyField 在管理中保存时出错?

python - 使用身份验证时不存在用户匹配查询

python - 从 postgreSQL 数据库(Django 站点)备份所有数据

python - 如何在 Django Admin 中显示 $(美元符号)?

django - 仅允许用户修改此用户创建的对象