将文本框中的字符串存储到Google App Engine数据存储区

时间:2011-05-26 03:58:51

标签: python google-app-engine google-cloud-datastore

是否可以在HTML中创建文本框,在其中键入字符串,单击“保存”按钮,将该信息存储到GAE数据存储模型中,并使文本保持显示在文本框中并保存在数据存储区中?< / p>

HTML位于一个单独的文件中,只是通过我的main.py文件使用

呈现
class MainPage(webapp.RequestHandler):
def get(self):

    template_values = {}
    path = os.path.join(os.path.dirname(__file__), 'index.html')
    self.response.out.write(template.render(path, template_values))

我为我的问题尝试的是:

class equipmentBox(db.Model):
    equipCode = db.StringProperty()

class equipmentBoxGet(webapp.RequestHandler):
    def post(self):

2 个答案:

答案 0 :(得分:3)

我认为这会有所帮助,我已经为您修改了默认的留言板应用程序。通常的做法是单独使用html文件并使用模板进行渲染。这里所有东西都嵌入到控制器本身中

import cgi

from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db

class EquipmentBox(db.Model):
      equipCode = db.StringProperty()


class MainPage(webapp.RequestHandler):
  def get(self):
    self.response.out.write('<html><body>')

    equips = db.GqlQuery("SELECT * FROM EquipmentBox")

    for equip in equips:

      self.response.out.write('<blockquote>%s</blockquote>' %
                              cgi.escape(equip.equipCode))

    # Write the submission form and the footer of the page
    self.response.out.write("""
          <form action="/post" method="post">
            <div><input type="text" name="equip_code" /></div>
            <div><input type="submit" value="post equipcode"></div>
          </form>
        </body>
      </html>""")

class EquipBox(webapp.RequestHandler):
  def post(self):
    equip = EquipmentBox()
    equip.equipCode = self.request.get('equip_code')
    equip.put()
    self.redirect('/')

application = webapp.WSGIApplication(
                                     [('/', MainPage),
                                      ('/post', EquipBox)],
                                     debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()

答案 1 :(得分:2)

构建此类界面的最佳方法是使用AJAX调用,用户在页面上“保存”数据而不更改页面。

虽然对AJAX如何工作的完整解释可能超出了答案的范围,但基本的想法是,您的“保存”按钮附加了一个Javascript onclick事件,该事件通过以下方式发送文本框的内容对服务器的POST请求。请参阅上面的链接以获取教程。