如何在文本输入中使用 field.label 作为默认值

how to use field.label as default value in a text-input

我正在使用 python、flask、jinja 制作表单,我正在遍历字段列表以呈现输入,一切正常。

我正在尝试使用 field.label 属性作为输入框中的默认值,这样我就不需要它们旁边的标签,而是我得到的实际标签(对于输入中带有标签 = search_term) <label for= 的字段,旁边是 Search Term">...

如果我将 {{field.label}} 放在其他任何地方,它会正确显示字段标签,如果我使用 field.name 作为值,它工作正常 - 为什么它仅在 [= 的上下文中表现得很奇怪16=]?

谢谢!

JINJA2
        {% for field in form if not field.name =="csrf_token" %}
        <tr>
          {% if field.type == "SubmitField" %}
          <td class="col-6 pr-3"> </td>
          <td class="col-6 text-left pl-3">{{form.submit(class="w-50 btn btn-outline-info") }} </td>

          {% elif field.type == "BooleanField"%}
          <td class="col-6 text-right pr-3">{{ field.label}}</td>
            <td class="col-4 text-left">{{ field (class="col-6 text-center")}}</td>

          {% elif field.type == "SelectMultipleField" %}
          <td class="col-6 text-right pr-3">What are you searching for? <br /><span class="small"> ctrl-click for multiple </span></td>
          <td class="text-left pl-3">{{ field(class="col-6 text-center") }}</td>

          {% else %}
          <td class="col-6 text-right pr-3">{{ field.label }}</td>
          <td class="col-6 text-left">{{ field (class="col-6 text-center", value=field.label)}}</td>
          {% endif %}
        </tr>
        {% endfor %}

{{ field (class="col-6 text-center", value=field.label)}}

上述代码出现错误结果的原因是 field.label 本身字符串化为 HTML 代码,而不仅仅是文本。您正在尝试将 HTML (包括引号)作为值包含在内生成的 HTML 会被破坏,看起来像:

<input value="<label for="search">"> <!-- Invalid HTML! -->

WTForm's documentation我们可以看到labeltext属性,这会给你标签的纯文本。

这样的事情会给你想要的结果:

{{ field (class="col-6 text-center", value=field.label.text)}}

此外,您是否正在寻找 placeholder 属性而不是 value

<h2>Using 'value'</h2>

<input type=text value="Search Term"> Note that you have to delete the text first...

<h3>vs</h3 <br>

<h2>Using 'placeholder'</h2>

<input type=text placeholder="Search Term">