wtforms - 在 wtForms 中创建自定义字段

标签 wtforms flask-wtforms

在我的表单中,我尝试创建一个带有选择的自定义数组字段。

自定义表单字段:

class CustomField(Field):
    widget = TextInput()
    def _value(self):
        if self.data:
            return u', '.join(self.data)
        else:
            return u''

    def process_formdata(self, valuelist):
        if valuelist:
            self.data = [x.strip() for x in valuelist[0].split(',')]
        else:
            self.data = []

实际表单调用自定义表单字段

class PostForm(Form):

    status = CustomField()

每当我将数据发布到 PostForm 时,它都会调用自定义字段,但不会将任何 valuelist 传递给 process_formatdata。自定义字段始终返回空列表。
我在这里错过了什么吗?

最佳答案

你的代码对我有用,这是一个有效的示例--

示例.py

from flask import Flask, render_template
from flask.ext.wtf import Form, SubmitField, Field, TextInput

app = Flask(__name__)
app.config['SECRET_KEY'] = 'Shh!'


class CustomField(Field):
    widget = TextInput()
    
    def _value(self):
        if self.data:
            return u', '.join(self.data)
        else:
            return u''

    def process_formdata(self, valuelist):
        if valuelist:
            self.data = [x.strip() for x in valuelist[0].split(',')]
        else:
            self.data = []


class ExampleForm(Form):
    status = CustomField()
    submit = SubmitField('POST')


@app.route('/', methods=['post', 'get'])
def hello_world():
    form = ExampleForm()
    if form.validate_on_submit():
        for entry in form.status.data:
            print '{}'.format(entry)
    return render_template('test.html', form=form)


if __name__ == '__main__':
    app.run(debug=True)

模板/test.html

<form action="." method="post">
    {{ form.hidden_tag() }}
    {{ form.status }}
    {{ form.submit }}
</form>

关于wtforms - 在 wtForms 中创建自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16799388/

相关文章:

python - 用户的管理员(仅限)注册,Flask-Security

python - WTForms:我似乎无法动态地为 QuerySelectField 提供默认值

python - 使用 SelectField 的 WTForms 帖子无法正常工作

python - 继承具有验证功能的基本 flask 形式

python - Flask - WTForm - 将表单保存到数据库

html - 如何从输入字段中删除 'autocomplete disabled'

WTForms 美元值自定义字段

python - flask/flask-admin 中的 Select2 字段实现

python - WTForm "OR"条件验证器? (电子邮件或电话)

python - 使用Flask和Flask-WTF中的路径和可选参数重定向到新页面不起作用