2

django テンプレートを解析して、特定のタグのみをレンダリングすることは可能ですか? このスニペットは探しているものに近いですが、テンプレート全体が返されません。基本的に、このテンプレートを入力として持っている場合

<html>
<title>{% block title%}{% endblock %}</title>
<body>
{% block content %}
{% mycustomtag "args" %}
{% endblock content %}
</body>
</html>

そして私はこれだけをレンダリングしたいのですmycustomtagが、これは私が探している出力です

<html>
<title>{% block title%}{% endblock %}</title>
<body>
{% block content %}
<p>Result from mycustomtag</p>
{% endblock content %}
</body>
</html>

ありがとう。

4

1 に答える 1

3

{% verbatim %}私があなたの質問を正しく理解していれば、タグを使用してそれを行う方法があります。これはDjango 1.5で追加されますが、今のところカスタム タグとして使用できます。ソースは次のとおりです: https://code.djangoproject.com/ticket/16318

ここでの唯一の欠点は、このテンプレートを直接使用できないことです。二重のレンダリングが必要です。これが必要なものであれば、すべて問題ありません。

これを使用するには、他のタグを {% verbatim %} で囲むだけです。

{% load my_custom_tags %}  <-- this is needed to load the 'verbatim' and 'mycustomtag' tags
{% verbatim %}
<html>
<title>{% block title%}{% endblock %}</title>
<body>
{% block content %}
{% endverbatim %}

{% mycustomtag "args" %}

{% verbatim %}
{% endblock content %}
</body>
</html>
{% endverbatim %}

このテンプレートを使用して簡単なテストを行いました。

@register.simple_tag
def mycustomtag(a):
    return "<p>%s</p>" % a

....

from django.template import loader, Context
print loader.get_template("test.html").render(Context({}))

これにより、次のように出力されます。

<html>
<title>{%block title%}{%endblock%}</title>
<body>
{%block content%}

<p>args</p>

{%endblock content%}
</body>
</html>

これが役立つことを願っています。

于 2012-07-06T12:13:01.540 に答える