如何修复"对象不可迭代"错误?

大家好,
我还是个新手,当时我正在为一个类的Google应用程序引擎项目工作,然后出现了这个错误。我不知道为什么,因为就在它的正上方,我有相同的对象类型就在它的正上方,当我从另一个滤镜上取下滤镜时,它工作得很好,我就是做不到,否则就会把一切都搞砸

选择 | 换行 | 行号
  1. def LoginBar():
  2.     user = users.get_current_user()
  3.     greet = Greeting.all()
  4.     info = greet
  5.     greet.filter("username =", user)
  6.     info = Greeting.all()
  7.     url_account_linktext = "Account"
  8.     check = 0
  9.     if user:
  10.         for info in greet:
  11.             if info.username == user:
  12.                 check = 1
  13.                 break
  14.         if check == 0:
  15.             greeting = Greeting()
  16.             greeting.username = users.get_current_user()
  17.             greeting.email = user.email()
  18.             greeting.name = greeting.username.nickname()
  19.             greeting.put()
  20.  
  21.         url = users.create_logout_url('/')
  22.         url_linktext = 'Logout'
  23.     else:
  24.         url = users.create_login_url('/')
  25.         url_linktext = 'Login'
  26.     template_values = {
  27.             'info': info,
  28.             'greetings': greet,
  29.             'url': url,
  30.             'url_linktext': url_linktext,
  31.             'url_account_linktext': url_account_linktext, 
  32.         }
  33.  

如果我在此代码中使用INFO变量

选择 | 换行 | 行号
  1. {% for greeting in info %}
  2.     <br /><b>{{ greeting.name }}</b><br />
  3. {% endfor %}
  4.  

它抛出这个异常,但是如果我把greet放进去,不管它是否经过过滤,它都可以工作。知道为什么吗?我真的希望我能用greet,但遗憾的是,这不起作用,因为我在其他地方用它来做其他事情。提前谢谢你
编辑,这是回溯

选择 | 换行 | 行号
  1. Traceback (most recent call last):
  2.   File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 515, in __call__
  3.     handler.get(*groups)
  4.   File "C:\Users\William\Documents\workspace\242Homework2\src\homework\main.py", line 109, in get
  5.     self.response.out.write(template.render(path, values))
  6.   File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\webapp\template.py", line 143, in render
  7.     return t.render(Context(template_dict))
  8.   File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\webapp\template.py", line 183, in wrap_render
  9.     return orig_render(context)
  10.   File "C:\Program Files (x86)\Google\google_appengine\lib\django\django\template\__init__.py", line 168, in render
  11.     return self.nodelist.render(context)
  12.   File "C:\Program Files (x86)\Google\google_appengine\lib\django\django\template\__init__.py", line 705, in render
  13.     bits.append(self.render_node(node, context))
  14.   File "C:\Program Files (x86)\Google\google_appengine\lib\django\django\template\__init__.py", line 718, in render_node
  15.     return(node.render(context))
  16.   File "C:\Program Files (x86)\Google\google_appengine\lib\django\django\template\defaulttags.py", line 175, in render
  17.     return self.nodelist_true.render(context)
  18.   File "C:\Program Files (x86)\Google\google_appengine\lib\django\django\template\__init__.py", line 705, in render
  19.     bits.append(self.render_node(node, context))
  20.   File "C:\Program Files (x86)\Google\google_appengine\lib\django\django\template\__init__.py", line 718, in render_node
  21.     return(node.render(context))
  22.   File "C:\Program Files (x86)\Google\google_appengine\lib\django\django\template\defaulttags.py", line 99, in render
  23.     values = list(values)
  24. TypeError: 'Greeting' object is not iterable
  25.  
# 回答1


如果您发布了包含回溯的错误消息,将会有所帮助。
您在中进行的分配
LoginBar()
看起来不太对劲。你把任务分配给
信息
两次在
如果
语句,然后如果
用户
计算结果为True。
发布的第二个代码块不是有效的Python,会引发语法错误。
# 回答2


我加了跟踪簿,抱歉,我是想加这个的。最后一段代码是将python集成到html中,当我问这个问题时,我半睡半醒,对不起。
# 回答3


没关系,它现在起作用了……原来我需要把.all放到for循环中的迭代对象上。谢谢你的帮忙!

标签: python

添加新评论