Статические файлы Django отображаются ТОЛЬКО при запуске отладчика (с DEBUG=True)
Я использую daphne в качестве Django-сервера с интеграцией из daphne в runserver в settings.py
У меня со вчерашнего дня странная ошибка со статическими файлами при DEBUG=True, (так что, нет, это не очередной случай, когда статические файлы не найдены при DEBUG=False ! ;)
При запуске python manage.py runserver
они не отображаются, но когда я запускаю приложение с помощью отладчика из VS Code, они появляются.
Значит, моя установка в какой-то мере работает, но только в режиме отладки...
В файле settings.py у меня есть:
STATIC_ROOT = BASE_DIR / 'static'
STATIC_URL = 'static/'
INSTALLED_APPS = [
...
'django.contrib.staticfiles',
...
]
Мой launch.json выглядит так:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python Debugger: Django",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/manage.py",
"args": ["runserver"],
"django": true,
"autoStartBrowser": false,
"justMyCode": false,
}
]
}
поэтому он также выполняет ту же команду (runserver).
Статические файлы хранятся в каталоге static// каждого приложения.
Есть идеи?
РЕДАКТИРОВАТЬ:
BASE_DIR = Path(file).resolve().parent.parent
urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Ваш статический поиск конфигурации urls.py неполный, вы настроили только поиск медиафайлов,
В вашем проекте urls.py вставьте этот фрагмент кода ниже, и убедитесь, что вы импортировали from django.conf.urls.static import static
.
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
Поскольку мы не видим вашу статическую конфигурацию в файле settings.py, убедитесь, что вы ее настроили, если нет, то возьмите этот фрагмент кода ниже и вставьте его в настройки ваших статических файлов в settings.
STATIC_URL = '/static/'
# create the folder called `static` in your project root directory
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
STATIC_ROOT = 'static_root'
MEDIA_URL = '/media/'
# create the folder called `media` in your project root directory
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
TEMPLATE_DEBUG = True
И последнее, убедитесь, что используемый вами daphne
сервер является первым приложением, которое вы добавили в список INSTALLED_APPS
, чтобы избежать ненужного поведения вашей программы.