我正在尝试为提交设置自定义标签,不确定为什么会出现此错误:
TypeError: __init__() got multiple values for keyword argument 'label'
class Reply(Form):
body = TextAreaField([Length(50, 1000)])
submit = SubmitField()
def __init__(self, user, *args, **kwargs):
self.body.kwargs['label'] = lazy_gettext(u'Public comment of %(value)s', value=user)
Form.__init__(self, *args, **kwargs)
如果我更改为以下代码,则一切正常:
body = TextAreaField()
似乎与[Length(50, 1000)]
和自定义label
有一些冲突。
答案 0 :(得分:0)
在表单中动态填充值的正确方法是在路由中,而不是在表单的init方法中。
def reply():
form = Reply(request.form)
if form.validate_on_submit():
# Use form contents
return redirect(url_for('reply'))
user = get_user()
form.body.label.text = f'Public comment of {user}'
return render_template('reply.html', form=form)