我在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 %}
答案 0 :(得分:8)
您可以在多个模板中使用相同的模板标记,但是您必须在每个文件中调用{% load books_tags %}
,即使它们之间存在继承关系。
请参阅https://docs.djangoproject.com/en/dev/topics/templates/#custom-libraries-and-template-inheritance