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

发布于 2024-11-26 06:41:17 字数 766 浏览 1 评论 0原文

我正在使用最新版本的 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>]

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

我忘了说我正在按此处所述编译模板。

I am using the latest version of web.py.

I am trying to print data from the database to a webpage.
The code i use is the following

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()

the template is the following

$def with(votes)


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

and i am getting this when i run it

[<models.votes object at 0x0000000004525F28>]

Is this a bug with the new version cause in previous version it works.

I forgot to say that i am compiling my templates as stated here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

岁月如刀 2024-12-03 06:41:18

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

ma​​in.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()

templates/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

It works on my machine, running the latest web.py 0.36 with this code:

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()

templates/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>

this is the result:

  • foo
闻呓 2024-12-03 06:41:18

我不使用 web.py;但也许它不按预期支持模板中的生成器/迭代器。首先尝试通过将行更改为来获取结果:

votes = db.GqlQuery("SELECT * FROM votes").fetch(100)

I don't use web.py; but maybe it doesn't support generators/iterables in the templates as expected. Try fetching the results first by changing your line to:

votes = db.GqlQuery("SELECT * FROM votes").fetch(100)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文