无法在谷歌应用引擎python中使用铁形式获得响应

时间:2015-10-28 18:29:50

标签: python google-app-engine polymer-1.0

我已经使用iron-form实现了一个表单,我可以在服务器中处理它,但后来我无法弄清楚如何获得响应,我无法重定向到另一个页面或刷新。如果我删除'is =“铁形式”,那么它可以正常工作。我正在使用聚合物1.0,谷歌应用程序引擎和jinja2进行模板化。

HTML:

<div class="c-form">
    <h1>"Contact us"</h1>
    <p> {{ sucess-message }} </p>
    <form is="iron-form" id="contact-form" method="post" action="/formhandler">
        <paper-input label="Name" name="name" required></paper-input>
        <paper-textarea label="Message" name="msj" required></paper-textarea>
        <paper-button raised class="colorful" onclick="submitForm()">Send</paper-button>
    </form>
</div>

<script>
    function submitForm() {
        document.getElementById('contact-form').submit();
    }
</script>

main.py:

class FormHandler(MainHandler):
    def post(self):
        self.name = self.request.get('name')
        self.msj = self.request.get('msj')
        mesj = MensajesDB.new_msj(self.name, self.msj)
        mesj.put()
        self.respose.out.write("SUCCESS")   //Here I would like to render the template, 
                                            but I can't get it to render or redirect to 
                                            another page...

class MainPage(MainHandler):
def get(self):
    self.render("home.html", route="home", title="Home")

app = webapp2.WSGIApplication([
('/', MainPage),
('/formhandler', FormHandler),
], debug=True)

1 个答案:

答案 0 :(得分:0)

看起来您可能无法调试故障发生的位置。我建议您熟悉Chrome DevTools - 特别是网络选项卡,它允许您监控从JS到服务器的请求,然后是服务器响应。

在服务器端应用程序中,您可以使用FormHandler.post变量as documented hereself.request.POST方法中访问整个请求正文。

如果要在保存到数据存储区后重定向,则需要删除self.response.out.write()行并改用self.redirect()。请注意,您无法在单个响应中发送响应正文/字符串重定向。