2017-06-25 11 views
0

私はレストランのウェブサイトを作っており、Yelpのレビューを表示したいと考えています。私はYelp APIを使ってデータを設定し、検索することができます。私は必要なものを得るために2つのことを照会する必要があります。つまり、ページの読み込みには10〜15秒かかるため、誰かがページを見たいと思うたびにYelp APIにクエリする必要はありません。Django preload Yelp APIの結果

yelp_api = YelpAPI('secretkey1', 'secretkey2') 
business_results = yelp_api.business_query(id='secretbuisness', location='secretplace') 
reviews_results = yelp_api.reviews_query(id='secretbuisness', location='secretplace') 
return render(request, 'reviews.html', {'reviews_results': reviews_results, 'business_results': business_results}) 

それはので、私はYelpのAPIのデータは、ページリクエストから分離し、多分すべての5-10分を更新し、使用することをどこかで準備を格納し得ることができるようにする方法はありますか?

答えて

0

確かに、これを行うにはバックグラウンドタスクを使用できます。

  • Celery(豊富な、高度な設定を備えています(ない非常にあなたの問題のための豊富な良い特色、簡単なセットアップ、簡単に使用)

    • Django Background Tasks

      1. バックグラウンドタスクのDjangoのアプリケーションのいずれかを選択します。 、先進使用)

  • 結果をモデル化してデータベースに格納します

  • 1時間ごとにバックグラウンドタスクでapiリクエストを行い、作成したモデルに結果を保存します。
  • htmlにモデルの結果を表示します。
  • また、これをajax(javascript)と非同期でHTMLで行うこともできます。 結果を表示するページでは、rest api of yelpにjavascriptを使用してajaxリクエストを行い、handlebarsまたは他のjavascriptレンダリングエンジンなどのデータ全体をレンダリングできます。 djangoがおそらくjavascriptテンプレートをレンダリングするので、javascriptテンプレートエンジンとdjangoテンプレート構文が混在しているかどうかに注意してください。したがって、ソリューションは次のとおりです。How to escape {{ or }} in django template?