【发布时间】:2015-05-14 18:57:18
【问题描述】:
我刚刚开始掌握 GAE 上的 jinja2 模板。我正在尝试做的是在渲染的模板中显示状态消息,而无需再次渲染整个模板。
我有一个处理发送邮件的 webapp2 请求处理程序。如果出现错误异常,我想在页面上显示一条消息。如果邮件发送成功同理。
我渲染模板并将 msg 作为模板值传递。我可以看到这不是做事的方式,因为整个模板再次呈现。我想要做的就是简单地传递味精。
class ContactoPage(webapp2.RequestHandler):
global template
template = jinja_environment.get_template('contacto.html')
def get(self):
self.response.out.write(template.render({'mail_status':''}))
def post(self):
userMail=self.request.get("emailFrom")
if not mail.is_email_valid(userMail):
self.response.out.write(template.render({'mail_status':'wrong mail address'}))
return
subject="Test Mail"
userMessage=self.request.get("emailBody")
message=mail.EmailMessage(sender="dennisargeomatica@gmail.com",subject="Test")
message.to=userMail
message.body=("Thank you! \n"
"Your mail: %s \n"
"Subject: %s \n"
"Message: %s \n"
%(userMail,subject,userMessage))
message.send()
self.response.out.write(template.render({'mail_status':'rudy, a msg to you'}))
谢谢, 丹尼斯
【问题讨论】:
-
你正在做的很好。如果没有在客户端运行一些javascript,管理数据的POST,然后只更新页面的该组件,您就无法像您建议的那样传递消息。因此你必须渲染它来改变它。 en.wikipedia.org/wiki/Ajax_%28programming%29
-
感谢您告诉我。我从一个现有的应用程序中移植了这段代码,该应用程序是我使用更新面板在 asp.net 中编写的。我认为 jinja2 模板可以提供类似的东西。我会考虑在客户端做一些事情,因为我不希望整个页面重新加载。
-
np。这可能会有所帮助:django-rest-framework.org
-
我之前看过这个但决定但是在 Eclipse IDE 上设置 django 以与 Google App Engine 插件一起使用的麻烦是不值得的。对于大多数简单的应用程序来说,Django 可能有点矫枉过正,我真的很喜欢 jinja2 框架的速度。我通过对邮件服务的 AJAX 调用解决了这个问题。
标签: google-app-engine post webapp2 requesthandler