两个页面,相同的数据库查询,不同的结果

时间:2013-06-02 15:50:42

标签: google-app-engine python-2.7 google-cloud-datastore

请帮帮我。 我正在用Python 2.7 + Google Application Engine编写我的学生项目。

我有下一页: / - 我有上传文件列表的主页

/ delete / file_blob_key - 从数据库中删除记录的处理程序

在两个处理程序中,我使用下一个语句:

bases = dbModels.kbEntity.all()

在'/'页面上,此语句返回数据存储区中的记录列表

在'/ delete / file_blob_key'页面上,此语句返回空列表

出了什么问题?

处理程序:

#===============================================================================
# Handler to delete file from server by key
#===============================================================================
class DeleteHandler(webapp2.RequestHandler):
    def get(self, resource):
        base = dbModels.kbEntity.all().filter('kbKey=', resource).fetch(1)[0]
        base.delete()
        self.redirect('/')

#===============================================================================
#
#===============================================================================
class IndexHandler(webapp2.RequestHandler):
    def getAllBasesTable(self):
        bases = dbModels.kbEntity.all()
        bases.order('-kbUploadDate')
        bases = {}
        template = JE.get_template('./templates/TPLBasesTable.html')

        values = {
            'bases': bases
        }
        return template.render(values)

    def get( self ):
        self.response.headers['Content-Type'] = 'text/html'
        template = JE.get_template('./templates/TPLIndex.html')
        values = {
            'bases': self.getAllBasesTable()
        }
        html = template.render( values )
        self.response.out.write( html )

2 个答案:

答案 0 :(得分:2)

getAllBasesTable的第3行,您将覆盖bases。因此,请删除bases = {},您应该得到所需的结果。

答案 1 :(得分:0)

问题解决了! 我改变了

from google.appengine.ext import db

from google.appengine.ext import ndb

现在所有查询都可以正常运行