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

How do I pass multiple variables from one handler to another in GAE?

我想将用户重定向到确认页面,如果他们输入有效主题,该页面将同时显示主题和内容(如果有),但如果主题为空白,则留在同一页面并显示错误或超过三百个字符。

这是我的后端代码:

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>

我试过将 action="/confirm" 添加到 POST 表单,但即使出现错误也会重定向到 /confirm。我查看了 webapp2 文档,但找不到任何关于如何在重定向上传递变量的信息。 (https://webapp-improved.appspot.com/api/webapp2.html#webapp2.redirect)

我正在使用 webapp2 和 jinja2。提前感谢您的帮助,我已经研究这段代码很长一段时间了:(

无论您使用何种后端平台或语言,您尝试编写的模式在 http 中都不起作用。您的 HTML 正在 post 连接到服务器并且 GAE 代码正在处理 post。在交互的那一刻,浏览器已经提交并正在等待服务器的响应。你不能在那个时候停止提交,因为它已经发生了。

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

查看以下问题以查看示例:

JavaScript code to stop form submission