Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Google应用程序引擎从数据存储返回奇数值_Python_Python 2.7_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Python Google应用程序引擎从数据存储返回奇数值

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

我尝试将字符串保存到数据存储,重定向到该实体的键,然后在下一个处理程序中获取它。当我在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 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
,看看它是否是您认为的那样。。。