如何使用 Python+Jinja2 在 html 表单中使用隐藏输入

bho*_*ben 5 html python forms input jinja2

当我将此行放在我的 html 模板中时,我可以通过 jinja2 变量成功地将输入字符串传递到我的 Python 代码中...

<label for="firstName">First name*</label>
<input type="text" name="fname" id="firstName" value="{{ fname }}">
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用以下行传递隐藏输入时...

<input type="hidden" name ="contact_form" value="{{ active_form }}">
Run Code Online (Sandbox Code Playgroud)

...我没有看到值传递回我的 Python 代码。我还没有学过 Javascript。是否需要一些 Javascript 来传递隐藏的输入值?我错过了什么?

ajk*_*hol 3

我建议使用WTForms

例子

from wtforms import TextField, validators, PasswordField, TextAreaField, HiddenField    
class ArticleCreateForm(Form):
        title = TextField('Title', [validators.Required("Please enter title.")],
                          filters=[strip_filter] )
        body = TextAreaField('Body', [validators.Required("Please enter body.")],
                             filters=[strip_filter])
        category = QuerySelectField('Category', query_factory=category_choice )
        person_name = HiddenField()
Run Code Online (Sandbox Code Playgroud)

视图.py

@app.route('/create', methods=['GET', 'POST'])
def article_create():
    if 'email' not in session:
        return redirect(url_for('signin'))
    person = Person.query.filter_by(email=session['email']).first()
    name = person.firstname
    article = Article()
    form = ArticleCreateForm()
    form.person_name.data = person.firstname
    if form.validate_on_submit():
        form.populate_obj(article)
        db.session.add(article)
        db.session.commit()
        return redirect(url_for('index'))
    return render_template('create.html', form=form, person=person, name=name)
Run Code Online (Sandbox Code Playgroud)