下面的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>
当前没有进行任何验证,用户将被发送到确认页,而不向数据库提交任何数据。任何帮助或建议将不胜感激!在
表单操作指向错误的路径。在
相关问题 更多 >
编程相关推荐