如何在 Jinja2 的方法调用中引用对象 属性?

How do I reference an object property in a method call in Jinja2?

我正在尝试使用 jinja2 和 flask-wtf 在 flask 应用程序中呈现一个表单,但我无法弄清楚如何处理添加包含 属性 作为其一部分的 onclick 生成的参数参数。

您可以在表单标签部分看到我将 onclick 设置为调用 javascript 函数并传递当前循环对象的名称 属性,这按预期工作。但是,当我在表单字段部分时,我需要将 onclick 作为关键字参数传递给循环对象,并且需要使我的参数的参数成为对象名称 属性。这行不通。

这里是一个简短的例子:

<form class="form">
    {% for entry_field in form %}
        {{ entry_field.label() }}
        {{ entry_field(onclick="jsFunction({{entry_field.name}})}}
    {% endfor %}
</form>

这是一个完整的例子:

<form id="reg_form" class="form text-left" method="post" role="form">
{{ form.csrf_token }}
{% for entry_field in form %}
{% if entry_field != form.csrf_token %}
<div class="form-group row">
    <!--form label-->
    <a href="#" onclick="showNotes('{{entry_field.name}}')">
    {{ entry_field.label(class="col-sm-3 col-form-label") }}
    </a>
    <!--form field-->
    <div class="col-sm-9">
        {{ entry_field(class_="form-control", onclick="showNotes('{{entry_field.name}}')") }}
        {% for error in entry_field.errors %}<span style="color: red;">{{ error }}</span>{% endfor %}
    </div>
</div>
{% endif %}
{% endfor %}
<!--form submit-->
<div class="form-group row">
    <div class="col-sm-9 col-sm-offset-3">
        <input type="submit" class="btn btn-lg btn-success" value="Submit">
    </div>
</div>
</form>

非常感谢任何帮助!

您可以使用字符串格式来构建您想要的字符串:

{{ "jsFunction(%s)" | format(entry_field.name) }}

您可以将那个字符串用作 entry_field() 的参数:

{{ entry_field(onclick=("jsFunction(%s)" | format(entry_field.name)) }}