我在表单中发送数据时遇到问题,但实际情况并非如此。在视图中,我构建了一个动态形式的协议,在代码中有一些更复杂的模型要简单得多,但想法是一样的。 当我填写表格时,永远不会处理。我真的不知道可能是什么问题。
代码:
from wtforms import StringField,SubmitField
from flask.ext.wtf import Form
@preguntas.route('/pregunta/encuesta/', methods=['GET','POST'])
def view():
class F(Form):
pass
#building form
setattr(F,'funcion1', StringField(label='fun1'))
setattr(F,'funcion2', StringField(label='fun2'))
setattr(F,'enviar', SubmitField('enviar formulario'))
formulario = F()
if formulario.validate_on_submit():
#never comes to this part of the code
print "saving data..."
return render_template('pregunta/page.html',form = formulario)
感谢您的回答
答案 0 :(得分:0)
我认为您需要检查一些事项。您尝试验证的形式是什么?在您的代码示例中,我没有看到使用验证器。例如,
setattr(F,'funcion1', StringField(label='fun1', [validators.Length(max=10)]))
这应添加一个验证器,验证输入的字符数不超过10个。您可以将任何验证器添加到验证器列表中
此外,如果您使用CSRF保护和POST,则应将{{hidden_tag}} or
{{formulario.csrf_token}}`作为表单中的第一个元素
您的模板中的表单应如下所示:
<form action="{{url_for('some_view'}}">
{{hidden_tag}}
<!-- rest of form elements -->
</form>
并尝试查看您从表单中获得的错误:
formulario = F()
print formulario.errors
if formulario.validate_on_submit():
# some code