Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想为我的 web 应用程序制作一个侧边栏。它包含以下内容:
我想在每个站点/视图中包含这个侧边栏。所以我的第一个猜测是它属于一个布局。但它也是动态的,据我所知布局是静态的。
如何避免视图/布局中的冗余并且仍然在每个站点上都有侧边栏?
要将上下文数据传递给多个模板,您在 django 中有不同的选项;您可以:
制作一个模板标签,它可以提取相关数据并将其呈现并在您需要的每个模板中重用它(或者只是将其插入基本模板并使用模板继承)。
使用上下文处理器:每个请求都会调用它,并将数据添加到使用RequestContext.
RequestContext
使用 Django 的基于类的视图,您可以让所有视图都继承自一个基础视图,该基础视图将数据添加到您的上下文中。
如果您需要数据库中的数据,我宁愿使用模板标签而不是使用上下文处理器,因为它将为每个视图调用。
对于侧边栏中的静态内容(例如搜索表单),它是直接的模板/html。
对于动态内容,如标签列表、最近的帖子:一旦在模板中确定了放置此信息的元素(div 或其他内容),您可以使用自定义模板标签或自定义上下文处理器填充其内容。
在您的情况下,如果内容并不真正依赖于请求参数或 url,那么模板标签将是更好的选择。
参考自定义模板标签 自定义上下文处理器