'状态'对象不可迭代python Django

时间:2018-07-19 11:56:40

标签: python django tweepy

我的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页面,也仅是单个tweet上的数据。如何解决这个问题。预先谢谢你

2 个答案:

答案 0 :(得分:1)

您写:

for tweet in reply_twt:
    rply_tweet = home_timeline.api.get_status(tweet.tweetid)

这意味着在每次迭代之后,您将使用新迭代的响应覆盖 rply_tweet。但是您的模板似乎暗示您要呈现 all 响应(此外,由于您从不使用以前的响应,否则它只会浪费资源)。

因此,您可以例如使用所有具有列表理解的响应来构造一个list

rply_tweet = [home_timeline.api.get_status(tweet.tweetid) for tweet in reply_twt]

话虽如此,如果您的Reply_twt存储了tweet的所有信息(或者至少存储了您要呈现的数据),则最好使用以下对象:

# 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': reply_twt })

答案 1 :(得分:1)

只返回推文的完整列表

views.py

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