如何解决WTForms:了解客户端验证并在需要时绕过它
我有几种表格可用于输入数据。 如果不完整(未经验证),我希望能够将数据临时保存到数据库中,以便不必重新输入输入的数据。 我使用标题 WTForms: Submit without validation 阅读了几篇文章。 https://stackoverflow.com/users/272193/matt-healy 在这篇文章中 How can I ignore a field validation in flask-wtf? 建议这样做: [A] 这样做的方法是在模板中添加 formnovalidate=True 。 例如 {{ form.delete_button(class_="...",formnovalidate=True) }}
我喜欢这个想法并想了解这一点。我还想将它包含在输入行的表格中,所以我知道它没有经过验证的原因有很多,包括需要去吃午饭哈哈。
无论如何,我实现了这个:
testChoices.html:
Widget build(BuildContext context) {
return FutureBuilder(
future: decodetoken(),builder: (context,snapshot) {
if (!snapshot.hasData) {
// Future hasn't completed yet,display something in the meantime
return CircularProgressIndicator();
}
// Future has completed,get data
var payload = snapshot.data;
...
},);
}
forms.py:
{% extends "base.html" %}
{% block content %}
<h1>Testing Code Solution</h1>
<form action="" method="post" novalidate>
{{ form.hidden_tag() }}
<p>
{{ form.selected_test_choice.label }}
{{ form.selected_test_choice }}
{% for error in form.selected_test_choice.errors %} <span style="color: red;">[{{ error }}]</span> {% endfor %}
<br>
{{ form.entered_text.label }}
{{ form.entered_text(size=10) }}
{% for error in form.entered_text.errors %} <span style="color: red;">[{{ error }}]</span> {% endfor %}
<br>
{{ form.validated.label }}
{{ form.validated }}
{% if form.validated == False %}
{{ form.submit(class_="TestForm",formnovalidate=True) }}
{% endif %}
</p>
<p>{{ form.submit() }}</p>
</form>
{% endblock %}
然后是 routes.py(这是我用来在 python 中找出问题的测试路线)
def list_validator(self,selected):
s = selected.data
print(f'validated = {self.data["validated"]}')
if (s == '0') and (self.data['validated'] == True): # self.data has 5 dictionary fields
raise ValidationError('Please select from the dropdown list')
class TestForm(FlaskForm):
selected_test_choice = SelectField(test_choice,choices=test_choices,validators=[list_validator])
entered_text = StringField('Enter Text',validators=[Inputrequired()])
validated = BooleanField('check for validation on submit')
submit = SubmitField('Submit')
它只能部分起作用。自定义验证器仍然被调用,我向它添加了代码以绕过引发验证错误。但是 WTForms 附带的内置验证器仍然会被执行。如果有人有更好的实现想法,我会全力以赴。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。