WTForms-Jak přednastavit pole textarea?

hlasů
15

Dobrý den jsem se snažil pepopulate si textareafield používat něco takového v šabloně.

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

Tato metoda funguje, pokud je pole TextField především proto, že html přijímá hodnotu <input type=text> , ale stejně nefunguje textarea ... Může mi někdo prosím, pomozte mi s tím?

Položena 25/02/2011 v 13:54
zdroj uživatelem
V jiných jazycích...                            


9 odpovědí

hlasů
-7

V textarea budete muset použít innerHTML nebo html (), pokud používáte jQuery.

v jeho kontextu by měla být:

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

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

Doufám, že to pomůže.

Odpovězeno 25/02/2011 v 13:58
zdroj uživatelem

hlasů
16

Pro textareawidgety, nastavit výchozí obsah s defaultargumentem ve svém oboru konstruktérů.

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

Pak při vykreslení:

{{form.content()}}

WTForms bude skýtat výchozí text. Nebyl jsem schopen najít způsob, jak určit výchozí text pro textové oblasti při renderování.

Odpovězeno 25/02/2011 v 22:02
zdroj uživatelem

hlasů
28

Můžete to udělat dříve, než vykreslování, něco jako:

form.content.data = 'please type content'

Jsem nový WTForms ačkoli.

Odpovězeno 03/03/2011 v 01:30
zdroj uživatelem

hlasů
5

Alice se zdá být podpora postaven do tvaru widgetu na to, co jste po, ale máte pravdu, to nefunguje v tuto chvíli.

Sean a hilquias přidání důstojné pracovní arounds, které fungují. To je forma (fuj fuj), můžete zkusit

 else:
        form.title.data=blog.title
        form.blogdata.data=blog.blogdata
    return render_template('editblog.html',form=form)
Odpovězeno 12/04/2011 v 14:16
zdroj uživatelem

hlasů
11

Nedávno jsem měl stejný problém, vyřešil jsem to takhle:

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

Pro test, můžete zkusit spustit následný úryvek:

>>> 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>'
Odpovězeno 02/02/2013 v 06:33
zdroj uživatelem

hlasů
0

Toto vlákno je trochu starý, ale pokud potřebujete přednastavit pole textarea s dynamickým obsahem, můžete použít setattr a výchozí parametry jako tak:

if post.content:

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

else:
    form = EditPostForm()

Nezapomeňte dovážet TextAreaField.

Odpovězeno 13/05/2014 v 09:58
zdroj uživatelem

hlasů
2

Také můžete předvyplnit pole textarea průchodem do svého WTforms třídy instance v render_template (v tomto případě jsem pomocí Flask rámec):

@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))

Tak, komentáře = prospect.comments říká, že „nastavit text uvnitř TextAreaField pole s názvem‚komentuje‘k údajům obsaženým v prospect.comments“

Odpovězeno 28/05/2014 v 21:51
zdroj uživatelem

hlasů
0

Definovat formuláře s TextAreapoli

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

Nastavení obsahu textarea před drásající šablony

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

Vykreslit pole v šabloně

<form ...>
    {{ field(form.name, value=name) }}
    {{ field(form.description, rows=2) }}
    <button ...>Save</button>
</form>
Odpovězeno 28/07/2014 v 23:18
zdroj uživatelem

hlasů
1

Pro ty, kteří se snaží udělat dynamicky v džindža šablony, nastavení výchozí hodnoty před podáním není tento problém vyřešit.

Namísto použití standardu WTForms:

{{ form.content() }}

Můžete vytvořit tento prvek se syrovým HTML, jako je:

<textarea id="FormName-content" name="FormName-content">{{ dynamic values here }}</textarea>

... a bude i nadále pracovat s validací WTForms.

Doufám, že to někomu pomůže :)

Odpovězeno 02/11/2018 v 23:10
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more