如何在GAE中将多个变量从一个处理程序传递到另一个处理程序?

时间:2015-05-14 10:55:53

标签: python-2.7 google-app-engine jinja2 webapp2

我想将用户重定向到一个确认页面,如果他们输入有效主题,则会显示主题和内容(如果有的话),但是如果主题为空白或者结束,则保持在同一页面上并显示错误三百个字符。

这是我的后端代码:

def post(self):
    subject = self.request.get('subject')
    content = self.request.get('content')
    a, b = self.validSubject(subject)
    if a == True and b == True:
        self.redirect('/confirm')
    else:
        if a == False:
            error = "Title cannot be blank!"
        if b == False:
            error = "Title cannot be over 300 characters."
        self.render("newpost.html", subject = subject, content = content, error = error)

以下是newpost.html模板的代码:

    <h2>New Question</h2>
    <hr>
    <form method="post">
  <label>
    <div>Title</div>
    <input type="text" id="subject" name="subject">
  </label>

  <label>
    <div>
    <textarea name="content" id="postcontent"></textarea>
    </div>
  </label>

  <b><div class="error">{{error}}</div></b>

    <input type="submit">
    </form>

我尝试在POST表单中添加action="/confirm",但即使出现错误,也会重定向到/确认。我查看了webapp2文档,但无法找到有关如何在重定向上传递变量的任何内容。 (https://webapp-improved.appspot.com/api/webapp2.html#webapp2.redirect

我使用的是webapp2和jinja2。感谢您提前提供的任何帮助,我一直在看这段代码:(

1 个答案:

答案 0 :(得分:1)

您尝试编写的模式在http中无效,无论您使用的是哪种后端平台或语言。您的HTML正在发布到服务器,GAE代码正在处理帖子。在交互的那一点上,浏览器已经提交并正在等待来自服务器的响应。你不能在那时停止提交,因为它已经发生了。

在将表单提交到服务器之前,您应该考虑在Javascript中验证输入。这样,如果您的数据无效,您可以首先取消提交表单。

看一下以下问题,看一个例子:

JavaScript code to stop form submission