我正在使用python、烧瓶、jinja来创建一个表单,我正在迭代一个字段列表来呈现输入,一切都很好。
我试图在输入框中使用field.label属性作为默认值,这样我就不需要它们旁边的标签,而是不需要实际的标签(对于输入中有label =search_term的字段) <label for=,而在输入旁边的Search Term"> .
如果我将{{field.label}}放置在其他任何地方,它就会正确地显示字段标签,如果我使用field.name作为值,它就能正常工作--为什么它只在{{ field (class="col-6 text-center", value=field.label)}}的上下文中起着奇怪的作用?
谢谢!
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 %}

发布于 2022-04-12 01:24:27
{{ field (class="col-6 text-center", value=field.label)}}上面的代码导致结果中断的原因是,field.label本身将与HTML紧密相连,而不仅仅是文本。您正在尝试包含HTML (包括引号),因为生成的HTML中的值将被破坏,如下所示:
<input value="<label for="search">"> <!-- Invalid HTML! -->从WTForm文献中我们可以看到,label具有text属性,这将为您提供标签的纯文本。
像这样的东西会给你想要的结果:
{{ 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">
https://stackoverflow.com/questions/71834859
复制相似问题