Статические файлы 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 , чтобы избежать ненужного поведения вашей программы.

Вернуться на верх