django:相同的模板标签,但在多个继承的 html 模板中
Posted
技术标签:
【中文标题】django:相同的模板标签,但在多个继承的 html 模板中【英文标题】:django: same template tag but in multiple inherited html templates 【发布时间】:2011-06-26 15:23:10 【问题描述】:我在 django 中使用模板继承。
目前有frame.html和book_detail.html
book_detail.html 扩展了 frame.html,我有 books_tags.py
# In frame.html
% load books_tags %
% book_list % # using a tag from books_tags.py
# In books.html
% extends frame.html %
% block content %
% book_list % # I want to use this from books_tags.py also
% endblock %
当我尝试使用同一个 books_tags.py 中的 book_list 时,它给了我语法错误。 或者,当我首先将 % load books_tags % 放入 book_detail.html 时,它仍然会给我语法错误。
无效的块标签:'book_list', 预期的“endblock”或“endblock” 内容”
有什么方法可以在多个继承的模板中使用相同的模板标签? 还是我需要在其中创建具有相同定义的 frame_tags.py 和 book_detail_tags.py?
由于 django 中的默认模板过滤器在多重继承中工作,我猜它应该可以工作,但不知道如何通过语法错误获取。
谢谢。
== 更新 ==
再次在 books.html 的 % block content % 内添加 template_tag。
# In books.html
% extends frame.html %
% block content %
**% load books_tags %**
% book_list % # I want to use this from books_tags.py also
% endblock %
【问题讨论】:
【参考方案1】:你可以在多个模板中使用相同的模板标签,但你必须在每个文件中调用% load books_tags %
,即使它们之间存在继承关系。
见https://docs.djangoproject.com/en/dev/topics/templates/#custom-libraries-and-template-inheritance
【讨论】:
以上是关于django:相同的模板标签,但在多个继承的 html 模板中的主要内容,如果未能解决你的问题,请参考以下文章
Django4.3_templates模板之继承标签extends和include添加标签
django-7.django模板继承(block和extends)