Возможно ли иметь статические файлы только в каталоге PROJECT_DIR/static без дубликатов статических файлов в каталогах приложений и без необходимости выполнять команду collectstatic? На локальном компьютере используется сервер Django dev, в продакшене - какой-то другой веб-сервер. Из того, что я прочитал до сих пор, я решил, что это невозможно, но, возможно, это неправда.
Идентичный и простой способ обслуживания статических файлов в разработке и производстве - возможно ли это?
Ответы (1)
Конечно, это возможно. Приложение для статических файлов может быть полезным. Если вам не нравятся «дубликаты» (в этом весь смысл — у вас могут быть файлы для каждого приложения, объединенные в одну область), не используйте приложение staticfiles.
Просто используйте любую папку в любом месте в качестве папки с активами. В продакшене обслуживайте его по какому-нибудь URL-адресу, скажем, MY_URL
. В процессе разработки подключите свою URLConf для обслуживания файлов в папке ресурсов по адресу MY_URL
.
https://docs.djangoproject.com/en/1.5/howto/static-files/#serving-files-uploaded-by-a-user
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = patterns('',
# ... the rest of your URLconf goes here ...
) + static('MY_URL', document_root='path-to-my-files')
Это метод старой школы, до того, как статические файлы принесли свои плоды.
Вы уверены, что не можете решить эту проблему, просто используя приложение staticfiles? Добавить python manage.py collectstatic --noinput
в сценарий развертывания не составит большого труда.