Где разместить вызов внешнего API, который зависит от модели? - PullRequest
1 голос
/ 20 декабря 2010

Предположим, у меня есть приложение Django с именем "блог".

Существует модель с именем Post, и у меня есть внешний вызов API, который возвращает список самых популярных сообщений за определенный период времени, например, API Google Analytics.

Мой вопрос: где находится ожидаемое место, где я должен разместить код, который выполняет вызов внешнего API, анализирует идентификатор каждого поста, запрашивает базу данных и соответственно сортирует список моделей?

Я не думаю, что он должен жить в Manager или templatetag. Любые советы или предложения?

Заранее спасибо!

РЕДАКТИРОВАТЬ: Желаемый результат может потребоваться в нескольких местах по всему проекту, поэтому, если я размещу код в поле зрения, у меня будет дублирование.

Ответы [ 2 ]

4 голосов
/ 20 декабря 2010

Это должно быть сделано в виде, или, лучше, если ваш код вида запутан, поместите его в вспомогательный модуль.

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

Однако, будьте осторожны, полагаясь на внешний apis для отображениястраница для вашего пользователя.Все может пойти не так, занять очень много времени, API может не отвечать и т. Д. Лучше делать это асинхронно с Javascript и обновлять страницу, когда данные готовы.

1 голос
/ 20 декабря 2010

Похоже, что это должно быть сделано в представлении, потому что тогда вы вернетесь к шаблону со всем необходимым контекстом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...