Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django Admin中向每个视图(base_site.html)添加内容_Django_Django Models_Django Admin_Django Views - Fatal编程技术网

在Django Admin中向每个视图(base_site.html)添加内容

在Django Admin中向每个视图(base_site.html)添加内容,django,django-models,django-admin,django-views,Django,Django Models,Django Admin,Django Views,我想在Djando admin、删除视图和更改视图中将对象列表传递给我的自定义模板。我修改了base_site.html以包含导航栏,我想从视图中将对象列表传递给导航栏 我以前也为django管理索引、变更列表视图和添加视图做过这项工作。我重写这些函数并添加我想要的额外内容 但我不能在两个月内做到这一点。这个想法应该是这样的: @csrf_protect_m @transaction.atomic def delete_view(self, request, object_id, extra_c

我想在Djando admin、删除视图更改视图中将对象列表传递给我的自定义模板。我修改了base_site.html以包含导航栏,我想从视图中将对象列表传递给导航栏

我以前也为django管理索引、变更列表视图和添加视图做过这项工作。我重写这些函数并添加我想要的额外内容

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

@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\u视图、index和add\u视图中,这是有效的。但是在删除视图更改视图

中,您发布的代码不起作用,我不确定您的
删除视图
为什么不起作用。我建议使用不同的方法向上下文中添加项目

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

def each_context(self, request):
    context = super(MyAdminSite, self).each_context(request)
    context['extra_var'] = 'Extra variable'
    return context
如果您想在Django admin之外的模板中使用这些变量,可以编写一个or

如果您使用的是Django 1.9+,则可以使用
simple_标记
decorator 将标记的结果保存到变量

{% getTablesModels as modelsTables %}
然后可以使用模板中的变量

{% for item in modelsTables %}

试着写一个,并将其包含在你的管理模板中。这样,您就不必为了向模板上下文中添加某些项而覆盖每个管理视图。。。看起来好多了。因此,我将我的函数定义为:@register.simple_tag def getTablesModels(self):Classes=apps.apps.get_models(ddbb)modelsclasses=[]对于xrange中的I(len(Classes)):obj=dbModels(Classes[I]。\uu name\uuuuu.lower(),Classes[I]。\u meta.db_table)modelses+=[obj]返回modelClasses我如何在索引管理模板上调用它?我应该进口什么吗?我需要检查这个标签返回的所有列表{%for modelsTables%}
  • a href=“/admin/db/{{{item.linkDb}/”>{{item.nameDb}
  • {%endfor%}请不要在注释中发布代码,这是不可能读取的。哈哈哈。。。哈哈,你的权利。我的错。。。无论如何,你的第二种方法更好。更干净、更聪明,。。。谢谢阿拉斯代尔,这就是我想要的。你又做了一次,阿拉斯代尔…;)。谢谢你,伙计。写这个
    each_context()
    override函数的好地方是什么?@nitinain由你决定。该示例将自定义站点放在
    myproject/admin.py
    (在
    settings.py
    旁边)中。@NitinNain,我会使用/sites.py,因为这是它最初定义的位置(admin/sites.py)