django - 从视图重复向 django 模板发送数据
问题描述
我正在使用 twitter 流 api 来获取实时推文,我想在推文出现时显示它们的数据。我不能使用HttpResponse()
或render()
将数据从视图发送到模板,因为它只发送一次数据。我想在数据到来时重复发送数据。
现在我怎么能做到这一点?
我几乎没有什么想法,比如我可以在几秒钟后使用 javascript 刷新页面,但这似乎不是一个好主意。
我知道不提供代码是不好的,但我还没有实现任何相关的东西。
视图.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。
推荐阅读
- java - Spring boot 上的 Swagger - 如何为需要参数的 POST 方法设置示例值?
- python - 来自 Tensorflow 的 Tripleloss 添加了重塑错误
- swift - 电影创作后 AVAssetWriter 内存分配猛增
- ibm-watson - IBM Watson Assistant 可以与 Whatsapp 或 Workplace 集成吗?
- c# - 如何将数据从一种形式传递到另一种形式?
- jenkins-pipeline - Jenkins declearative 流水线脚本
- c# - Active Report 10:文本框大小增加时标签大小增加
- c++ - 如何使用接口指针调用方法,接口指针是其具体类的一部分,而不是接口的一部分
- data-uri - 在数据 uri 中转义 #
- vectorization - 成本函数中的 X*theta 是如何产生的?