'Status' 对象不可迭代 python Django

'Status' object is not iterable python Django

我的 views.py :

def responded(request):
  reply_twt = Reply_twt.objects.all() 
  for tweet in reply_twt:
    rply_tweet = home_timeline.api.get_status(tweet.tweetid)
  return render (request, 'analytics/responded.html', {'rply_tweet': rply_tweet})

我的html:

{% extends 'analytics/header.html' %}
{% block body %}

        {% for tweet in rply_tweet %}
            {{tweet.text}}
        {% endfor %}
{% endblock %}

我需要在 for 循环中打印多个 tweet.text,即使我将数据发送到 html 页面,它也只是单个推文中的数据。如何解决这个问题。提前谢谢你

你写:

for tweet in reply_twt:
    <b>rply_tweet</b> = home_timeline.api.get_status(tweet.tweetid)

这意味着在每次迭代之后,您将覆盖 rply_tweet 新迭代的响应。但是您的模板似乎建议您要呈现 所有 响应(此外,它只会浪费资源,因为您从不使用以前的响应)。

因此,您可以构建一个 list,其中包含所有具有列表理解的响应:

rply_tweet = <b>[</b>home_timeline.api.get_status(tweet.tweetid) for tweet in reply_twt<b>]</b>

也就是说,如果您的 Reply_twt 存储了推文的所有信息(或者至少是您要呈现的数据),您最好只使用这些对象:

# in case a Reply_twt contains *all* the necessary data
def responded(request):
    reply_twt = Reply_twt.objects.all()
    return render (request, 'analytics/responded.html', {'rply_tweet': <b>reply_twt</b> })

只是 return 推文的完整列表

views.py

def responded(request):
  reply_twt = Reply_twt.objects.all() 
  return render (request, 'analytics/responded.html', {'rply_tweet': list(reply_twt}))