2012-03-22 118 views
2

我是Django和Web编程的新手。已使用Google搜索,但无法找到我需要的答案。这里的情况:Queryset在继承的Django模板中

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

有没有在每个记录视图中填充查询的方法? 还是有点看继承?

对不起,我英文很差。

回答

3

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

因此,在您的基本模板,你可以有这样的事情:

{% navigation_bar user %} 
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 }} 
+0

这听起来不错。我会尝试一下,然后张贴我的经验。没关系,不是每个网页都会对查询有意义吗?因为查询基于用户... – lembon 2012-03-23 00:10:24

+0

'... def my_context_processor(request): ...' – 2013-09-30 18:02:52