Django全局静态文件未加载
Posted
技术标签:
【中文标题】Django全局静态文件未加载【英文标题】:Django global static files not loading 【发布时间】:2017-02-22 02:12:56 【问题描述】:我想为我的所有应用程序提供全局静态文件和模板。我的应用程序也将有模板和静态文件它看起来像这样:
我正在加载像这样的全局文件,但它不起作用。
% load staticfiles %
href="% static 'bootstrap/css/bootstrap.min.css' %"
我得到:
“NetworkError: 500 内部服务器错误 - http://localhost:8000/static/bootstrap/css/bootstrap.min.css”
顺便说一句,我可以访问我的静态应用程序而不是全局应用程序,我调试了 STATIC_ROOT 和 PROJECT_ROOT,它们看起来不错。
PROJECT_ROOT ='C:\\webpages\\client_portal\\client_portal'
projectname]/ <- project root
├── [projectname]/ <- Django root
│ ├── __init__.py
│ ├── settings/
│ ├── urls.py
│ └── wsgi.py
├── apps/
│ └── __init__.py
│
├── manage.py
│
├── static/
│ └── GLOBAL STATIC FILES
└── templates/
└── GLOBAL TEMPLATES
我的 settings.py 如下所示:
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, '/static')
STATIC_URL = '/static/'
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, '/static'),
)
【问题讨论】:
尝试将 static_root 保留为空字符串,然后检查是否可以访问静态文件。 【参考方案1】:STATIC_ROOT 和 STATICFILES_DIRS 不应相同。创建一个不同的目录,例如staticfiles
,来存储您的开发静态文件并在 STATICFILES_DIRS 中使用它。
【讨论】:
【参考方案2】:我认为您的问题是STATICFILES_DIRS
中有一个不需要的正斜杠。所以改变这个:
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, '/static'),
)
到这里:
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static'),
)
希望它有所帮助,它在 Django 2.0 中对我有用,不需要使用 PROJECT_ROOT
和 STATIC_ROOT
。
【讨论】:
以上是关于Django全局静态文件未加载的主要内容,如果未能解决你的问题,请参考以下文章
全局加载 Django“静态”模板标签库,而不在每个文件中显式加载它