Django: присоединенный путь расположен вне компонента базового пути
Я использую Django 10, и я не знаю, почему после того, как я успешно собираю свои статические файлы, когда я пытаюсь запустить сервер в режиме развертывания (debug=False), это происходит со мной примерно так:
Когда я ищу статический файл, делая: python manage.py findstatic /static/mysite/js/javascript.js
django.core.exceptions.SuspiciousFileOperation: The joined path (/static/mysite/js/javascript.js) is located outside of the base path component (/home/xxxx/.venvs/mysite/local/lib/python2.7/site-packages/django/contrib/admin/static)
Я запускаю это с помощью виртуального env 'mysite'.
В settings.py :
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static") (i tried also just only 'static')
MEDIA_ROOT = BASE_DIR + '/mysite/media'
MEDIA_URL = '/media/'
Мой urls.py :
urlpatterns = [
url(r'', include('mysite.urls')),
]
urlpatterns += staticfiles_urlpatterns()
Это ново для меня, я также делал уже сайт django и такого никогда не происходит ошибка. Почему не рассматривается мой путь STATIC_ROOT? С другой стороны, Коллекционирование прекрасно работает. И если я запускаю сервер с отладкой true, он работает как заклинание.
1 ответ:
findstatic’позиционный аргумент s-это параметр, который вы передадите вstaticдля отображения определенного статического файла в шаблоне. Ошибка, которую вы видите, заключается в том, что вы использовали абсолютный путь, а не параметр, который вы бы передали функцииstaticв шаблоне. Вы уверены, что не имели в виду что-то вроде:python manage.py findstatic mysite/js/javascript.jsДля файла, на который вы ссылаетесь с помощью
{% static 'mysite/js/javascript.js' %}Или
python manage.py findstatic js/javascript.jsДля файла, на который вы ссылаетесь с помощью
{% static 'js/javascript.js' %}Для вашего Ссылка:
usage: manage.py findstatic [-h] [--version] [-v {0,1,2,3}] [--settings SETTINGS] [--pythonpath PYTHONPATH] [--traceback] [--no-color] [--first] staticfile [staticfile ...] Finds the absolute paths for the given static file(s). positional arguments: staticfile
N. b., приложение Django staticfiles не предполагается использовать в производстве. В производственной среде предполагается использовать веб-сервер для обслуживания статических файлов на основе. например, для nginx вы бы включили такой блок:
location /static { root /path/to/django; }Для отладки статических файлов проверьте каталог
STATIC_ROOTпосле запуска collectstatic и убедитесь, что файлы находятся там. Если это так, убедитесь, что ваш веб-сервер настроен на правильное обслуживание статических файлов. справочник.
Comments