Я использую 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})
Короче говоря, все, что я пытаюсь сделать, это проверить, заполнена ли форма, и соответственно изменить заголовок моей страницы «Новое сообщение» или «Редактировать сообщение».