15

次のようなテンプレート(test.html)があります:

{% extends 'base.html' %}
{% from "_formhelpers.html" import render_field %}

{% block content %}

<div class="container">
    <div class="row">
        <div class="span6 offset3">
            <form class="form-horizontal" action="/create_user/" method="post">
                {{ form.csrf_token }}
                <dl>
                    {{ render_field(form.name) }}
                    {{ render_field(form.members) }}
                    <!--<div class="control-group">
                        <label class="control-label">
                            {{ form.task.label }}
                        </label>
                        <div class='controls'>
                            {{ form.task}}

                            {% if form.task.errors %}
                            <ul class="text-error">
                                {% for error in form.task.errors %}
                                    <li>{{ error }}</li>
                                {% endfor %}
                            </ul>
                            {% endif %}
                        </div>
                    </div>-->
                </dl>

            </form>
        </div>
    </div>
</div>

{% endblock %}

Flask の render_template("test.html", form=form) を使用してこのテンプレートをレンダリングする場合。「UndefinedError: 'tickapp.forms.TeamForm object' には属性 'task' がありません」というエラーが発生しました。ご覧のとおり、テンプレート (whole ) で「form.task」をコメントアウトしました。また、モデルとフォームにそのようなフィールドはありません。

なぜ jinja2 がコメント付きの html コンテンツを検討しているのか疑問に思います。私はコメント (!) を信頼し、この問題に数時間費やしました。最後に、すべてのコメントを削除すると、機能し始めました.jinja2で作業している人はいますか?この問題に直面した人はいますか? なぜそれが起こっているのか知っていますか?

4

1 に答える 1

31

基本的に、jinja2 は、HTML の構造ではなく、独自のブロックを評価することだけに関心があります。テンプレートのセクションを完全に除外したい場合は、jinja2 のコメント構文を使用できます。

{# This is a comment now.
    <div class="control-group">
       ...
    </div>
#}
于 2013-04-30T14:23:58.580 に答える