Django模板:在同一基础中使用多个块标签
Posted
技术标签:
【中文标题】Django模板:在同一基础中使用多个块标签【英文标题】:Django template: use of multiple block tags in same base 【发布时间】:2012-10-05 15:47:47 【问题描述】:在更改所有模板之前,我想确保我已正确理解这一点。我的整体布局有一个 base.html。这有一个 % 块内容 %。我的每个内容页面都扩展了“base.html”并被块标签包围。这很好用。我的视图返回渲染的内容页面,并且很好地放置在布局中。
现在我还在 menubar.html 中创建了一个菜单栏。除了所选页面/内容的颜色不同之外,每个页面的菜单都应该相同。所以它需要知道加载了什么内容。
我的 base.html 现在也有一个 % block menubar %
我即将打开我所有的内容模板并向其中添加以下内容:
% include "menubar.html" %
然后,在 menubar.html 中,我将用块标签包围菜单。那是对的吗?我认为块系统的意义在于,可以通过 base.html 更多地控制事情,而无需更改我所有的模板。
【问题讨论】:
【参考方案1】:我建议将 % include "menubar.html" %
放入 base.html。
要在菜单中突出显示当前页面,请使用以下内容:https://***.com/a/477719/473285
【讨论】:
现在看。看起来不错,除了我什至可以让 request.path 显示 - 并使用 context_instance=RequestContext(request)。将发布一个问题。 这很好用。我关注了引用的文章110j.wordpress.com/2009/01/25/… 和它引用的文章。我确实必须将命名参数指定为 name="home_url_name" 才能正常工作。【参考方案2】:如果您的内容模板从 base.html 扩展而来,并且 % block menubar %
在 % block content %
之外,则您无需修改所有内容模板,只需修改 base.html
【讨论】:
但是菜单是如何加载的呢?我返回我的渲染内容页面。这扩展了 base.html。但是 base 怎么知道在 menu 标签里面放什么? 在% block menubar %
中放置% include "menubar.html" %
,因此模板系统会将menubar.html 文件中的任何内容放入该块中。因此,如果您需要一些上下文信息来呈现您的菜单,您可以简单地将其在上下文字典中传递给 render_to_template 函数。
那么你甚至不需要这个块。只需使用包含。然后我的问题是传递上下文信息。查看下面的答案,谢谢!以上是关于Django模板:在同一基础中使用多个块标签的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 django 的自定义模板标签在模板的其他块中插入代码?
django-7.django模板继承(block和extends)
如何在 Django 模板中的“带有模板标签”中设置 Django 渲染块值?