повторяющаяся отправка данных в шаблон django из представления - PullRequest
0 голосов
/ 01 июня 2018

Я использую 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>

это хороший способ достичь этого?

1 Ответ

0 голосов
/ 01 июня 2018

Итак, Javascript полностью на стороне клиента, что означает, что он не может показать вам какую-либо информацию, которая не была ему предоставлена ​​при начальной загрузке страницы.Если вы хотите обновлять информацию в режиме просмотра Django, вы должны что-то использовать для отправки этой информации, чтобы клиент ничего не нажимал.Я верю, что вы хотите JQuery.

...