【发布时间】:2012-11-29 05:40:49
【问题描述】:
我正在使用 WTForms,我遇到了隐藏字段不返回值的问题,而文档说他们应该这样做。这是一个简单的例子:
forms.py:
from wtforms import (Form, TextField, HiddenField)
class TestForm(Form):
fld1 = HiddenField("Field 1")
fld2 = TextField("Field 2")
experiment.html:
{% from "_formshelper.html" import render_field %}
<html>
<body>
<table>
<form method=post action="/exp">
{% for field in form %}
{{ render_field(field) }}
{% endfor %}
<input type=submit value="Post">
</form>
</table>
</body>
</html>
(render_field 只是将标签、字段和错误放在 td 标签中)
experiment.py:
from flask import Flask, request, render_template
from templates.forms import *
from introspection import *
app = Flask(\__name__)
app.config.from_object(\__name__)
db_session = loadSession()
@app.route('/exp', methods=['POST', 'GET'])
def terms():
mydata = db_session.query(Peter).one()
form = TestForm(request.form, mydata)
if request.method == 'POST' and form.validate():
return str(form.data)
return render_template('experiment.html', form = form)
if __name__ == '__main__':
app.run(debug = True)
mydata 返回具有 2 个字段(fld1 和 fld2)的表中的唯一行。 fld1 是一个整数自增字段。表单中填充了该数据,因此如果我运行experiment.py,当我提交表单时,我会得到:
{'fld2': u'blah blah blah', 'fld1': u'1'}
但是如果我将 fld1 更改为 HiddenField,当我点击提交时,我会得到: {'fld2': u'blah blah blah', 'fld1': u''}
我做错了什么?
【问题讨论】:
-
刚刚了解到,显然我们甚至不需要向模板显式添加隐藏字段,它们是由
form标签下方的 flask-wtf 为我们添加的。