Flask-WTF和字段名称

时间:2013-10-25 08:26:37

标签: flask flask-wtforms

我想更改name SubmitField的归属(默认为“提交”)。我尝试了什么:

from flask.ext.wtf import Form, SubmitField

class BaseForm(Form):
    submit = SubmitField('Create', id='submit_button', name='submit_button')  #1
    submit = SubmitField('Create', id='submit_button', _name='submit_button')  #2

    def __init__(self, edit=None, *args, **kwargs):
        self.submit.kwargs['name'] = 'submit_button'   #5
        self.submit.kwargs['_name'] = 'submit_button'   #6

所有这些都因不同的错误而失败。如果我删除name_name参数,则所有工作正常。我发现name传递了flask.ext.wtf.Form属性,但我无法理解如何修复它。

注意:我使用的不是对我的表单的简单导入:它是在运行时导入的,在view的方法内,而不是在文件的顶部。由于技术问题,我不能也不会改变它。即如果我在IDLE中复制粘贴我的代码就可以了。但是,如果我在MethodView的port方法中导入此代码,则会失败。

2 个答案:

答案 0 :(得分:2)

您是否考虑过使用自定义构造函数扩展SubmitField本身。查看示例here

基本上你会做类似的事情:

class CustomSubmitField(SubmitField):
    def __init__(self, label='', validators=None,_name='',**kwargs):
        super(SubmitField, self).__init__(label, validators, **kwargs)
        custom_name = "whatever"
        self._name = custom_name

答案 1 :(得分:2)

更改名称的最简单方法是更改​​字段的名称:

class BaseForm(Form):
    # This one's name will be submit_button
    submit_button = SubmitField('Create')
    # This one's name will be another_button
    another_button = SubmitField('Do Stuff')