django.core.exceptions.SuspiciousFileOperation:加入的路径位于基本路径组件之外

per*_*ess 4 python django python-2.7 python-3.x django-staticfiles

每次用于 django 网站时,这都很好用,但这次它给了我一个错误。

设置.py

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

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

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)

我的目录 Portfolio-Project/Portfolio/static/profile.jpg 中有一个 profile.jpg。它应该从这里收集静态并将静态文件粘贴到我的代码中提到的 Portfolio-project/static 中。但它给了我一些错误。

使用命令“Python manage.py collectstatic”后出错

django.core.exceptions.SuspiciousFileOperation: The joined path 
(C:\Users\Kiran\Desktop\portfolio-project\portfolio\static\Profile.jpg) is 
located outside of the base path component 
(C:\Users\Kiran\Desktop\portfolio- project\portfolio\static\)
Run Code Online (Sandbox Code Playgroud)

请帮忙。谢谢

Jot*_*ota 5

在您的行中:

os.path.join(BASE_DIR, 'portfolio/static/')
Run Code Online (Sandbox Code Playgroud)

删除最后一个斜杠:

 os.path.join(BASE_DIR, 'portfolio/static')
Run Code Online (Sandbox Code Playgroud)

无论如何,这是理想的:

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

STATIC_URL = '/static/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)

  • 为什么你没有在你的理想场景中包含`STATIC_ROOT`? (2认同)