Django считает, что существует "SuspiciousFileOperation". Это не так
УDjango есть убеждение, что существует ошибка SuspiciousFileOperation
, когда это просто не так. Моя полностью воспроизводимая установка приведена ниже. Она продолжает возвращать эту ошибку, несмотря на то, что:
- Я установил и настроил
Whitenoise
правильно, как и вMiddleware
иInstalledApps
, вsettings.py
filw, а также следующее:
INSTALLED_APPS = [
'django.contrib.staticfiles',
]
MIDDLEWARE = [
"whitenoise.middleware.WhiteNoiseMiddleware",
]
STORAGES = {
'default': {
'BACKEND': 'django.core.files.storage.FileSystemStorage',
},
"staticfiles": {
"BACKEND": "whitenoise.storage.CompressedManifestStaticFilesStorage",
},
}
STATIC_ROOT = BASE_DIR / "staticfiles"
STATIC_URL = 'static'
STATICFILES_DIRS = [
BASE_DIR / "static"
]
- Несмотря на то, что я правильно настроил статический конфиг в моей корневой папке
urls.py
следующим образом:
from django.conf import settings
from django.conf.urls.static import static
from django.views.static import serve
urlpatterns = [
......
]
# Only for development. Do not use this in production.
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
- Несмотря на то, что я правильно загружаю css-файл в свой шаблон:
#template html
{% load static %}
<head>
<link rel="stylesheet" type="text/css" href="{% static 'image-video-hero.css' %}">
</head>
#<filename>.css
@import url(image-video-hero.css);
Мой каталог выглядит следующим образом:
<PROJECTNAME>
<ROOTFOLDER>
settings.py
urls.py
<APP NAME>
static
file.css
static
libraries
css
image-video-hero.css
staticfiles
libraries
css
image-video-hero.css
Таким образом, нет никаких причин, почему у Django должны быть проблемы с этим, однако, когда я выполняю команду python manage.py collectstatic
, я все равно получаю ответное сообщение:
raise SuspiciousFileOperation(
django.core.exceptions.SuspiciousFileOperation: The joined path (<FILEPATH>\static\libraries\css\image-video-hero.css) is located outside of the base path component (<FILEPATH>\<PROJECTNAME>\staticfiles)
Это абсолютно бессмысленно.
В переменной STATiC_ROOT
я пробовал удалять прямые и обратные слэши, пробовал то же самое с настройками STATIC_URL
и STATICFILES_DIRS
и пробовал переставлять файлы в папке static
. Кажется, ничто не решает проблему. Как мне решить эту проблему?
В соответствии с запросом, полная трассировка выглядит следующим образом: