隐藏的烧瓶没有验证

时间:2014-05-04 20:14:17

标签: flask flask-wtforms

为什么价值不是'啊啊!'作为填充物。相反,它表示需要进行表格验证。

<form class="form form-inline" method="post" role="gform" id='gform'>
{{ gform.hidden_tag() }}
{{ wtf.form_errors(gform) }}
{{ wtf.form_field(gform.goal) }}
    {{ wtf.form_field(gform.GHF(value='AHHHHH!')) }}
{{ wtf.form_field(gform.submit) }} 
</form>

形式

class goal_form(Form):
    goal = TextField('goal', validators = [Required()])
    GHF =HiddenField('', validators = [Required()])
    submit=SubmitField('add goal')

视图

@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])
def index():
    gform=goal_form()
    P=models.Projects.query.all()
    if gform.validate_on_submit():
        u=models.Projects.query.get(1)
        p=models.Goals(goal=gform.goal.data,proj=u)
        db.session.add(p)
        db.session.commit()
        return redirect(url_for('index'))
    return render_template("index.html",gform=gform,P=P)
 from app import db

我只是试图通过硬编码值传递验证。一旦它起作用,我会放入一些有意义的东西

1 个答案:

答案 0 :(得分:1)

在模板wtf.form_field中应该接受一个字段,但是当你调用gform.GHF(value='AHHHHH!')时,会创建一个字符串。因此,请尝试在视图中而不是在模板中将值传递给GHF。

@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])
def index():
    gform=goal_form()
    P=models.Projects.query.all()
    if gform.validate_on_submit():
        u=models.Projects.query.get(1)
        p=models.Goals(goal=gform.goal.data,proj=u)
        db.session.add(p)
        db.session.commit()
        return redirect(url_for('index'))
    gform.GHF.data = 'AHHHHH!'
    return render_template("index.html", gform=gform, P=P)
 from app import db

或者您可以在表单中设置默认值:

class goal_form(Form):
    goal = TextField('goal', validators=[Required()])
    GHF = HiddenField('', default='AHHHHH!', validators=[Required()])
    submit = SubmitField('add goal')