gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:25:10 51 4
gpt4 key购买 nike

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

自定义表单字段:

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/

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