2016-08-16 8 views
3

Ich lese "Flask Web Development". in Beispiel 4-3,Was sind die Unterschiede zwischen importieren und in Flask erstreckt?

{% extends "base.html" %} 
{% import "bootstrap/wtf.html" as wtf %} 

Ich würde gerne wissen:? Was sind die Unterschiede zwischen sich und importieren (. Ich denke, sie in der Nutzung sehr ähnlich sind) In welcher Situation werde ich verwenden erweitert oder importiert?

Antwort

5

Wenn Sie extend eine andere Vorlage die Vorlage, die Sie steuert (die so genannte Steuer der Anrufer) - nur benannte Blöcke in der „Eltern“ Vorlage wird gemacht werden:

{% extends "base.html" %} 
{% block main_content %} 
Only shows up if there is a block called main_content 
in base.html. 
{% endblock main_content%} 

Auf der anderen Seite ein import einfach das bindet Vorlage auf einen Namen im Bereich Ihrer Vorlage, und Sie steuern, wann und wo es aufgerufen werden soll (der Anrufer steuert die angerufenen):

{% import "bootstrap/wtf.html" as wtf %} 
Some of your own template code with {{ wtf.calls() }} where it makes sense. 
1

Dort ist ein Unterschied. {% extends parent.html %} können Sie parent.html rendern und {% block %} darüber hinaus überschreiben, während {% import %} Sie nur ermöglicht, auf Vorlagenvariablen zuzugreifen.

So Beispiel Vorlage erweitert base.html und importiert Variablen von bootstrap/wtf.html. Denken Sie darüber nach wie Pythons Klassenvererbung und Importanweisung.

0

Standardmäßig enthalten die enthaltenen Vorlagen den aktuellen Kontext und importierte Vorlagen nicht. Jinja documentation

Standardmässig werden die mitgelieferten Vorlagen nicht während der eingeführten zwischengespeichert werden.

Der Grund dafür ist, dass Importe oft als ein Modul verwendet werden, das Makros enthält.

Die beste Vorgehensweise besteht darin, den Import in Templates zu verwenden, die Makros enthalten, während include am besten zu verwenden ist, wenn Sie nur eine Markup-Vorlage benötigen.

Verwandte Themen