# passingkeys.py import cgi import os from google.appengine.ext import db from google.appengine.ext import webapp from google.appengine.ext.webapp import template from google.appengine.ext.webapp.util import run_wsgi_app class List(db.Model): name = db.StringProperty(multiline=True) class Item(db.Model): list_key = db.ReferenceProperty(List) name = db.StringProperty(multiline=True) def render (template_values): lists = db.GqlQuery("SELECT * FROM List") new_lists = [] for list in lists: items = db.GqlQuery("SELECT * FROM Item Where list_key = :1",list.key()) new_list = { 'name': list.name, 'key': str(list.key()), 'items': items } new_lists.append(new_list) template_values['lists'] = new_lists path = os.path.join(os.path.dirname(__file__), 'index.html') return(template.render(path, template_values)) class HomePage(webapp.RequestHandler): def get(self): template_values = { 'list_form': 0, 'item_form': 0 } self.response.out.write(render(template_values)) class CreateList(webapp.RequestHandler): def get(self): template_values = { 'list_form': 1 } self.response.out.write(render(template_values)) def post(self): list = List() list.name = self.request.get('name') list.put() self.redirect("/") class CreateItem(webapp.RequestHandler): def get(self, list_key): template_values = { 'item_form': 1, 'list_key': list_key } self.response.out.write(render(template_values)) def post(self): item = Item() list_key = self.request.get('list_key') item.list_key = List.get(list_key) item.name = self.request.get('name') item.put() self.redirect("/") application = webapp.WSGIApplication( [('/', HomePage), ('/list_form/', CreateList), ('/create_list/', CreateList), ('/item_form/(.*)/', CreateItem), ('/create_item/', CreateItem)], debug=True) def main(): run_wsgi_app(application) if __name__ == "__main__": main()