Django: Статические файлы создаются, но django не удалось найти статические файлы и заглянуть в папку stati c - PullRequest
0 голосов
/ 02 марта 2020

Все работало нормально, но по какой-то причине мне пришлось изменить код статических файлов, и там возникла проблема.

settings.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'blackportfolio/static'),
]

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

Статические файлы создают все мои css файлы копируются в staticfiles, браузер также получает имя staticfiles <link rel="stylesheet" href="/static/style.2f83ab2e5052.css">

Но он не ищет их в static_root(staticfiles), он все еще ищет их в stati c python manage.py findstatic --verbosity 2 styles.css, но возвращает с C:\Users\HP\Desktop\vir1\blackportfolio\blackportfolio/static C:\Users\HP\Desktop\vir1\venv\lib\site-packages\django\contrib\admin\static

команда I типа.

manage.py collectstatic --clear
manage.py runserver --insecure.

структура проекта.

C:.
├───blackportfolio
│   ├───static
│   │   ├───admin
│   │   │   ├───css
│   │   │   │   └───vendor
│   │   │   │       └───select2
│   │   │   ├───fonts
│   │   │   ├───img
│   │   │   │   └───gis
│   │   │   └───js
│   │   │       ├───admin
│   │   │       └───vendor
│   │   │           ├───jquery
│   │   │           ├───select2
│   │   │           │   └───i18n
│   │   │           └───xregexp
│   │   └───images
│   └───__pycache__
├───portfolio
│   ├───migrations
│   │   └───__pycache__
│   └───__pycache__
├───staticfiles
│   ├───admin
│   │   ├───css
│   │   │   └───vendor
│   │   │       └───select2
│   │   ├───fonts
│   │   ├───img
│   │   │   └───gis
│   │   └───js
│   │       ├───admin
│   │       └───vendor
│   │           ├───jquery
│   │           ├───select2
│   │           │   └───i18n
│   │           └───xregexp
│   └───images
└───templates

1 Ответ

0 голосов
/ 02 марта 2020

Пожалуйста, уточните c. Вы не упомянули «прод» в вашем вопросе вообще. Обратите внимание, browser и findstatic не имеют ничего общего. findstatic собирает файлы из STATICFILES_DIRS (не только) в STATIC_ROOT. «Браузер» относится к stati c файлам через STATIC_URL (hrefs в визуализированных HTML генерируются на основе этой опции).

Когда DEBUG=true - Django выполняет сопоставление и сопоставляет URL-адреса, начиная с STATIC_URL, до папки STATIC_ROOT. На prod, когда DEBUG=false, Django не выполняет эту работу - это должен делать веб-сервер.

Так что настройте свой Nginx (или другой веб-сервер) на что-то вроде

location /static/ /* STATIC_URL */
{
    alias C:\Users\HP\Desktop\vir1\blackportfolio\staticfiles; /* STATIC_ROOT */
}

Развертывание stati c файлов на prod упоминается в документации и много раз обсуждалось на SO .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...