Как сделать запрос в хранилище данных Google App Engine и передать результаты на новые страницы? - PullRequest
2 голосов
/ 02 марта 2012

Учитывая следующий фрагмент кода Python из Google App Engine, который демонстрирует мою рабочую модель хранилища данных, как я могу запрашивать объекты моей модели и отображать результаты на новых страницах с именами showall.html и showlist.html?

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

class PersonInfo(db.Model):
    firstname = db.StringProperty()

    lastname = db.StringProperty()

    book = db.StringProperty()

    email = db.StringProperty()

    phone = db.StringProperty()

    os = db.StringProperty()

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

[... Материал обработчика формы отправки ...]

class Register(webapp.RequestHandler):
    def post(self):
        personinfo = PersonInfo()
        firstname = self.request.get('firstname')
        lastname = self.request.get('lastname')
        phone = self.request.get('phone')
        book = self.request.get('book')
        email = self.request.get('email')
        os = self.request.get('os')

        #This puts stuff in database
        personinfo.firstname=firstname
        personinfo.lastname=lastname
        personinfo.phone=phone
        personinfo.book=book
        personinfo.email=email
        personinfo.os=os 
        personinfo.put()


        self.response.out.write("""
    <ul>
      <li><a href = "showall.html">Show All People Registered</a></li>
      <li><a href = "showlist.html">Show People Inside This List</a></li>
    </ul>""")

application = webapp.WSGIApplication(
[('/', MainPage),
('/sign', Register),
    ],debug=True)

def main():
   run_wsgi_app(application)


if __name__ == "__main__":
    main()

Ответы [ 2 ]

0 голосов
/ 05 марта 2012

Вы не можете этого сделать. В Google App Engine вы не можете писать в файловую систему, поэтому вы не можете сохранять результаты статически. Что вы могли бы сделать, это

    self.response.out.write("""
<ul>
  <li><a href = "showall">Show All People Registered</a></li>
  <li><a href = "showlist">Show People Inside This List</a></li>
</ul>""")

Теперь создайте обработчик для showall и showlist, например showallhandler, showlisthandler и написать ответ, используя эти обработчики. Другой ответ здесь показывает, как запросить базу данных. Просто self.response.write (результаты запроса к базе данных) в каждом обработчике.

0 голосов
/ 03 марта 2012

С Запросы и индексы :

# The Query interface constructs a query using instance methods.
q = Person.all()
q.filter("last_name =", "Smith")
q.filter("height <", 72)
q.order("-height")

# The GqlQuery interface constructs a query using a GQL query string.
q = db.GqlQuery("SELECT * FROM Person " +
                "WHERE last_name = :1 AND height < :2 " +
                "ORDER BY height DESC",
                "Smith", 72)

# The query is not executed until results are accessed.
results = q.fetch(5)
for p in results:
  print "%s %s, %d inches tall" % (p.first_name, p.last_name, p.height)
...