继承的Django模板中的Queryset

时间:2012-03-22 23:42:37

标签: django templates django-queryset inherited

我是Django和Web编程的新手。谷歌搜索但找不到我需要的答案。情况就是这样:

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

有没有办法填充这个而不在每个记录的视图中进行查询? 或者某种View继承?

抱歉我的英语很差。

2 个答案:

答案 0 :(得分:3)

另一种选择是创建自定义模板标记(可能是inclusion tag)并将其放在基本模板中。

因此,在您的基本模板中,您可以使用以下内容:

{% navigation_bar user %}

答案 1 :(得分:0)

您可以使用context processorsHere's a good example)。这些允许您在整个站点的每个视图中提供变量(查询集等)。例如,在您的某个应用中制作文件:

<强> 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 }}