WTForms - 如何预填充文本区域字段?

27 投票
9 回答
29472 浏览
提问于 2025-04-16 12:31

你好,我一直在尝试用一些东西预先填充一个文本区域的内容,就像在模板中这样。

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

这个方法在文本框中有效,因为HTML允许给<input type="text">设置值,但在文本区域中就不行了……有人能帮我解决这个问题吗?

9 个回答

20

我最近也遇到了同样的问题,我是这样解决的:

{% 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>'
38

你可以在渲染之前这样做,类似于:

form.content.data = 'please type content'

不过我对WTForms还很陌生。

21

对于 textarea 这种输入框,你可以在创建字段的时候,用 default 这个参数来设置默认内容。

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

然后在你显示这个输入框的时候:

{{form.content()}}

WTForms 会显示你设置的默认文本。不过,我还没有找到在显示的时候指定文本框默认内容的方法。

撰写回答