Сохранение строки из текстового поля в хранилище данных Google App Engine

1

Можно ли создать текстовое поле в 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):
  • 1
    здесь есть тег google-app-engine, убедитесь, что в следующий раз вы отправите свой вопрос в нужном месте.
  • 0
    прости за это. Спасибо за чаевые!
Теги:
google-app-engine
google-cloud-datastore

2 ответа

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()
  • 0
    Спасибо за ответ. У меня проблема в том, что мне нужно отобразить строку в текстовом поле. Вы приятно помещаете строку, заключенную в разметку цитаты, но возможно ли поместить ее в текстовое поле?
  • 0
    Используйте <textarea>% s </ textarea> вместо <blockquote>% s </ blockquote>
Показать ещё 1 комментарий
2

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

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

  • 0
    Я думаю, что это правильный ответ, основанный на формулировке вопроса. В то время как ответ Абдула требует перезагрузки страницы и отображения того же текста, который вы только что сохранили, этот метод не перезагружает страницу, поэтому текст остается в точности таким, как есть.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню