Django全局静态文件未加载

时间:2016-10-13 05:13:58

标签: django django-models django-templates django-views django-staticfiles

我希望为我的所有应用提供全局静态文件和模板。我的应用程序也将有模板和静态文件它看起来像这样:

我正在加载我的全局文件,但它无法正常工作。

{% 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'),
)

2 个答案:

答案 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