Google App Engine で WTForm model_form を使用して表示するフォームを取得します。/admin/newpost にアクセスすると、フィールドが表示されることを期待しています
私のモデル
class BlogPost(db.Model):
#The URL path to the blog post. Posts have a path if they are published.
path = db.StringProperty()
title = db.StringProperty(required=True, indexed=False)
body = db.TextProperty(required=True)
published = db.DateTimeProperty(auto_now_add=True)
updated = db.DateTimeProperty(auto_now=True)
私のPostHandler
class PostHandler(webapp2.RequestHandler):
@webapp2.cached_property
def jinja2(self):
return jinja2.get_jinja2(app=self.app)
def render_to_response(
self,
template_name,
template_vals=None,
theme=None
):
template_name = "admin/%s" % template_name
self.response.out.write(render_template(
template_name, template_vals, theme))
def render_form(self, form):
self.render_to_response("edit.html", {'form': form()})
def get(self):
form = model_form(BlogPost)
self.render_form(form)
機能しない Edit.html テンプレート
{% extends "base.html" %}
{% block title %}New Post{% endblock %}
{% block body %}
<form method="post" action="">
<table>
{{form}}
</table>
<input type="submit" />
</form>
{% endblock %}
このテンプレートを使用すると、フォーム ボタンのある html が表示されます。問題は、モデル フィールドが表示されないことです。フィールドを表示するには、これを行う必要があります...
機能する Edit.html テンプレート
{% extends "base.html" %}
{% block title %}Testing New Post Template{% endblock %}
{% block body %}
<form method="post" action="">
<table>
<div>{{ form.title.label }}: {{ form.title(class="css_class") }}</div>
{% if form.title.errors %}
<ul class="errors">{% for error in form.name.errors %}<li>{{ error }}</li>{% endfor %}</ul>
{% endif %}
<div>{{ form.body.label }}: {{ form.body() }}</div>
{% if form.body.errors %}
<ul class="errors">{% for error in form.body.errors %}<li>{{ error }}</li>{% endfor %}</ul>
{% endif %}
</table>
<input type="submit" />
</form>
{% endblock %}
要するに、フォームにモデル フィールドを表示する最初のバージョンを取得するにはどうすればよいですか?