【问题标题】:Got multiple values for keyword argument 'label'获得关键字参数“标签”的多个值
【发布时间】:2019-07-03 16:18:04
【问题描述】:

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

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

【问题讨论】:

    标签: python flask label textarea flask-wtforms


    【解决方案1】:

    在表单中动态填充值的正确方法是在路由中,而不是在表单的 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)
    

    【讨论】:

      猜你喜欢
      • 2017-12-26
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 2016-10-21
      • 2014-03-10
      • 2016-11-05
      • 2015-12-30
      相关资源
      最近更新 更多