Django - 无法加载静态CSS文件

tch*_*ore 51 python django static-files

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',
)
Run Code Online (Sandbox Code Playgroud)

在我的views.py中,我正在请求上下文:

return render_to_response("cal/main.html",dict(entries=entries),context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

在我的模板中{{ STATIC_URL }}正确呈现:

<link type="text/css" href="{{ STATIC_URL }}css/main.css" />
Run Code Online (Sandbox Code Playgroud)

变成:

<link type="text/css" href="/static/css/main.css"/>
Run Code Online (Sandbox Code Playgroud)

这是文件实际所在的位置.我还跑去collectstatic确保收集所有文件.

我的urls.py中还有以下几行:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns += staticfiles_urlpatterns()
Run Code Online (Sandbox Code Playgroud)

我是Django的新手,所以我可能会错过一些简单的东西 - 感谢任何帮助.

GDo*_*orn 71

请仔细阅读:https: //docs.djangoproject.com/en/dev/ref/contrib/staticfiles/

django.contrib.staticfilesINSTALLED_APPSsettings.py

DEBUG=False吗?如果是这样,您需要runserver使用--insecure参数调用:

python manage.py runserver --insecure
Run Code Online (Sandbox Code Playgroud)

collectstatic与通过开发服务器提供文件无关.它用于在一个位置收集静态文件,STATIC_ROOT供Web服务器查找.事实上,collectstatic使用你的STATIC_ROOT设置运行到一个路径STATICFILES_DIRS是一个坏主意.您应该仔细检查以确保您的CSS文件现在都存在.

  • 我有同样的问题,我找不到404.我能做什么? (6认同)
  • 是的,`django.contrib.staticfiles`在INSTALLED_APPS(我编辑了上面的问题),DEBUG = True,我用--insecure参数启动了服务器,但没有运气. (4认同)
  • 加载整页时,请观察runserver的输出.应该有/static/css/main.css的请求,它的状态代码应该是200. (4认同)
  • 尝试直接加载其中一个静态URL.是404还是500? (2认同)
  • 是的,我可以直接导航到css:http://127.0.0.1:8000 /static/css/main.css/.装得很好. (2认同)

All*_*ітy 22

使用Django 1.11.x +,您必须在settings.pyas中配置静态文件,

STATIC_URL = '/static/' # the path in url

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]
Run Code Online (Sandbox Code Playgroud)

并将其与静态模板标签一起使用,

{% load static %}
<link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
Run Code Online (Sandbox Code Playgroud)


ibo*_*man 5

另一个简单的尝试是停止,然后重新启动服务器,例如

$ python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

我查看了其他答案,但重启服务器对我有用.