python - Flask-WTF 使用 input=submit 而不是 button type=submit

标签 python flask wtforms flask-wtforms

我想使用 Flask 的“SubmitField”

<button type="submit" title="Save this form"><span>Save</span></button>

代替:

<input type="submit" title="Save this form" />

我在模板中打印出来:

{{ field(class=css_class, title=field.description, **kwargs) }}

我猜想我必须以某种方式修改 SubmitInput(SubmitField 背后的小部件),但我不确定该怎么做,我是否必须以某种方式修改 __html__()?

编辑:

from flask.ext.wtf import Required, Length, EqualTo, Field, TextInput
from flask import Markup
class InlineButtonWidget(object):
    html = """
    <button type="submit" title="%s"><span>%s</span></button>
    """

    def __init__(self, input_type='submit'):
        self.input_type = input_type

    def __call__(self, field, **kwargs):
        kwargs.setdefault('id', field.id)
        kwargs.setdefault('type', self.input_type)
        if 'value' not in kwargs:
            kwargs['value'] = field._value()
        return HTMLString(self.html % (field.name, field.label ))


class InlineButton(Field):
  widget = InlineButtonWidget()
  def _value(self):
    if self.data:
        return u', '.join(self.data)
    else:
        return u''


class SignupForm(Form):
    name = TextField('Name', [Length(min=1, max=200)])
    submit = InlineButton('sign up')

我希望能够做到这一点:

submit = InlineButton({'name' : 'submit', 'title' : '今天报名领取奖品。', 'type' : 'submitfieldtype', 'textInsideSpan' : '保存当前工作' } )

最佳答案

很简单,您可以创建新的小部件,如 InlineButtonWidget(),但我认为最好从表单中删除提交并在模板中使用它

<button type="submit" title="Save this form"><span>Save</span></button>

当然你也可以使用它:

{% for name, label in buttons %}
    <button type="submit" title="{{name}}"><span>{{name}}</span></button>
{% endfor %}

示例小部件:

class InlineButtonWidget(object):
    html = """
    <button type="submit" title="%s"><span>%s</span></button>
    """

    def __init__(self, input_type='submit'):
        self.input_type = input_type

    def __call__(self, field, **kwargs):
        kwargs.setdefault('id', field.id)
        kwargs.setdefault('type', self.input_type)
        if 'value' not in kwargs:
            kwargs['value'] = field._value()
        return HTMLString(self.html % (field.name, field.lable ))

关于python - Flask-WTF 使用 input=submit 而不是 button type=submit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14428564/

相关文章:

python Spark avro

python - 合并列表列失败

python - matplotlib 将 x 轴与自动缩放的 y 轴链接起来

flask - 在Flask WSGI请求/响应包装器中记录响应主体

python - FastAPI 如何管理 WFT 表单?

python - flask wtforms填充下拉列表

python - 将 Okta OIDC 与 Dash 应用程序集成

python - docker-compose 不使用 Flask 设置环境变量

python-3.x - 在 flask 应用程序中设置 python dash 仪表板

python - WTForm : FieldList with SelectField, 如何渲染?