WTForms не будет отображать поля - PullRequest
1 голос
/ 11 марта 2011

У меня проблемы с отображением полей формы с помощью WTForms.Я использую его с фреймворком webapp и шаблонами Django в GAE.

Я сделал простой проект в качестве теста, и он работал нормально.Вот некоторый код из более крупного проекта, в котором есть проблема:

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>
...

Проблема в том, что вместо предоставления HTML-представления поля form.name, form.email и т. Д.... в шаблоне есть такой вывод: <form.TextField instance at 0xac261ec> или <form.TextAreaField instance at 0x966e76c> и т. д. ... Я сделал то же самое в упомянутом мной тестовом проекте, и, похоже, он работает нормально.Что здесь может пойти не так?

1 Ответ

1 голос
/ 11 марта 2011

Я понял это. Оказывается, у меня был другой модуль, определяющий класс Form, TextField и TextAreaField, который использовался вместо классов WTForms.

...