gpt4 book ai didi

google-app-engine - 如何在 Google App Engine 上的页面之间共享数据

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:45 25 4
gpt4 key购买 nike

我是一名新手程序员,正在开发我的第一个网络应用程序(使用 App Engine),请原谅我的无知。

我一直在修改Google给出的Hello World程序,试图让它做我想做的事。

在他们的演示 (http://code.google.com/appengine/docs/python/gettingstarted/templates.html) 中,他们有 2 个创建 2 个页面的类 - 一个是 index.html,另一个处理表单,通过将表单数据放入数据库,然后重定向回主页,从数据库加载信息。

我想在主页上有一个表单,用户可以在其中提交一个字符串,对其执行各种操作,并将输出显示在主页上。

问题是用户提交的表单中的数据进入表单处理程序页面,我不知道如何将输出返回到主页。

最佳答案

在不同提交之间持久化数据的自然方法是使用 Datastore .
如果作为练习,您不想使用数据存储,则必须将数据传递给 View 并在每个 Web 请求之间使用一些隐藏 字段将其读回。

让我们看一个简单的快速但简单示例:一个对整数进行逐一求和的网络应用。

应用程序.py

import os
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app

class Sum(webapp.RequestHandler):
def get(self):
path = os.path.join(os.path.dirname(__file__), 'index.html')
template_values = {"total":0}
self.response.out.write(template.render(path, template_values))

def post(self):
value = self.request.get("value")
total = self.request.get("total")
total = int(total) + int(value)
path = os.path.join(os.path.dirname(__file__), 'index.html')
template_values = {"value":value,
"total":total
}
self.response.out.write(template.render(path, template_values))

application = webapp.WSGIApplication(
[('/', Sum),
('/sum', Sum)],
debug=True)

def main():
run_wsgi_app(application)

if __name__ == "__main__":
main()

要将数据传递给 index.html View ,使用 template.render 函数将一个字典变量传递给 View :

template.render(path_to_the_view, template_values)

index.html

<html>
<body>
<form action="/sum" method="post">
<p>
<label for="value">Value to sum:
<input type="text" name="value"><br>
<input type="submit" value="Submit">
<input type="hidden" name="total" value="{{ total }}">
</p>
</form>
Last value submitted: {{ value }}| Total:{{ total }}
</body>
</html>

index.html View 使用字典键 valuetotal 来显示结果并使用一个隐藏字段。

结果如下:

enter image description here

关于google-app-engine - 如何在 Google App Engine 上的页面之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5414936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com