gpt4 book ai didi

python - Google App Engine 数据库模型对象对象不可迭代错误

转载 作者:行者123 更新时间:2023-11-28 23:01:35 27 4
gpt4 key购买 nike

我无法理解我在使用 Google App Engine 中的以下代码时遇到错误。我想列出模型对象的所有元素。当我运行代码时,出现以下错误。谁能向我解释为什么会出现此错误?

错误:

Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1536, in __call__
rv = self.handle_exception(request, response, e)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1530, in __call__
rv = self.router.dispatch(request, response)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1102, in __call__
return handler.dispatch()
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 572, in dispatch
return self.handle_exception(e, self.app.debug)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "C:\Users\evalentini\Desktop\Personal\Udacity Web Development Class\logintest\main.py", line 143, in get
self.render("userlist.html", users=users)
File "C:\Users\evalentini\Desktop\Personal\Udacity Web Development Class\logintest\main.py", line 73, in render
self.write(render_str(template, **kw))
File "C:\Users\evalentini\Desktop\Personal\Udacity Web Development Class\logintest\main.py", line 32, in render_str
return t.render(params)
File "C:\Program Files (x86)\Google\google_appengine\lib\jinja2\jinja2\environment.py", line 894, in render
return self.environment.handle_exception(exc_info, True)
File "C:\Users\evalentini\Desktop\Personal\Udacity Web Development Class\logintest\templates\userlist.html", line 3, in top-level template code
{% for user in users: %}
TypeError: 'User' object is not iterable

我已经编写了 requestHandler 对象 (ListNames),它应该列出名称(下面的代码):

类 ListNames(BlogHandler):

def get(self):
users=User.all().get()
self.render("userlist.html", users=users)

它使用我的用户模型:

class User(db.Model):
name=db.StringProperty(required=True)
pwd=db.StringProperty(required=True)
email=db.StringProperty(required=True)

和一个名为 render 的函数以从 jinja 模板呈现页面:

def render_str(template, **params):<br>
t=jinja_env.get_template(template)
<br>return t.render(params)

Jinja 模板如下:

<html>

{% for user in users: %}
<div style="{border: 1px solid; border-color: blue; padding: 1px;}">
{{user.name}}
</div>
{% endfor %}
</html>

最佳答案

您只有 1 个用户

users=User.all().get()

返回第一个实体

您需要使用返回用户列表的 fetch()

users=User.all().fetch(1000)

或像这样传入查询:

users=User.all()

最后一个不是最佳选择,因为它可能会返回太多用户,这会影响您的应用性能甚至更糟。

关于python - Google App Engine 数据库模型对象对象不可迭代错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10924136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com