Python Google应用程序引擎从数据存储返回奇数值
我尝试将字符串保存到数据存储,重定向到该实体的键,然后在下一个处理程序中获取它。当我在PDFHandler中调用获取字符串(a.name())时,无论输入什么,每次都会返回“w”Python Google应用程序引擎从数据存储返回奇数值,python,python-2.7,google-app-engine,google-cloud-datastore,Python,Python 2.7,Google App Engine,Google Cloud Datastore,我尝试将字符串保存到数据存储,重定向到该实体的键,然后在下一个处理程序中获取它。当我在PDFHandler中调用获取字符串(a.name())时,无论输入什么,每次都会返回“w” class Pdf(db.Model): name = db.StringProperty(required=True) class InputHandler(Handler): def get(self): self.render('cert_form.html') def
class Pdf(db.Model):
name = db.StringProperty(required=True)
class InputHandler(Handler):
def get(self):
self.render('cert_form.html')
def post(self):
name = self.request.get('name')
if name:
a = Pdf(name=name)
a.put()
self.redirect('/key=%s' % a.key())
else:
error = "Please enter your full name."
self.render('cert_form.html')
class PDFHandler(Handler):
def get(self, id):
a = db.Key.from_path('Pdf', id)
self.response.write(a.name())
application = webapp2.WSGIApplication([
(r'/', InputHandler),
(r'/key=(.)+', PDFHandler),
], debug=True)
在你的PDFHandler中
a = db.Key.from_path('Pdf', id)
您得到的是关键对象,而不是实体
要获取Pdf实体,您可以执行以下操作
pdf = db.get(a)
然后,您可以访问pdf上的字段,如pdf.name等。您在appengine数据存储查看器中看到的pdf实体上名称字段的值是多少?它给出了名称“Bobby Smith”、“John Adams”等。这里还有一个问题。我已经到了可以返回实体键的地步。我如何简单地从中查找实体属性(名称、id)?当我输入post=key.get()时,我得到了AttributeError:'str'对象没有属性'get'就像调用key.get()-key是字符串而不是key对象一样。如果您是从url获取密钥,则需要在调用get()之前获取该字符串并为该实体创建一个密钥对象。是否有理由必须使用旧的crufty
db
而不是广受欢迎的较新的ndb
?我对db
太生疏了,我需要一个很长的刷新周期来帮助它——这么多年来我只使用了ndb
!另外,我怀疑你的r'/key=(.)+'
到底捕获了什么——重复这个组而不是它的内容,这是多么奇怪的重新模式?!为什么不是一个正常的r'/key=(.+)'
,捕获重复的内容而不怀疑?至少尝试在PDFHandler
中记录id
,看看它是否是您认为的那样。。。