首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在wtForms中创建自定义域

问在wtForms中创建自定义域
EN

Stack Overflow用户
提问于 2013-05-29 02:56:12
回答 1查看 6.8K关注 0票数 7

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

自定义表单域:

代码语言:javascript
复制
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 = []

实际表单调用自定义表单域

代码语言:javascript
复制
class PostForm(Form):

    status = CustomField()

每当我向PostForm发布数据时,它都会调用自定义字段,但不会将任何valuelist传递给process_formatdata。自定义字段始终返回一个空列表。

我是不是漏掉了什么。

EN

回答 1

Stack Overflow用户

发布于 2013-06-13 23:30:16

你的代码适用于我,这是一个有效的例子--

example.py

代码语言:javascript
复制
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)

templates/test.html

代码语言:javascript
复制
<form action="." method="post">
    {{ form.hidden_tag() }}
    {{ form.status }}
    {{ form.submit }}
</form>
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16799388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档