django:相同的模板标签,但在多个继承的html模板中

时间:2011-02-13 23:49:09

标签: django multiple-inheritance django-templates

我在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时,它会给我语法错误。 或者,当我首先在book_detail.html中放入{%load books_tags%}时,它仍然会给我语法错误。

  

无效的块标记:'book_list',   预期的'endblock'或'endblock   内容'

有什么方法可以在多个继承的模板中使用相同的模板标签? 或者我是否需要创建具有相同def的frame_tags.py和book_detail_tags.py?

由于django中的默认模板过滤器在多重继承中工作,我猜它应该可以工作,但不知道如何通过语法错误获得。

谢谢。

== UPDATE ==

再次在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 个答案:

答案 0 :(得分:8)

您可以在多个模板中使用相同的模板标记,但是您必须在每个文件中调用{% load books_tags %},即使它们之间存在继承关系。

请参阅https://docs.djangoproject.com/en/dev/topics/templates/#custom-libraries-and-template-inheritance