【问题标题】:repetitive sending data to django template from view从视图重复向 django 模板发送数据
【发布时间】:2018-06-01 16:47:46
【问题描述】:

我正在使用 twitter 流 api 来获取实时推文,我想在推文出现时显示它们的数据。我不能使用HttpResponse()render() 将数据从视图发送到模板,因为它只发送一次数据。我想在数据到来时重复发送数据。

现在我该如何实现呢?

我几乎没有什么想法,比如我可以在几秒钟后使用 javascript 刷新页面,但这似乎不是一个好主意。

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

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>

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

【问题讨论】:

    标签: django python-3.x django-templates django-views twitter-streaming-api


    【解决方案1】:

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

    【讨论】:

    • 你能简单解释一下吗?
    猜你喜欢
    • 2019-01-08
    • 2013-01-21
    • 1970-01-01
    • 2015-09-14
    • 2021-05-26
    • 1970-01-01
    • 2018-07-13
    • 2019-02-01
    • 1970-01-01
    相关资源
    最近更新 更多