评论在jinja2中不起作用

raj*_*jpy 8 python jinja2

我有一个模板(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 %}
Run Code Online (Sandbox Code Playgroud)

使用Flask的render_template("test.html",form = form)渲染此模板时.我收到以下错误"UndefinedError:'tickapp.forms.TeamForm object'没有属性'task'".正如您所看到的,我已经在模板(整体)中注释掉了"form.task",并且在模型和表单中也没有这样的字段.

我想知道为什么jinja2正在考虑评论的HTML内容.我信任评论(!)并花了几个小时来解决这个问题.最后,删除了所有的评论,它开始工作.在jinja2工作的任何人都面临这个问题?你知道为什么会这样吗?

rob*_*jpg 19

基本上,jinja2只关注于查找自己的块,而不是HTML的结构.如果要完全排除模板的某个部分,可以使用jinja2的注释语法:

{# This is a comment now.
    <div class="control-group">
       ...
    </div>
#}
Run Code Online (Sandbox Code Playgroud)

  • 一年后下降......我不同意,@rajpy。我在谷歌搜索时发现了这个问题,以寻找一种向我的 jinja2 源代码添加评论的方法,而不实际在 HTML 中发出这些评论(出于安全原因)。如果 jinja2 只知道并处理它自己的语法,您将获得最大的灵活性。 (2认同)