7

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':'現在の作業を保存'})

4

2 に答える 2

6

簡単です。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 ))
于 2013-01-21T11:24:21.023 に答える