瓶,MongoEngine,WTForms - 在表格渲染错误
问题描述:
我有以下型号:瓶,MongoEngine,WTForms - 在表格渲染错误
class Post(Document):
body = db.StringField(required=True)
author = db.StringField(verbose_name="Author", max_length=255, required=True)
created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
comments = db.ListField(db.EmbeddedDocumentField('Comment'))
和follwing观点:
from flask.ext.mongoengine.wtf import model_form
@app.route('/')
def home():
form = model_form(Post, exclude=('created_at', 'comments'))
return render_template('home.html', form=form)
我不知道如何使这种形式的模板。我曾尝试几件事情:
{% for field in form %}
{{ field }}
{% endfor %}
这提供了以下错误:
TypeError: 'FormMeta' object is not iterable
我也试过这样:
{{ form.body() }}
随着不同的错误:
AttributeError: 'UnboundField' object has no attribute '__call__'
和{{form.body}}呈现这样的
<UnboundField(TextAreaField,(), {'default': None, 'validators': [<wtforms.validators.Required object at 0x7f63804d0fd0>], 'description': '', 'filters': [], 'label': None})>
答
您需要启动形式:
from flask.ext.mongoengine.wtf import model_form
@app.route('/')
def home():
form = model_form(Post, exclude=('created_at', 'comments'))(request.form)
return render_template('home.html', form=form)
使用同一个堆栈的例子项目可以发现:https://github.com/rozza/flask-tumblelog
答
表单不可迭代。它在错误中提到。
我没有使用model_form,但我认为{{ form.field_name }}
应该工作。
希望它有帮助。
+0
根据文档(http://wtforms.simplecodes.com/docs/1.0.4/forms .html)和我见过的所有例子都是可以忍受的。 {{form.body}}像这样呈现“
不'{{场()}}'抛出一个错误?此外,在此声明之前,此代码的其他版本的wtf/flask/mongoengine – Ross
失败{%for form%} {%endfor%}做同样的事情 – un1t
Flask == 0.10.1 pymongo == 2.6 mongoengine == 0.8.4 WTForms == 1.0.4 Flask-WTF == 0.9.1 flask-mongoengine == 0.7.0 – un1t