Использование тегов шаблонов в django для отображения небольшого количества данных для каждого представления - PullRequest
1 голос
/ 07 сентября 2011

У меня есть приложение, которое я создал, которое получает мои последние коммиты с github.Кроме модели, которая была создана для кеширования информации, я делаю большую работу внутри simple_tag, но я не уверен, как лучше всего этого избежать.Причина, по которой я превратил это в тег, заключается в том, что я хочу отобразить эти данные как часть основного макета моего общего проекта, и поэтому этот код следует запускать для каждого вызываемого представления, расширяющего мой основной макет.

По сути, мой simple_tag должен предоставлять информацию о последнем коммите.Он вызывает функцию, которая проверяет последнюю метку времени в БД, и если ему более 1 часа, он использует urllib2, чтобы запустить API-интерфейс коммитов github, чтобы получить последний коммит, и в свою очередь сохранить эти данные в БД, а затем распечатать свежую информацию о коммите,Итак, в принципе это выглядит примерно так, за исключением некоторого стандартного кода для получения json от github, например:

@register.simple_tag
def latest_commit(project_name):
    commit = get_latest_commit(project_name)
    return 'Latest commit message: %s' % commit.message

def get_latest_commit(project_name):
    commit = models.Commit.objects.get(pk=project_name)
    # ... 
    if not commit or now - commit.updated_at >= one_hour
        # use urllib2 to get github json string
        # ...
        # use simple json to parse string
        # ...
        commit = Commit.objects.create(message=json['mesage'])
        commit.save()
    return commit

Мне кажется, что эта логика должна перейти в другое место ...немного грязно для меня и есть потенциал для XSS, но я новичок в Django и не уверен, как лучше это сделать ...

1 Ответ

0 голосов
/ 07 сентября 2011

Я делаю большую работу внутри simple_tag, но я не уверен, как лучше этого избежать.

Два слова: функции просмотра.

Функция просмотра должна предоставлять информацию о последнем коммите. Вид функция должна вызывать функцию, которая проверяет последнюю метку времени в БД и если ему более 1 часа, он использует urllib2, чтобы поразить коммит github API, чтобы получить последний коммит и в свою очередь хранить эти данные в БД и тогда ...

предоставить все данные, включая свежую информацию о фиксации, в шаблон страницы для обработки.

Вот что должна делать функция просмотра. Шаблон отображает информацию, предоставляемую функцией просмотра.

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