为关键字参数“ label”获得了多个值

时间:2019-07-03 16:18:04

标签: python flask label textarea flask-wtforms

我正在尝试为提交设置自定义标签,不确定为什么会出现此错误:

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有一些冲突。

1 个答案:

答案 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)