我使用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>
这是实现这个目标的好方法吗?
答案 0 :(得分:0)
因此,Javascript完全是客户端的,这意味着它无法向您显示初始页面加载中未提供的任何信息。如果您想将更新信息发布到Django视图,则必须使用某些内容来发送该信息,而无需客户端单击任何内容。我相信你想要的是JQuery。