Я использую Django 2.2. Из Django Управление статическими файлами Документация :
Если вы используете django.contrib.staticfiles, как описано выше, запустите сервер
будет делать это автоматически, когда для параметра DEBUG установлено значение True. Если вы не
иметь django.contrib.staticfiles в INSTALLED_APPS, вы все еще можете
вручную обслуживать статические файлы, используя django.views.static.serve ()
вид.
Это не подходит для производственного использования! Для некоторого общего развертывания
стратегии, см. Развертывание статических файлов.
Например, если ваш STATIC_URL определен как / static /, вы можете сделать
добавив следующий фрагмент в ваш urls.py:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Примечание
Эта вспомогательная функция работает только в режиме отладки и только если
префикс является локальным (например, / static /), а не URL (например,
http://static.example.com/).
Также эта вспомогательная функция обслуживает только фактическую папку STATIC_ROOT;
он не выполняет статическое обнаружение файлов, как
django.contrib.staticfiles.
Моя интерпретация
- static - это вспомогательная функция, которая обслуживает файлы из
STATIC_ROOT
во время разработки (это правда?)
- статический работает только тогда, когда
debug = True
- static работает только с локальным префиксом, таким как
STATIC_URL = '/static/'
- Когда для
DEBUG
установлено значение True, и я использую и настраиваю приложение staticfiles, как описано в документации, если я сделаю python manage.py runserver
для запуска локального сервера, подача статических файлов будет обрабатываться автоматически (true ?? )
Мои вопросы
- Что именно добавляет
static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
к вашему проекту urls.py
DO?
- Правда ли, что static обслуживает статические файлы локально из каталога
STATIC_ROOT
? Чтобы проверить эту теорию, после запуска collectstatic
я затем удалил каталоги static
, чтобы посмотреть, все ли нормально загружаются статические файлы (из STATIC_ROOT), и они НЕ делают! Почему?
- Как мне проверить , что Django загружает статические файлы из моего расположения STATIC_ROOT ... а не статические каталоги в моем проекте и приложениях ??
- Почему добавление
static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
к urlpatterns
необходимо, если Django автоматически обслуживает статические файлы (упомянутые в документации)?
Пример * * тысяча восемьдесят-одина
settings.py
DEBUG = True
...
INSTALLED_APPS = [
'django.contrib.admin',
...
'django.contrib.staticfiles',
'puppies.apps.PuppiesConfig'
]
...
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
STATIC_ROOT = 'c:/lkdsjfkljsd_cdn'
Во всех моих шаблонах я использую {% load static %}
.
Тогда я делаю: python manage.py collectstatic
На данный момент, кажется, не имеет значения, есть ли у меня ниже в моем urls.py
или нет - мои статические файлы все еще загружаются, НО я не знаю, приходят ли они из статических каталогов моего проекта или моего STATIC_ROOT (c: / lkdsjfkljsd_cdn):
if settings.DEBUG is True:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Наконец, если я удаляю эти статические каталоги в моем проекте, все css, js и изображения не работают, что заставляет меня поверить, что мой проект Django загружает статические файлы из статических каталогов моего проекта, а НЕ STATIC_ROOT.
Итак, еще раз, как я могу сказать Django загружать статические файлы из моего расположения STATIC_ROOT ... а не статические каталоги в моем проекте и приложениях ?? ИЛИ, не понимаю ли я, что Django не не должен загружать файлы из моего расположения STATIC_ROOT локально?
* Редактировать (добавить HTML-изображение)