FlaskWTForms validate\u on \u submit不会执行

2024-05-03 05:18:42 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的flask表单呈现得很好,尽管它接受任何(或不接受)输入,并且在提交时总是重定向到目标URL。本周寻找解决方案时也出现了类似的情况,尽管其中大多数都与丢失的CSRF令牌(example)有关。肯定有CSRF代币form.hidden_标记(),当Werkzeug调试器打开时,两者表单验证()和提交表单时验证()返回输出。但是,如果源代码中包含print语句,则这两条语句都不会生成输出。在

以下是模型中的表单:

from wtforms.validators import InputRequired, NumberRange
from flask_wtf import FlaskForm

class revise_task(task_abt):
ID = IntegerField("Record ID", validators=[InputRequired()])
date = DateField('Date', validators=[InputRequired()], format="%Y-%m-%d")

class revise_punch(FlaskForm):
punchtype = SelectField('Punch Type', validators=[InputRequired()], choices 
= [('CLOCK IN AM', 'CLOCK IN AM'), ('CLOCK OUT LUNCH','CLOCK OUT LUNCH'), 
('CLOCK IN LUNCH', 'CLOCK IN LUNCH'), ('CLOCK OUT PM', 'CLOCK OUT PM'), 
('SICK TIME', 'SICK TIME')])
date = DateTimeField("Timestamp", format='%Y-%m-%d %H:%M:%S')
ID = IntegerField("Record ID", validators=[InputRequired()])

以下是视图中的表单:

^{pr2}$

下面是模板:

<div class="form-group" align="center">
<form action="{{ url_for('puncher.review_confirm') }}" method="POST">
    {{ task_form.hidden_tag() }}
    <p>
        {{ task_form.date.label }}<br>
        {{ task_form.date(class_="form-control", type_="date") }}
    </p>
    <p>
        {{ task_form.project.label }}<br>
        {{ task_form.project(class_="form-control") }}
    </p>
    <p>
        {{ task_form.task.label }}<br>
        {{ task_form.task(class_="form-control") }}<br>
     <p>
        {{ task_form.hours.label }}<br>
        {{ task_form.hours(class_="form-control", type_="number") }}<br>
    </p>
     <p>
        {{ task_form.ID.label }}<br>
        {{ task_form.ID(class_="form-control", type_="number", placeholder="Numeric ID from the record below you wish to change") }}<br>
    </p>        
     <p>
        {{ task_form.submit(class_="btn btn-success btn-lg") }}
    </p>        
</form>

当前没有进行任何验证,用户将被发送到确认页,而不向数据库提交任何数据。任何帮助或建议将不胜感激!在


Tags: inbrformid表单taskdateout