2

一般来说,我是 Django 和 Web 编程的新手。谷歌搜索但找不到我需要的答案。情况如下:

我有一个网站,用户登录的每个页面都有特定的导航菜单。这就是他们扩展名为 base_logged.html 的模板的原因,该模板也扩展了 base.html。问题是导航菜单部分由数据库查询填充。

有没有一种方法可以在不在每个日志视图中进行查询的情况下填充它?还是某种视图继承?

对不起我糟糕的英语。

4

2 回答 2

3

另一种选择是创建一个自定义模板标签(可能是一个包含标签)并将其放入您的基本模板中。

所以在你的基本模板中你可以有这样的东西:

{% navigation_bar user %}
于 2012-03-23T01:49:56.330 回答
0

您可以使用上下文处理器这是一个很好的例子)。这些允许您在整个站点的每个视图中提供变量(查询集等)。例如,在您的一个应用程序中创建一个文件:

some_app.context_processors.my_context_processor.py

from some_app.models import Bar
def my_context_processor():
    return {
        'foo' : Bar.objects.all(),
    }

在你的settings.py

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'some_app.context_processors.my_context_processor',
    ...
)

现在您可以访问所有视图/模板:

{{ foo }}
于 2012-03-22T23:55:35.817 回答