Python Google app engine数据库模型对象不可编辑错误

Python Google app engine数据库模型对象不可编辑错误,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,我无法理解我在谷歌应用程序引擎中遇到了以下代码错误。我想列出模型对象的所有元素。当我运行代码时,我得到以下错误。有人能解释一下我为什么会犯这个错误吗 错误: 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(re

我无法理解我在谷歌应用程序引擎中遇到了以下代码错误。我想列出模型对象的所有元素。当我运行代码时,我得到以下错误。有人能解释一下我为什么会犯这个错误吗

错误:

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
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)
def render_str(template, **params):<br>
    t=jinja_env.get_template(template)
    <br>return t.render(params)
<html>

{% for user in users: %}
    <div style="{border: 1px solid; border-color: blue; padding: 1px;}">
        {{user.name}}
    </div>
{% endfor %}
</html>
我已经编写了requestHandler对象(ListNames),它应该列出名称(下面的代码):

类列表名(BlogHandler):

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
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)
def render_str(template, **params):<br>
    t=jinja_env.get_template(template)
    <br>return t.render(params)
<html>

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

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
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)
def render_str(template, **params):<br>
    t=jinja_env.get_template(template)
    <br>return t.render(params)
<html>

{% for user in users: %}
    <div style="{border: 1px solid; border-color: blue; padding: 1px;}">
        {{user.name}}
    </div>
{% endfor %}
</html>
和一个名为render的函数从jinja模板中呈现页面:

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
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)
def render_str(template, **params):<br>
    t=jinja_env.get_template(template)
    <br>return t.render(params)
<html>

{% for user in users: %}
    <div style="{border: 1px solid; border-color: blue; padding: 1px;}">
        {{user.name}}
    </div>
{% endfor %}
</html>
def render_str(模板,**参数):
t=jinja_环境获取模板(模板)
返回t.render(参数)
下面的Jinja模板:

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
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)
def render_str(template, **params):<br>
    t=jinja_env.get_template(template)
    <br>return t.render(params)
<html>

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

{%对于用户中的用户:%}
{{user.name}
{%endfor%}

您只能获得一个用户

users=User.all().get()
这将返回第一个实体的值

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

users=User.all().fetch(1000)
或传入查询,如下所示:

users=User.all()

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

您只能获得一个用户

users=User.all().get()
这将返回第一个实体的值

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

users=User.all().fetch(1000)
或传入查询,如下所示:

users=User.all()
最后一个不是最好的选择,因为它可能返回太多用户,这会影响应用程序的性能,甚至更糟