Django 视图/模板盒子

0 投票
2 回答
648 浏览
提问于 2025-04-16 15:49

我刚开始学习python/django(之前是用PHP),现在遇到了一个设计上的问题,不知道该怎么解决。

假设我们有一个主要的内容区域和一个侧边栏。这个侧边栏会在网站的每个页面上显示,但里面的内容可能会有所不同(虽然是同一组内容,但在某些页面上特定的内容可能会被禁用)。

侧边栏里有几个小框,比如新闻、活动、最近的任何内容、用户信息、统计数据等等。这些都是动态数据。

根据我的理解,视图函数应该填充上下文,并调用content.html(这个文件负责渲染主要的内容区域)。

而context.html应该扩展base.html,而base.html里面包含了侧边栏。

我的问题是:我该如何把所有这些数据传递给侧边栏的小框呢(我想提醒一下,这些动态数据是和一些模型相关的)?希望有人能给我解释一下。谢谢大家!

2 个回答

0

你好,欢迎来到Django。上下文中的数据对所有代码块都是可用的。你不需要做任何特别的事情就能把上下文数据传递给一个代码块或者包含的部分。

另外,还有一些模板标签可以用来封装你在模板中可能需要的其他功能:http://docs.djangoproject.com/en/1.3/howto/custom-template-tags/

0

经过一些额外的研究,我发现有四种方法可以实现我想要的功能。

1) 中间件
2) 上下文处理器
3) 包含标签(模板标签),正如Brendon提到的。
4) django-blocks

我选择了第三种方法。
测试了前面三种方法。

决定开始写博客,把自己的笔记记录下来...
对这些方法的更详细的评估可以在这里找到:
http://tigra-potd.blogspot.com/2011/04/django-sidebar-boxesblocksmodules.html

撰写回答