обработка кэширования изображений в render_to_response - PullRequest
0 голосов
/ 22 июня 2011

Краткая версия:

Я хочу убрать URL-адреса изображений из выходных данных вызова render_to_response и заменить их локально кэшированной копией (создавая ее, если она не существует).У меня есть идея реализации, но кажется, что каждый мужчина и его жена делали это раньше, поэтому я не хочу тратить свое время, когда я мог бы использовать версию, которая проверена и протестирована.

Почему:

Я занимаюсь разработкой клиента синдикации с использованием django для своей серверной части (я собираюсь сделать версию для браузера, чтобы облегчить переход).Теперь для мобильных и настольных версий моего клиента я хочу иметь возможность просматривать каналы в автономном режиме , например, в длительном путешествии по трубе.Я полагаю, что это будет похоже на версию Instapaper .

для канала. Мое решение:

В моей базе данных есть таблица, содержащая URL-адрес изображения, время последнего обновления иImageField.Предполагается, что каждый раз, когда я сталкиваюсь с URL-адресом изображения, я просматриваю его в этой таблице (это будет основной индекс).

try:
  img = Image.objects.get(url=image_url)
except Image.DoesNotExist:
  img = Image(url=image_url, image=standard_placeholder)
  img.save()
if not img.last_updated or too_long_ago(img.last_updated):
  try:
    new_image = File(open(urllib.urlretreive())[0])
    img.image.save(md5(img.url),new_image)
    img.update()
  except:
    pass
return img.image

Тогда все , что мне нужно сделать, это заменитьизображения из render_to_response с изображениями, приведенными здесь.

Проблемы, которые я уже заметил:

Я не совсем уверен, как я собирался найти все URL-адреса изображений.аргумент src для тега изображения должен быть достаточно простым и охватывать большинство случаев, но есть ли другие методы, которые были бы более надежными и менее дырявыми?

Ответы [ 3 ]

1 голос
/ 22 июня 2011

Поскольку вы обслуживаете просканированный html, вам, вероятно, следует отфильтровать его с помощью синтаксического анализатора, например lxml .При этом вы можете попытаться найти теги img, получить изображения и изменить URL-адреса.Я предлагаю сделать это как автономную задачу, используя Celery.

1 голос
/ 22 июня 2011

Используйте что-то вроде BeautifulSoup или HTMLParser для анализа документа и извлечения всех тегов <img> и получения атрибута src.

1 голос
/ 22 июня 2011

Как насчет создания пользовательского шаблона тега / фильтра , который проверяет, кэшируется ли URL-адрес и решает, какой URL-адрес использовать?

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