2010-12-20 9 views
1

"blog"という名前のDjangoアプリがあるとします。モデルに依存する外部APIへの呼び出しはどこに配置しますか?

Postというモデルがあり、特定の時間内に最も人気の高い投稿のリスト(Google Analytics APIなど)を返す外部API呼び出しがあります。

私の質問は、外部APIを呼び出すコードを配置し、各投稿のIDを解析し、データベースにクエリを行い、それに応じてモデルのリストをソートする場所です。

私はそれがManagerまたはtemplatetagに住んでいるとは思わない。ヒントや提案はありますか?

ありがとうございます!

EDIT:プロジェクトのいくつかの場所で必要な結果が必要な場合があります。したがって、コードを表示すると重複してしまいます。

答えて

3

これはビューで実行する必要があります。ビューコードが乱雑になっている場合は、ヘルパーモジュールに入れてください。

import util 
def view(request): 
    util.process_post_rankings(request.user.id) 
    # ... write additional logic and render to template 

ただし、外部apisに頼ってユーザーにページを表示することには注意してください。物事が間違っているかもしれない、ひどく長い時間がかかる、APIが応答しないなど... JavaScriptを非同期的に行うこと、データが準備できたらページを更新する方がよい。

+0

ありがとう、トミー。ヘルパーモジュールの提案は素晴らしいです! – Tiago

+0

また、外部APIの使用についてのヒントもあります。ありがとう! – Tiago

1

これは、ビューで実行する必要があるように聞こえます。これは、必要なすべてのコンテキストを含むテンプレートに戻るためです。

+0

ありがとうRasiel。プロジェクト全体で複数の場所で注文された投稿のリストを使用するかもしれないと言わざるを得ないので、質問を明確にした。 – Tiago

+0

素晴らしい、ヘルパーメソッドのように思われる答えです。 – Rasiel

関連する問題