WTFormsを使用して、指定された数の列と行でtextareafieldをレンダリングするには、列と行の数を設定するにはどうすればよいですか?私はこの質問の指示に従いましたが、うまくいきませんでした:
wtformsを使用して<textarea>タグの行と列を指定する方法
ウィジェットを追加しようとしましたが、機能しませんでした。
class AForm(Form):
name = TextField('Name', [validators.Length(min=4)])
title = TextField('Title', [validators.Length(min=4)])
text = TextAreaField('Text', widget=TextArea(row=70, cols=11))
phonenumber = TextField('Phone number')
phonenumberhide = BooleanField('Display phone number on site')
price = TextField('Price')
password = PasswordField('Password')
email = TextField('Email', [
validators.Length(min=6, message=_('Little short for an email address?')),
validators.Email(message=_('That\'s not a valid email address.'))
])
TypeError:object。new()はパラメータを取りません
非常に古い質問ですが、WTF-Formのドキュメントが明確でないため、実際の例を投稿しています。 OP、まだこれに取り組んでいないことを願っています。 :-)
フォーム
from flask_wtf import Form
from wtforms.fields import StringField
from wtforms.widgets import TextArea
class PostForm(Form):
title = StringField(u'title', validators=[DataRequired()])
body = StringField(u'Text', widget=TextArea())
テンプレート
{% extends "base.html" %}
{% block title %}Create Post{% endblock %}
{% block content %}
<H3>Create/Edit Post</H3>
<form action="" method=post>
{{form.hidden_tag()}}
<dl>
<dt>Title:
<dd>{{ form.title }}
<dt>Post:
<dd>{{ form.body(cols="35", rows="20") }}}
</dl>
<p>
<input type=submit value="Publish">
</form>
{% endblock %}
この問題のテンプレートを更新する必要はありません。 TextAreaField
の定義で行と列を設定できます。サンプルは次のとおりです:\
class AForm(Form):
text = TextAreaField('Text', render_kw={"rows": 70, "cols": 11})
にとって render_kw
提供されている場合、デフォルトのキーワードを提供する辞書がレンダリング時にウィジェットに提供されます。
TextArea
フィールドは、ウィジェットなしで実装することもできます。
forms.py
from wtforms import Form, TextField, TextAreaField
class ContactForm(Form):
name = TextField('Name')
email = TextField('Email Address')
body = TextAreaField('Message Body')
template.html
...
<form method="POST" action="">
{{ form.csrf_token }}
{{ form.name.label }} {{ form.name(size=30) }} <br/>
{{ form.email.label }} {{ form.email(size=30) }} <br/>
{{ form.body.label }} {{ form.body(cols="35", rows="20") }} <br/>
<input type="submit" value="Submit"/>
</form>
...
ここで、render_kwの使用を提案する上記のソリューションが、テキスト領域の高さISが設定されていないという条件の下で実際に機能することを追加したいと思います。
したがって、フィールドがある場合:
temp = TextAreaField('temp', render_kw={'rows':20})
そしてあなたのHTMLファイルにあなたは書く:
{{ form.temp(class_='someclass' )}}
その場合、someclassのCSS定義では、高さを設定しないでください。これは行の設定と競合し、明らかに高さが行よりも優先されるためです。