If
MEDIA_ROOT = '/files/dev/projects/mynewproject/media'
и URL является
http://localhost:8000/media/adminextra/js/jquery.js
затем локальный путь к файлу должен быть:
/files/dev/projects/mynewproject/media/adminextra/js/jquery.js
, тогда как вы говорите (в комментарии), что файл находится по адресу:
/files/dev/projects/mynewproject/project/concerthall/media/adminextra/js
Конечно, он не найден.
Это работает по-разному для STATIC-путей и URL-адресов, потому что между ними есть collectstatic
и механизм поиска файлов STATIC. Я рекомендую размещать ресурсы в корнях STATIC, потому что они принадлежат им. MEDIA не предназначена для этого.
Кроме того, наилучшая практика должна избегать жестких кодированных абсолютных путей файлов в ваших настройках. Это не будет работать в общем проекте.
Пример установки в <git_root>/mynewproject/settings/base.py
:
BASE_APP_DIR = os.path.dirname(os.path.realpath(project_module.__file__))
PROJECT_DIR = os.path.dirname(BASE_APP_DIR)
# Static files (CSS, JavaScript, Images)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static_collected')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
STATICFILES_DIRS = (
os.path.join(BASE_APP_DIR, 'static'),
)
с веб-ресурсов (JS/CSS/.img), проживающих под <git_root>/mynewproject/static
и нижнего приложения каталогов и которые поступают collectstatic
в <git_root>/static_collected
. На производстве у вас будет NGINX или Apache, доставляющие файлы в этом последнем каталоге.
Поместите файл в:
mynewproject/project/concerthall/static/adminextra/js/jquery.js
(я беру его, concerthall
это приложение с models.py
файла.)
В классе администратора, который использует его:
class Media:
js = ("adminextra/js/jquery.js",)
Are вы уверены, что jquery должен находиться под MEDIA_ROOT вместо STATIC_ROOT? MEDIA предназначен для ресурсов, загружаемых пользователем (-ами), в то время как STATIC предназначен для ресурсов приложений, таких как JS/CSS и т. Д. – Risadinha
Да, я уверен, потому что папка «adminextra» предназначена для файлов, которые я использую в панели администратора. –
Где находится ' jquery.js' находится на вашем диске? В чем значение 'settings.DEBUG'? – Alasdair