WTForms - 如何预先填充textarea字段?
嗨我一直试图在模板中使用类似 的textarea字段。WTForms - 如何预先填充textarea字段?
{{form.content(value="please type content")}}
这工作时,该字段为文本框主要是因为HTML 接受<input type="text">
值,但同样不为textarea的工作... 是否有人可以帮助我?
对于textarea
小部件,您可以在字段构造函数中使用default
参数设置默认内容。
class YourForm(Form):
your_text_area = TextAreaField("TextArea", default="please add content")
然后,当你呈现:
{{form.content()}}
WTForms将呈现的默认文本。我一直无法找到在呈现时为文本区域指定默认文本的方法。
谢谢肖恩!但我需要在模板中做到这一点。它就像是一个编辑博客链接。当你点击任何博客的编辑按钮时,它应该在文本框中显示一个带有标题的表单(这是使用value参数完成的)以及博客在textarea字段中的内容。 – Rasmus 2011-02-26 01:15:06
嗨,窗体的定义,查看功能和html的窗体可以在这里查看: - http://pastebin.com/QC4MC84B – Rasmus 2011-02-26 01:37:16
'' – mgoldwasser 2014-04-15 18:00:30
在Textarea中,如果使用jquery,则需要使用innerHTML或html()。
在你的背景应该是:
form.content.innerHTML = "please type content";
//using jquery
$('#element').html("please type content");
希望它能帮助。
WTForms是一个用于渲染表单HTML的服务器端Python库 - 不幸的是,jQuery在这种情况下不会有所帮助。 – 2011-02-25 21:02:51
谢谢你试图帮忙! – Rasmus 2011-02-26 01:16:41
可以呈现之前做到这一点,是这样的:
form.content.data = 'please type content'
我是新来WTForms虽然。
这就是我想要的 – diogovk 2016-02-02 15:31:30
爱丽丝似乎有支持内置到窗体小部件来做你在做什么,但你是对的,它现在不工作。
肖恩和希尔基斯在体面工作后做了工作。这是你可以尝试
else:
form.title.data=blog.title
form.blogdata.data=blog.blogdata
return render_template('editblog.html',form=form)
最近我有同样的问题形式(蔡素玉*),我解决了这个问题是这样的:
{% 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>'
这个线程是有点老了,但如果你需要预先填充与动态内容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。
您还可以通过它传递到您的WTforms类实例化在render_template(在这个例子中,我使用了Flask框架)预填充textarea的领域:
@admin.route('/edit/<id>', methods=['GET', 'POST'])
def edit(id):
if request.method == 'POST':
form = ProspectForm(request.form)
prospect = Prospect.objects(id=id).first()
return render_template('admin/edit.html', prospect=prospect, prospect_form=ProspectForm(comments = prospect.comments))
所以,评论=前景。评论说:“里面设置了一个名为‘意见’包含在prospect.comments数据TextAreaField字段中的文本”
与TextArea
场
class MyForm(Form):
name = fields.StringField('Name', validators=[Required()])
description = fields.TextAreaField('Description')
撕心裂肺模板之前设置textarea的内容定义表单
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>
Alice,在这种情况下什么是“form”?它是一个“WTForms.Form”对象还是其他的东西? – 2011-02-25 15:56:53
这是一个WTForms.Form对象肖恩! – Rasmus 2011-02-25 17:13:44