Сохранение строки из текстового поля в хранилище данных Google App Engine - PullRequest
1 голос
/ 26 мая 2011

Можно ли создать текстовое поле в HTML, ввести в него строку, нажать кнопку "сохранить", сохранить эту информацию в модели хранилища данных GAE и оставить текст в текстовом поле и сохранить в хранилище данных?

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 ]

3 голосов
/ 26 мая 2011

Я думаю, что это поможет, я изменил приложение гостевой книги по умолчанию для вас. Обычный способ сделать это иметь отдельно 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()
2 голосов
/ 27 мая 2011

Лучший способ создать интерфейс такого рода, где пользователь «сохраняет» данные на странице без изменения страницы, - это использовать AJAX вызовы.

Хотя полное объяснение того, как работает AJAX, возможно, выходит за рамки ответа здесь, основная идея состоит в том, что к вашей кнопке «Сохранить» прикреплено событие Javascript onclick, которое отправляет содержимое вашего текстового поля через POST запрос к серверу. См. Ссылку выше для учебника.

...