2009-08-07 19 views
26

Trong Jinja2, tôi có một mẫu cơ sở như thế này:Nhiều khối của cùng một tên trong Jinja2

<title>{% block title %}{% endblock %} - example.com</title> 
[...] 

<h1> 
    {% block title %}{% endblock %} - example.com 
</h1> 

Jinja2, sau đó, không thành công với thông báo sau:

lines = [self.message, ' ' + location] 
: block 'title' defined twice 

Nó phải được hiện rõ ràng như những gì tôi đang cố gắng làm - để có cùng một tiêu đề ở hai nơi: thẻ TITLE và thẻ H1, nhưng phần của tiêu đề thực sự được cung cấp bởi các mẫu có nguồn gốc khác.

Làm cách nào để đạt được điều này?

Trả lời

53

Như ghi nhận here, việc xác định một khối tạo một macro với tên của các khối trong "tự" đối tượng đặc biệt:

<title>{% block title %}{% endblock %} - example.com</title> 
[...] 

<h1> 
    {{ self.title() }} - example.com 
</h1> 
Các vấn đề liên quan