Можно ли создать текстовое поле в 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):
Я думаю, это поможет, я изменил приложение для гостевой книги по умолчанию для вас. Обычный способ состоит в том, чтобы иметь 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()
Лучший способ создать такой интерфейс, где пользователь "сохраняет" данные на странице без изменения страницы, должен использовать AJAX.
Хотя полное объяснение того, как работает AJAX, возможно, выходит за рамки ответа здесь, основная идея заключается в том, что у вас есть событие Javascript onclick
, прикрепленное к вашей кнопке "Сохранить", которое отправляет содержимое вашего текстового поля через POST запрос на сервер. См. Ссылку выше для учебника.