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添加标签

Python学习---django模板继承180123

Django 模板标签 - 返回多个值或对象

django-7.django模板继承(block和extends)

python测试开发django-7.django模板继承(block和extends)

在 Django 模板中标记或继承相同的代码,并进行细微的更改