0
試圖改變這裏的例子:https://developers.google.com/appengine/docs/python/gettingstartedpython27/usingdatastore更新到數據存儲未保存或從錯誤的ansestor讀取?
但不是一個問候項目,我想保存一個學生項目。在與/app
交互的靜態目錄中使用AngularJS來獲取數據。我只有一個POST和一個GET,POST將保存一個條目,GET將顯示前10個條目。
當我發佈JSON似乎被保存,反應:
{"name": "name", "age": 22, "creator": "[email protected]"}
當我這樣做的GET請求來獲取列表但不返回任何,我得到:[]
看着我的代碼和示例代碼,並來回我無法找到差異。示例代碼工作並保存了Greetings,因此我的代碼必須出錯。
import logging
import cgi
import urllib
import json
from google.appengine.api import users
from google.appengine.ext import ndb
import webapp2
DEFAULT_DS_NAME = 'default_ds'
def student_key(ds_name=DEFAULT_DS_NAME):
return ndb.Key('Student', ds_name)
class StudentModel(ndb.Model):
creator = ndb.UserProperty()
name = ndb.StringProperty(indexed=False)
age = ndb.IntegerProperty()
class Student(webapp2.RequestHandler):
def post(self):
st = json.loads(self.request.body)
student = StudentModel(parent=student_key())
if users.get_current_user():
student.creator = users.get_current_user()
student.name = st['name']
student.age = st['age']
key = student.put()
logging.info(key.id())#logs a number
st['creator']=student.creator.email()
self.response.write(json.dumps(st));
def get(self):
student_query = StudentModel.query(
ancestor=student_key()).order(-StudentModel.name)
students = student_query.fetch(10)
ret=[]
for student in students:
s={'name':'','age':0,'creator':''};
if student.creator:
s["creator"]=student.creator.email()
s["name"]=student.name
s["age"]=student.age
logging.info("Pushing s");#never logs anything
ret.push(s)
self.response.write(json.dumps(ret))#returns []
application = webapp2.WSGIApplication([
('/app/student', Student)
], debug=True)