ブロックのデフォルトコンテンツを保持する方法はありますか?このように動作します拡張タグのデフォルトコンテンツ - django
何か:
if extended:
show content from template extending it
else:
show this default content
おかげ
ブロックのデフォルトコンテンツを保持する方法はありますか?このように動作します拡張タグのデフォルトコンテンツ - django
何か:
if extended:
show content from template extending it
else:
show this default content
おかげ
あなたのデフォルトのデータのコンテナとして、あなたの親(ベース)テンプレート内のブロックを定義し、通常Template Inheritance
に
を使用することができます。
ここでこのテンプレートを拡張すると、このブロックをどのようにするかを決めることができます。 ブロックをオーバーライドしないと、デフォルトのデータが表示されます。それ以外の場合は、継承したテンプレートのブロックのデータが表示されます。最後に
{{ block.super }}
はあなたのベースからの内容と継承されたテンプレートをミックスするためのオプションを提供します:
あなたはそれを完全に上書きする代わりに の親ブロックの内容に追加する 場合に便利です。
例えばautoescape
# in autoescape()
# get content from current autoecape to pairing endautoescape
nodelist = parser.parse(('endautoescape',))
# in AutoEsacpeControlNode.render()
# render inner content
output = self.nodelist.render(context)
、ジャンゴ/テンプレート/ defaulttags.py内部の組み込みコマンドタグの実装を確認してくださいしたがってますカスタマイズしたタグに次のような文字を書きます。
def render(self, context):
...
if extend:
return default_content
else:
return self.nodelist.render(context)
通常if... else
が...また、トリックを行います:
{% if extended %}
...
{% else %}
{{ default }}
{% endif %}