从视图重复发送数据到Django模板?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (44)

我正在使用twitter流api获取实时推文,并且我希望在推文发布时显示推文的数据。我无法使用HttpResponse()render()将数据从视图发送到模板,因为它仅发送一次数据。我想重复发送数据。

现在我怎么能做到这一点?

我知道不提供代码是不好的,但我还没有实现任何有关的。

views.py

class TweetStreamListener(tweepy.StreamListener):

    def __init__(self,api=None):
        super(TweetStreamListener,self).__init__()
        self.cnt = 1
        self.list = []
        self.end = 5
        print("started")

    def on_status(self, status):
        if self.end >= self.cnt:
            print(status._json['text'])
            self.list.append(status._json['text'])
            self.cnt+=1
        else:
            print('end')
            return False

    def on_error(self, status_code):
        print("error", status_code)
        return False

    def on_timeout(self):
        print('timeout')
        return False


def hashtag_details(request):
    streamListener = TweetStreamListener()
    myStream = tweepy.Stream(auth=api.auth,listener=streamListener)
    hashtag = ((request.path[1:]).split('='))[1]
    myStream.filter(track=hashtag,async=True)
    list = streamListener.list
    template = loader.get_template('list_details.html')
    return HttpResponse(template.render({'tweets':list}, request))

在list_details.html中

<script>
  window.setTimeout(function(){
    window.location.href = "redirect_url";
  }, 3000);
</script>

这是实现这一目标的好方法吗?

提问于
用户回答回答于

Javascript完全是客户端,这意味着它不能向你显示在初始页面加载时未提供给它的任何信息。如果你想更新信息到Django视图,你必须使用一些东西来发送信息,而不需要客户点击任何东西。我相信你想要的是JQuery。

扫码关注云+社区

领取腾讯云代金券