Статические CSS и JS загружаются при использовании STATICFILES_DIRS, а не STATIC_URL - PullRequest
1 голос
/ 06 мая 2019

My settings.py is

STATIC_URL = '/some_location/static/'

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

Мой urls.py

urlpatterns = [ multiple path ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Мой базовый .html со структурой каталогов:

enter image description here

Мой каталог root с картинки выше

-project directory
-->appname
-->static
---->css
------>master.css
---->js
----->master.js

Я использую Pycharm IDE.

The error message I get is 

"GET /some_location/static/js/master.js HTTP/1.1" 404 1736
"GET /some_location/static/css/master.css HTTP/1.1" 404 1742

Когда я использую вышеуказанное местоположение /some_location/static/js/master.js в браузере, я вижу содержимое файла.

Что я делаю, чтобы правильно загрузить .css и .js на сервер разработки в Pycharm?

Обновление 1:

Кажется, это сработало, но не уверен, почему. Может кто-нибудь уточнить, почему один работает, а другой нет

STATIC_URL = '/static/'
#STATIC_ROOT = os.path.join(BASE_DIR, 'static')

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

1 Ответ

1 голос
/ 06 мая 2019

Вот, надеюсь, некоторые уточнения:

  • STATIC_URL сообщает Django, какой URL следует использовать для всех ссылок на статические файлы при отображении {% static %} ссылок. Для разработки проще всего установить его на /static/. В ваших производственных настройках он, вероятно, будет указывать на URL-адрес облачного провайдера за CDN (например, https://my-cdn.cloudflare.net/static/).
  • STATIC_ROOT сообщает команде управления collectstatic, куда копировать все статические файлы вашего проекта. Это обычно не относится к вашей машине разработки (вы предоставляете статические файлы непосредственно из вашего проекта), но важно для развертывания в рабочей среде: вам нужно скопировать все ваши статические файлы в папку вне вашего каталог проекта (например, хранилище облачного хранилища типа S3 Amazon).
  • Ваши статические файлы должны быть расположены внутри a static каталога внутри каждого из ваших приложений (т. Е. В вашем случае каталог appname/static). Если у вас также есть отдельный каталог, например static, прямо в вашем проекте BASE_DIR, то вы сообщаете Django, что используете STATICFILES_DIRS. Это говорит runserver также посмотреть туда. На производстве он сообщает collectstatic, откуда взять все статические файлы.

Итак, подведем итог: STATIC_URL/path_to/my_file - это URL, который пользователь видит в браузере, при использовании встроенного сервера выполнения Django, STATIC_URL удаляется и path_to/my_file ищется во всех статических каталогах и каталогах приложения, перечисленных в STATICFILES_DIRS.

Я также написал сообщение в блоге об этом.

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