我在runserver
本地机器 (Mac OS X) 上运行 Django 的开发服务器 ( ),但无法加载 CSS 文件。
以下是 settings.py 中的相关条目:
STATIC_ROOT = '/Users/username/Projects/mysite/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
'/Users/thaymore/Projects/mysite/cal/static',
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
INSTALLED_APPS = (
# other apps ...
'django.contrib.staticfiles',
)
在我的 views.py 中,我请求上下文:
return render_to_response("cal/main.html",dict(entries=entries),context_instance=RequestContext(request))
在我的模板中,{{ STATIC_URL }}
渲染正确:
<link type="text/css" href="{{ STATIC_URL }}css/main.css" />
变成:
<link type="text/css" href="/static/css/main.css"/>
这是文件实际所在的位置。我还跑去collectstatic
确保收集了所有文件。
我的 urls.py 中还有以下几行:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
我是 Django 的新手,所以可能缺少一些简单的东西——希望得到任何帮助。
仔细阅读:https : //docs.djangoproject.com/en/dev/ref/contrib/staticfiles/
是django.contrib.staticfiles
你INSTALLED_APPS
的settings.py
?
是DEBUG=False
吗?如果是这样,你需要runserver
使用--insecure
参数调用:
python manage.py runserver --insecure
collectstatic
与通过开发服务器提供文件无关。它用于将静态文件收集在一个位置,STATIC_ROOT
以便你的 Web 服务器找到它们。事实上,collectstatic
用你的STATIC_ROOT
设置运行一个路径STATICFILES_DIRS
是一个坏主意。你应该仔细检查以确保你的 CSS 文件现在甚至存在。
是的,
django.contrib.staticfiles
在 INSTALLED_APPS(我在上面编辑了问题)中,并且 DEBUG = True,我已经使用 --insecure 参数启动了服务器,但没有运气。尝试直接加载静态 url 之一。是 404 还是 500?
是的,我可以直接导航到 css: 127.0.0.1:8000/static/css/main.css。负载很好。
加载完整页面时,观察 runserver 的输出。应该有一个对 /static/css/main.css 的请求,它的状态代码应该是 200。
我有同样的问题,我找不到 404。我能做什么?