如何使用wtforms指定<textarea>标记的行和列

Kev*_*nle 17 python wtforms

构造一个wtforms的TextAreaField是这样的:

content = wtf.TextAreaField('Content', id="content-area", validators=[validators.Required()])
Run Code Online (Sandbox Code Playgroud)

如何指定与此textarea关联的行数和列数?

Ras*_*mus 17

您不应该在声明窗口小部件的位置执行此操作.你已经在模板中做到了.例如:

{{form.content(rows='50',cols='100')}}
Run Code Online (Sandbox Code Playgroud)

需要确保将行和列指定为字符串.


oke*_*let 6

简单得多;render_kw在创建字段时使用参数:

port = IntegerField(u"HTTP port", validators=[DataRequired(), NumberRange(1025, 65535)], render_kw={'class': 'form-control'})
mytextarea = TextAreaField(u"Content", render_kw={'class': 'form-control', 'rows': 5})
Run Code Online (Sandbox Code Playgroud)

然后渲染文件:

{{ field() }}
Run Code Online (Sandbox Code Playgroud)


小智 5

nettuts+有一个关于 Flask 的教程。基本上,它是这样工作的:

from flask.ext import wtf

class ContactForm(wtf.Form):
    content = wtf.TextAreaField("Content", [validators.Required()])
Run Code Online (Sandbox Code Playgroud)

并在您的 html 中:

<form action="" method="post">
    {{ form.content }}
</form>
Run Code Online (Sandbox Code Playgroud)

您可以在 css 中指定布局,而不是在 html 中指定布局,例如:

form textarea#content {
     width: 100px;
     height: 100px;
     max-width: 100px;
}
Run Code Online (Sandbox Code Playgroud)


Sen*_*ran -1

我查看了代码,发现 Field 类定义了__new____init____new__需要一堆*args**kargs。因此,您只需传入rows=x cols=yTextAreadField 创建即可,它应该可以工作。我注意到 wtforms 正在为这种情况创建一个名为“UnboundField”的类,我不知道它的含义,因为这会导致问题(如果有的话)。但创建 TextAreaField 的下一步是相同的。(即控制权__init__像以前一样去调用。)