WTForms 不会呈现字段

Posted

技术标签:

【中文标题】WTForms 不会呈现字段【英文标题】:WTForms won't render fields 【发布时间】:2011-07-13 05:38:07 【问题描述】:

我在使用 WTForms 呈现表单字段时遇到问题。我将它与 GAE 中的 webapp 框架和 Django 模板一起使用。

我做了一个简单的项目作为测试,它运行良好。这是一个更大项目的一些代码,有问题的那个:

class ShowBoardForm(Form):
    name = TextField('Name', [validators.Length(max=20)])
    email = TextField('Email', [validators.Length(max=20)])
    subject = TextField('Subject', [validators.Length(max=20)])
    textfield = TextAreaField('Comment', [validators.Length(max=2000)])
    filefield = FileField('Image')

这是请求处理程序中使用的表单类的 sn-p(我省略了一些不相关的代码):

template_vars = 
    'form':ShowBoardForm()


path = os.path.join(os.path.dirname(__file__),'templates','showboard.html')
self.response.out.write(template.render(path,template_vars))

这是我在模板中使用form 的方式:

...
<form method='post' action=' url /post' enctype='multipart/form-data'>
 form.name.label  form.name <br/>
 form.email.label  form.email <br/>
 form.subject.label  form.subject <br/>
 form.textfield.label  form.textfield <br/>
 form.filefield.label  form.filefield <br/>
<input type='submit' value='ok'/>
</form>
...

问题是模板中的form.nameform.email等没有给我字段的HTML表示形式,而是有这种输出:&lt;form.TextField instance at 0xac261ec&gt;&lt;form.TextAreaField instance at 0x966e76c&gt;等。 .我在我提到的测试项目中做了同样的事情,它似乎工作得很好。这里出了什么问题?

【问题讨论】:

【参考方案1】:

我想通了。原来我有另一个模块定义了 FormTextFieldTextAreaField 类,它被用来代替 WTForms 类。

【讨论】:

以上是关于WTForms 不会呈现字段的主要内容,如果未能解决你的问题,请参考以下文章

使用从前一个字段中选择的值填充 WTForms 选择字段

如何相互验证 wtforms 字段?

不是动态选择字段 WTFORMS 的有效选择

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

Wtforms:如何使用具有动态选择值的选择字段生成空白值

Flask之WTForms验证