python - 在 wtforms 表单中设置默认值

标签 python flask flask-wtforms

我正在开发“添加成员(member)详细信息”和“编辑成员(member)详细信息”页面。对于“添加成员(member)详细信息”,我使用如下所示的 wtf 表单(精简版本)

class RegisterForm(Form):

    name = TextField(
        'Name', 
        validators=[DataRequired(), Length(min=3, max=25)]
    )

    phone = TextField(
        'Phone', 
        validators=[DataRequired(),
            Length(min=10, max=10, message="Invalid phone number")],
    )

对于编辑页面,想法是从RegisterForm继承EditForm并将默认值设置为姓名和电话的值。但在管理遗产方面却遇到了困难。以下是我想要实现的目标。如有任何帮助,我们将不胜感激。

class EditForm(RegisterForm):
    def __init__( not sure of args, member ):
        self.name.default = member.name
        self.phone.default = member.phone 

最佳答案

使用TextField时,您应该设置self.field.data而不是self.field.default。在这种情况下,您只需使用 obj 关键字在表单的默认构造函数中传递 member 即可完成默认值。这就是我的意思:

form = EditForm(obj=member)

表单将搜索 member 上的属性,以使用相同的名称填充其字段(这里是 the docs 关于它)。与以下代码效果相同:

class EditForm(RegisterForm):
    def __init__(self, member, *args, **kwargs):
        super(EditForm, self).__init__(*args, **kwargs)
        self.name.data = member.name
        self.phone.date = member.phone

关于python - 在 wtforms 表单中设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38412715/

相关文章:

Python,如何将长度不等的嵌套列表写入csv文件?

python - 多特征线性回归的实现

python - 从 python 向带有 windows-1251 编码的页面发送请求

python - Flask WTForms 在 validate_on_submit() 上总是给出 false

python - 将变量传递给 Flask WTForm

python - 过滤A010784序列的最快方法

python - NLTK 只搜索名词同义词集

opencv - Flask 视频流、多处理、CPU 使用率上限为单核级别

python - Nginx + Gunicorn - 静态资源错误页面

javascript - 将 JavaScript 与 WTForms 结合使用