无法使用新版本从数据库打印数据

时间:2011-07-25 22:09:12

标签: google-app-engine web.py

我使用的是最新版本的web.py。

我正在尝试将数据从数据库打印到网页。 我使用的代码如下

import web
from google.appengine.ext import db
from models import *

urls = (
  '/', 'index',
)

render = web.template.render('templates', base='base')

class index:
    def GET(self):
        votes = db.GqlQuery("SELECT * FROM votes")
        return render.index(votes)

app = web.application(urls, globals())
main = app.cgirun()

模板如下

$def with(votes)


$for vote in votes:
    <li>$vote.status</li>

我在运行时得到这个

[<models.votes object at 0x0000000004525F28>]

这是新版本导致的错误,因为它在以前的版本中有效。

我忘了说我正按照here的说法编辑我的模板。

2 个答案:

答案 0 :(得分:0)

我不使用web.py;但也许它不像预期的那样支持模板中的生成器/迭代。首先尝试通过将您的行更改为:

来获取结果
votes = db.GqlQuery("SELECT * FROM votes").fetch(100)

答案 1 :(得分:0)

它适用于我的机器,使用以下代码运行最新的web.py 0.36

<强> main.py

import web
from google.appengine.ext import db

class Votes(db.Model):
  status = db.StringProperty()

urls = (
  '/', 'Index',
)

render = web.template.render('templates', base='base')

class Index:
    def GET(self):
        vote = Votes()
        vote.status ="foo"
        vote.put()

        votes = db.GqlQuery("SELECT * FROM Votes")
        return render.index(votes)

app = web.application(urls, globals())
main = app.cgirun()

<强>模板/ index.html中

$def with(votes)

$for vote in votes:
    <li>$vote.status</li>

templates / base.html

$def with (content)
<html>
    <head>
    </head>
    <body>
        $:content
    </body>
</html>

这是结果:

  • FOO