我已經爲工作人員選擇了他們的名字。 我的目標是當用戶不選擇他們的名字,而是在選擇「---」上留下下拉框時,在這種情況下,我希望ValidationError然後打印它的消息。此刻我測試時沒有打印任何內容。WTForms似乎無法驗證SelectField框
這裏是我的forms.py文件:
from flask_wtf import Form
from wtforms import StringField, BooleanField, SelectField
from wtforms.validators import DataRequired, Required, ValidationError
class StaffNames(Form):
staff = SelectField(
'staff',
choices=[("", "---"), ('1', 'John Jones'), ('2', 'Chris Hughes'), ('3', 'Lyn Fox')],
)
def validate_staff(form, field):
if field.data is "---":
raise ValidationError("Sorry, you havn't chosen a staff name")
這裏是我的view.py文件:
from flask import render_template, flash, redirect
from app import app
from .forms import StaffNames
@app.route('/')
@app.route('/index', methods=['GET', 'POST'])
def index():
form = StaffNames()
if form.validate_on_submit():
return redirect('/results')
return render_template('index.html',
title='RA Index Search',
form=form)
,這裏是我的index.html它涉及到這種形式:
<!-- extend base layout -->
{% extends "base.html" %}
{% block content %}
<center>
<h1>Search</h1>
<form action="" method="post" name="login">
<p>{{ form.staff }} Select your name</p>
<p><input type="submit" value="Search"></p>
</form>
{% endblock %}
任何人都可以看到我做錯了什麼或建議一個替代品,不會融化我的大腦!笑 感謝