25

こんにちは、テンプレートでこのようなものを使用してテキストエリアフィールドを作成しようとしています。

{{form.content(value="please type content")}}

これは、フィールドがテキストフィールドの場合に機能します。これは、主にhtmlが値を受け入れるためです<input type="text"> が、テキストエリアでは同じことが機能しないためです...誰かがこれで私を助けてくれますか?

4

9 に答える 9

37

レンダリングする前に、次のように行うことができます。

form.content.data = 'please type content'

ただし、WTFormsは初めてです。

于 2011-03-03T00:30:38.303 に答える
21

textareaウィジェットの場合、フィールド コンストラクターの引数でデフォルトのコンテンツを設定しますdefault

class YourForm(Form):
    your_text_area = TextAreaField("TextArea", default="please add content")

次に、レンダリングすると:

{{form.content()}}

WTForms はデフォルトのテキストをレンダリングします。レンダリング時にテキスト領域のデフォルト テキストを指定する方法を見つけることができませんでした。

于 2011-02-25T21:02:00.547 に答える
18

私は最近同じ問題を抱えていましたが、次のように解決しました:

{% set f = form.content.process_data("please type content") %}
{{ form.content() }}

テストのために、次のスニペットを実行してみてください。

>>> import wtforms
>>> import jinja2
>>> from wtforms.fields import TextAreaField
>>> class MyForm(wtforms.Form):
...     content = TextAreaField("Text Area")
... 
>>> t = jinja2.Template("""{% set f = form.content.process_data("please type content") %}
...                     {{ form.content() }}""")
>>> 
>>> t.render(form=MyForm())
u'\n                    <textarea id="content" name="content">please type content</textarea>'
于 2013-02-02T05:33:57.723 に答える
6

アリスは、あなたが求めていることを行うためにフォームウィジェットに組み込まれたサポートがあるようですが、現時点では機能しません.

Sean と hilquias は、機能するまともな回避策を投稿しています。これはあなたが試すかもしれないフォームです(yuk yuk)

 else:
        form.title.data=blog.title
        form.blogdata.data=blog.blogdata
    return render_template('editblog.html',form=form)
于 2011-04-12T13:16:19.490 に答える
4

TextAreaフィールドでフォームを定義する

class MyForm(Form):
    name = fields.StringField('Name', validators=[Required()])
    description = fields.TextAreaField('Description')

テンプレートをレンダリングする前にテキストエリアのコンテンツを設定します

form = MyForm()
form.description.data='this is my textarea content!' # This is the stuff...
return render_template('form.html', form=form, name=name)

テンプレートのフィールドをレンダリングする

<form ...>
    {{ field(form.name, value=name) }}
    {{ field(form.description, rows=2) }}
    <button ...>Save</button>
</form>
于 2014-07-28T22:18:31.183 に答える
4

このスレッドは少し古いですが、textarea フィールドに動的コンテンツを事前入力する必要がある場合は、次のように setattr とデフォルトパラメータを使用できます。

if post.content:

    form = EditPostForm
    setattr(form, "content", TextAreaField(gettext('Post content'), validators=[Length(max=5000)], default=post.content))
    form = EditPostForm()

else:
    form = EditPostForm()

TextAreaField をインポートすることを忘れないでください。

于 2014-05-13T08:58:53.263 に答える
-7

テキストエリアでは、jquery を使用する場合は innerHTML または html() を使用する必要があります。

あなたの文脈では:

form.content.innerHTML = "please type content";

//using jquery
$('#element').html("please type content");

それが役に立てば幸い。

于 2011-02-25T12:58:58.263 に答える