私は "Flask web development"を読んでいます。 、私が使用するどのような状況では 伸び、輸入の違いは何ですか(私は、彼らが、使用中に非常に似ていると思う。) :例4-3で 、Flaskでのインポートと拡張の違いは何ですか?
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
私が知りたいの?拡張またはインポート?
私は "Flask web development"を読んでいます。 、私が使用するどのような状況では 伸び、輸入の違いは何ですか(私は、彼らが、使用中に非常に似ていると思う。) :例4-3で 、Flaskでのインポートと拡張の違いは何ですか?
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
私が知りたいの?拡張またはインポート?
あなたextend
テンプレートは、あなた(と呼ばれるコントロールの発信者)を制御する別のテンプレート - 「親」テンプレートで唯一の名前のブロックにレンダリングされます。一方
{% extends "base.html" %}
{% block main_content %}
Only shows up if there is a block called main_content
in base.html.
{% endblock main_content%}
をimport
は、単純に結合しテンプレートをテンプレートのスコープ内の名前に変換し、いつどこで呼び出すかを制御します(呼び出し元が呼び出し側を制御します)。
{% import "bootstrap/wtf.html" as wtf %}
Some of your own template code with {{ wtf.calls() }} where it makes sense.
は、です。 {% extends parent.html %}
はparent.html
をレンダリングすることができ、{% import %}
はテンプレート変数にアクセスすることができますが、{% block %}
はその中に定義されています。
したがって、テンプレートの例はbase.html
で、変数はbootstrap/wtf.html
からインポートされます。 Pythonのクラス継承やimport文のように考えてください。
デフォルトでは、インクルードされたテンプレートは現在のコンテキストに渡され、インポートされたテンプレートは渡されません。デフォルトでは Jinja documentation
含まテンプレートは、インポートしますがキャッシュされません。
なぜなら、インポートはマクロを保持するモジュールとしてよく使われるからです。
マクロを含むテンプレートでインポートを使用するのがベストプラクティスですが、一部のマークアップテンプレートを使用していないときにインクルードを使用することをお勧めします。