我正在将 WTforms 与 Jinja2 一起使用,并希望根据我是否正在创建编辑现有表单对象的新实例来更改我的模板页面标题。
这是我在模板中写的:
{% block title %}{% if form.obj %}Edit{% else %}New{% endif %} Post{% endblock %}
我期望看到的:
如果表格已填写,我希望在页面标题中看到“编辑帖子”。
如果表单为空,我希望在页面标题中看到“新帖子”。
我得到的是:在这两种情况下都是“新帖子”。
这是传递表单值的我的 PostHandler。
def with_post(fun):
def decorate(self, post_id=None):
post = None
if post_id:
post = models.BlogPost.get_by_id(int(post_id))
if not post:
self.error(404)
return
fun(self, post)
return decorate
class PostHandler(BaseHandler):
def render_form(self, form):
self.render_to_response("edit.html", {'form': form})
@with_post
def get(self, post):
self.render_form(MyForm(obj=post))
@with_post
def post(self, post):
form = MyForm(formdata=self.request.POST, obj=post)
if post and form.validate():
form.populate_obj(post)
post.put()
post.publish()
self.render_to_response("published.html", {'post': post})
elif self.request.POST and form.validate():
post = models.BlogPost()
post.title = form.title.data
post.body = form.body.data
post.tags = form.tags.data
post.publish()
self.render_to_response("published.html", {'post': post})
else:
self.render_to_response('edit.html', {'form':form})
简而言之,我要做的就是测试表格是否填写,并相应地更改我的页面标题“新帖子”或“编辑帖子”。