我无法使用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')
这是在请求处理程序中使用的表单类的片段(我省略了一些不相关的代码):
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.name
,form.email
等等,而不是向我提供字段的HTML表示,而是具有此类输出:<form.TextField instance at 0xac261ec>
或{ {1}}等等......我在我提到的测试项目中做了同样的事情,似乎工作得很好。这里可能出现什么问题?
答案 0 :(得分:1)
我明白了。事实证明我有另一个模块定义了Form
,TextField
和TextAreaField
类,它们被用来代替WTForms类。