0

継承されたテンプレートでクラス名をオーバーライドするテンプレート ブロックがあります。ブロック オーバーライドの結果の html には、悪意のあるテキストが表示されています。

Base.html:

<html>
<body>
    {% block content %}
    <h1 class="{% block heading_style %}Base{% endblock %}">Base Page Heading</h1> 
    {% endblock%}
</body>
</html>

Child.html:

{% extends "Base.html" %}

{% block content %} 
{{block.super}}
{% block heading_style %}Login{% endblock %}
{% endblock %}

ブロックheading_styleは私が心配しているブロックです。

結果のhtml:

結果のhtml

ご覧のとおり、h1 クラスは "Login" に置き換えられていますが、h1 タグの後にテキストとして "Login" が表示され始めています。

私はdjango 1.3.3を使用しており、pydevでEclipseを使用しています。また、html ファイルのエンコーディングも確認しましたが、それらはutf-8

4

3 に答える 3

1

ブロック内heading_style子にブロックの定義を入れました。つまり、 内のテキスト コンテンツとして、および親のブロックを埋めるという2 つの目的で使用されています。contentcontentheading_style

ブロック定義heading_styleの外に移動してください。問題ありません。content

于 2012-09-27T11:43:37.307 に答える
0

ブロックとネストされたサブブロックをオーバーライドすること{{block.super}}が、物事の良い組み合わせであるかどうかはわかりません。これに依存しないように、テンプレートをリファクタリングすることをお勧めします。

これに関連する django のチケットを次に示します (これが修正されたかどうかは不明です) {{ block.super }} はネストされた {% block %} ステートメントでは機能しません

于 2012-09-27T10:11:43.337 に答える
0

エンドブロックが1つ欠落しています

{% block content %} 
{{block.super}}
{% block heading_style %}Login{% endblock %} {% endblock %}
于 2012-09-27T09:43:31.313 に答える