【发布时间】:2014-03-15 06:08:02
【问题描述】:
我在 GAE 的数据存储中有以下模型:
class Blog(db.Model):
subject = db.StringProperty(required = True)
content = db.TextProperty(required = True)
created = db.DateTimeProperty(auto_now_add = True)
last_modified = db.DateTimeProperty(auto_now = True)
我用以下类创建一个新帖子:
class NewPostHandler(Handler):
def render_newpost(self, subject="", content="", error=""):
self.render("newpost.html", subject=subject, content=content, error=error)
def get(self):
self.render_newpost()
def post(self):
subject = self.request.get("subject")
content = self.request.get("content")
if subject and content:
a = Blog(parent = blog_key(), subject=subject, content=content)
a.put()
self.redirect("/blog/%s" %str(a.key().id()))
else:
error = "we need both a subject and some text!"
self.render_newpost(subject, content, error)
我用这段代码来定义一个键:
def blog_key(name = 'default'):
return db.Key.from_path('blogs', name)
我的问题是在尝试渲染它时,以下使用 get_by_id 有效:
class PermalinkHandler(Handler):
def get(self, blog_id):
blog = Blog.get_by_id(int(blog_id), parent=None)
if not blog:
self.response.write('There is no blog whose id is %s' %blog_id)
return
self.render("permalink.html", blog = blog)
当我尝试用
替换blog = Blog.get_by_id(int(blog_id), parent=None)
k = db.Key.from_path('Blog', int(blog_id), parent=blog_key())
blog = db.get(k)
它不起作用,知道为什么吗? 谢谢
【问题讨论】:
-
两个建议:使用 webap2、NDB 和使用时使用 default_value self.request.get('subscribe', default_value=None)
标签: google-app-engine python-2.7 google-cloud-datastore