python - 请问flask_wtf中的validate_on_submit如何调试?

查看:137
本文介绍了python - 请问flask_wtf中的validate_on_submit如何调试?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

小弟在联系通过flask做网页,但是目前遇到一个问题,通过flask_wtf生成的表单在validate_on_submit()时总为false,不知道是哪里不符合校验规则
代码如下:
forms.py

from flask_wtf import FlaskForm
from wtforms import *
from flask_wtf.file import file_required

class add_task_form(FlaskForm):
    task_name = StringField('taskname',validators=[validators.data_required()])
    db_name = SelectField('db_name',choices=[(1,'ODS'),(2,'EDW')])
    task_cycle = SelectField('task_cycle',choices=[('D','日'),('W','周'),('M','月'),('Y','年')])
    depends = FileField('depends',validators=[validators.data_required()])

views.py:

@app.route('/add_task', methods=['GET', 'POST'])
@login_checker
def add_task():
    add_task_form = forms.add_task_form()
    if request.method == 'POST':
        print(add_task_form.validate_on_submit())
        if add_task_form.validate_on_submit():
            return 'ok'
        else:
            return 'oops'
    else:
        return render_template('add_task.html',
                               form = add_task_form)
                               

前台网页(重点部分):

<body>
    <div class="easyui-dialog" data-options="iconCls:'icon-save'" style="width:400px;height:200px;padding:10px">
        <form method="post" action="{{ url_for('add_task') }}">
            {{ form.csrf_token }}
            <table>
                <tr>
                    <td>任务名称:</td>
                    <td>{{ form.task_name }}</td>
                </tr>
                <tr>
                    <td>数据库:</td>
                    <td>{{ form.db_name }}</td>
                </tr>
                <tr>
                    <td>调度周期:</td>
                    <td>{{ form.task_cycle }}</td>
                </tr>
                <tr>
                    <td>依赖配置文件:</td>
                    <td>{{ form.depends }}</td>
                </tr>
            </table>
            <button type="submit">提交</button>
        </form>
    </div>
</body>

所有选项,包括文件上传均填写,form.csrf_token也添加了,但是validate_on_submit依然返回false。请高人指点迷津,谢谢大家

解决方案

在模板页,form中写上{{form.errors}},这样提交时,能看到哪里错了。
另外你可以关注一下,SelectedField获取的值的类型,有可能是类型错误,需要加上coerce=int

这篇关于python - 请问flask_wtf中的validate_on_submit如何调试?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆