Django 管理部门的观点在哪里?
Where is the Django Administration's view?
我正在尝试修改原始的 Django 管理模板。我成功地添加了自定义内容。但是我只需要在我的数据库中的 table 为空时才显示此内容。因此,我想通过视图将一些内容传递给模板,但我找不到它。
更具体地说,我的扩展管理模板如下所示:
{% overextends "admin/index.html" %}
{% load i18n admin_urls %}
{% block content %}
{{ block.super }}
{% if is_empty %}
<a href="#">This hyperlink appears only when the table is empty</a>
{% endif %}
{% endblock %}
我想将模板传递给变量 is_empty True 或 False,具体取决于 table 是否为空。
知道怎么做吗?
非常感谢!
创建一个 template context processor 来计算 is_empty
的值。
# in my_app/context_processors.py
from my_app.models import MyTable
def is_empty(request):
"""Returns a bool depending on whether MyTable is empty"""
return {'is_empty': not MyTable.objects.exists()}
将上下文处理器添加到模板设置中(请注意,此步骤对于 Django < 1.8 略有不同)。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
...
'OPTIONS': {
'context_processors': [
...
'my_app.context_processors.is_empty',
],
},
},
]
然后您可以在任何使用请求上下文呈现的模板中包含 {{ is_empty }}
。这包括管理视图、基于 class 的通用视图以及使用 render
快捷方式的视图。
我正在尝试修改原始的 Django 管理模板。我成功地添加了自定义内容。但是我只需要在我的数据库中的 table 为空时才显示此内容。因此,我想通过视图将一些内容传递给模板,但我找不到它。
更具体地说,我的扩展管理模板如下所示:
{% overextends "admin/index.html" %}
{% load i18n admin_urls %}
{% block content %}
{{ block.super }}
{% if is_empty %}
<a href="#">This hyperlink appears only when the table is empty</a>
{% endif %}
{% endblock %}
我想将模板传递给变量 is_empty True 或 False,具体取决于 table 是否为空。
知道怎么做吗?
非常感谢!
创建一个 template context processor 来计算 is_empty
的值。
# in my_app/context_processors.py
from my_app.models import MyTable
def is_empty(request):
"""Returns a bool depending on whether MyTable is empty"""
return {'is_empty': not MyTable.objects.exists()}
将上下文处理器添加到模板设置中(请注意,此步骤对于 Django < 1.8 略有不同)。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
...
'OPTIONS': {
'context_processors': [
...
'my_app.context_processors.is_empty',
],
},
},
]
然后您可以在任何使用请求上下文呈现的模板中包含 {{ is_empty }}
。这包括管理视图、基于 class 的通用视图以及使用 render
快捷方式的视图。