Django 1.4, проверка наличия статического файла, когда DEBUG=True

Я пытаюсь написать код, который проверяет, существует ли статический файл в режиме отладки, и я не могу заставить его работать. Вот что я попробовал в консоли:

>> from django.conf import settings
>>> settings.DEBUG
True
>>> from django.contrib.staticfiles.storage import staticfiles_storage
>>> staticfiles_storage.exists('img/vi_crumbs_bkg.gif')
False

Это не удается, несмотря на vi_crumbs_bkg.gif существует в статическом каталоге моего приложения. Если я буду ссылаться на это settings.STATIC_ROOTвсе работает как положено.

Итак, есть ли способ, которым я могу получить staticfiles_storage.exists работать в режиме отладки?

(примечание: хотя я знаю, что могу просто запустить collectstatic для правильной работы, я не хотел бы периодически запускать его, чтобы собрать все ресурсы из всех моих приложений, пока я активно развиваюсь)

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

1 ответ

Решение

Я думаю, что у меня есть решение. Вместо того, чтобы использовать staticfiles_storage.existsЯ собираюсь положиться на статические искатели Джанго, чтобы найти файл для меня. Вот так:

>>> from django.contrib.staticfiles import finders
>>> finders.find('img/vi_crumbs_bkg.gif')
u'/home/myuser/django_project/app_root/static/img/vi_crumbs_bkg.gif'

Это должно быть идеально для моих нужд, так как все, что мне нужно сделать, это проверить, что файл существует в одном каталоге, а не в другом - независимо от того, находится ли он в корне приложения или STATIC_ROOT не имеет значения.

Надеюсь, это поможет кому-то еще.

Другие вопросы по тегам