我希望为我的所有应用提供全局静态文件和模板。我的应用程序也将有模板和静态文件它看起来像这样:
我正在加载我的全局文件,但它无法正常工作。
{% 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'),
)
答案 0 :(得分:1)
STATIC_ROOT和STATICFILES_DIRS不应该相同。创建一个不同的目录,例如staticfiles
,以存储开发静态文件,并在STATICFILES_DIRS中使用它。
答案 1 :(得分:1)
我认为您的问题是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
。