在所有视图中显示数据库中的动态数据

时间:2017-12-24 17:25:40

标签: django django-templates django-2.0

我正在使用Django 2.0

我的notes应用程序

中有一个模型

备注/ models.py

class ColorLabels(models.Model):
    title = models.CharField(max_lenght=50)

在将在所有页面上显示的侧边栏导航中,我想显示颜色标签列表,它将显示在所有页面上。

如何在所有视图中显示动态数据或在所有页面上显示?

1 个答案:

答案 0 :(得分:2)

使用custom template context processor

这会将您需要的上下文(数据)添加到所有视图呈现的模板中。

首先创建上下文处理器( notes/context_processors.py ):

from .models import ColorLabel

def color_labels(request):
    return {'color_labels': ColorLabel.objects.all()}

然后在 settings.py 中将其添加到模板渲染器的context_processors option

TEMPLATES = [{
    'BACKEND': '...',
    'OPTIONS': {
        'context_processors': [
            'notes.context_processors.color_labels',
            ...
        ],
    },
}]

最后,您将能够在模板中使用它:

<强> templates/base.html

<nav>
    {% for color_label in color_labels %}
        {{ color_label.title }}
    {% endfor %}
</nav>