gpt4 book ai didi

python - 使用 flask + wtform 渲染表单

转载 作者:太空狗 更新时间:2023-10-29 21:26:55 27 4
gpt4 key购买 nike

有问题的代码:

from flask import Blueprint, render_template, abort
from flask.ext.wtf import Form
import os
from jinja2 import TemplateNotFound
from models import Member
from wtforms.ext.sqlalchemy.orm import model_form
@simple_page.route('/register')
def register():
form = model_form(Member, Form)
return render_template('register.html', form=form, name="bad")


class Member(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False)
email = db.Column(db.String(50), nullable=False, unique=True)

在我看来:

        <p class="txt11 colorb">
{{ form.name }}
</p>

这会输出 <UnboundField(TextField, (), {u'default': None, u'filters': [], u'validators': [<wtforms.validators.Required object at 0x7f62f59b5590>, <wtforms.validators.Length object at 0x7f62f59b55d0>]})> ,而不是一个实际的领域。我如何使用 wtform 获取实际的表单/字段?

最佳答案

您向模板传递的是表单,而不是表单实例model_form 方法动态生成一个新类,可以像任何其他表单子(monad)类一样重复使用、扩展和以其他方式使用。也没有必要在每次运行 View 时都生成此表单类,因此您可以将此调用移到 View 之外。

你传递一个未实例化的类也是你得到与 UnboundField 相关的奇怪行为的原因(这是 WTForms 处理声明性字段实例化的方式)

修复很简单:

MemberForm = model_form(Member, base_class=Form)

@simple_page.route('/register')
def register():
form = MemberForm(name=u'bad')
return render_template('register.html', form=form)

关于python - 使用 flask + wtform 渲染表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16406496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com