在Google App Engine上将WTForms与webapp和Django模板结合使用

1 投票
1 回答
1342 浏览
提问于 2025-04-16 07:13

我在尝试把WTForms和webapp结合使用,但一直没成功。

我想用文档里提到的form_field这个模板标签,像这样:

{% form_field form.username class="big_text" onclick="do_something()" %}

我在我的应用里安装了WTForms,但它的Django模板标签对我来说没法用。有没有人能告诉我怎么安装这个?

如果我还是搞不定这个,我可能会放弃,改用Jinja2模板。我们之所以一直用Django,是为了尽量减少依赖项。


这是我到目前为止尝试过的:

我在本地安装了Django 1.1,并按照文档的说明启用了它。

我试着在settings.py里加上INSTALLED_APPS = ['wtforms.ext.django'],但没有效果。

我还尝试手动注册wtforms的模板标签:

register = webapp.template.create_template_register()

from wtforms.ext.django.templatetags import wtforms

register.tag('form_field', wtforms.do_form_field)

结果我遇到了一个错误:InvalidTemplateLibrary: Could not load template library from template_helpers, No module named django.templatetags

所以我试着把模板标签复制到我自己的代码里,结果又出现了一个错误TemplateSyntaxError: Could not parse the remainder: ' form.foobar' from 'form_field form.foobar

不过,我觉得模板标签的注册没有成功,因为即使没有那段代码,错误也是一样的。


更新:我把这个问题留着,看看有没有人能在网上回答,但我已经换成Jinja2了,现在一切都正常。对我来说,Django模板的webapp已经没戏了。;-)

1 个回答

5

我推荐使用 jinja2 模板,而不是 django 模板:http://jinja.pocoo.org/。它是基于 django 模板的,但功能更强大,使用起来也更简单。我觉得如果不使用 django 的整个框架,单独用 django 模板并不是个好主意。此外,如果你想要一个更有结构的框架,Flask 是一个非常不错的简约框架:http://www.pocoo.org/projects/flask/#flask。我对这两个库赞不绝口。我在 Django 上工作了很长时间,发现这两个组合让人耳目一新,简洁明了。

附言:这个迁移过程应该非常简单。我刚了解 Flask 时,花了我10分钟就把一个网站迁移过来了。

撰写回答