WTForms不会渲染字段

时间:2011-03-11 04:07:53

标签: google-app-engine web-applications django-templates wtforms

我无法使用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.nameform.email等等,而不是向我提供字段的HTML表示,而是具有此类输出:<form.TextField instance at 0xac261ec>或{ {1}}等等......我在我提到的测试项目中做了同样的事情,似乎工作得很好。这里可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

我明白了。事实证明我有另一个模块定义了FormTextFieldTextAreaField类,它们被用来代替WTForms类。