使用django 1.5
我得到了这样配置的静态文件:
STATIC_ROOT = '/home/<user>/Projects/<name>/static'
STATIC_URL = '/static/'
我刚刚运行manage.py collectstatic
目录列表:
static/css
static/css/bootstrap.css
static/css/addressbook.css
static/css/bootstrap-responsive.css
static/css/rewrite.css
static/css/login.css
我输入的时候 localhost:8000 / static / css / addressbook.css我得到了404
但:
本地主机:8000 /静态/ CSS / bootstrap.css
给了我一个合适的CSS内容
WTF?它们位于同一文件夹中,具有相同的用户/权限/组
部分来自menage.py runserver输出:
[24/Jul/2013 12:18:19] "GET /static/css/addressbook.css HTTP/1.1" 404 1663
[24/Jul/2013 12:19:16] "GET /static/css/login.css HTTP/1.1" 200 533
[24/Jul/2013 12:20:12] "GET /static/css/addressbook.css HTTP/1.1" 404 1663
[24/Jul/2013 12:32:51] "GET /static/css/bootstrap.css HTTP/1.1" 304 0
更新
它提供的文件不是来自“project / static”,而是来自应用程序文件夹下的静态文件夹 我通过在一个应用程序下删除静态forder来解决这个问题 - 文件开始给出404.如果我禁用AppDirectoriesFinder,则相同。 但它仍然不一致一些应用程序甚至不从应用程序文件夹下的“静态”提供文件。
我的理想情况是:AppDirectoriesFinder已注释掉,所有文件都来自myProject/static/
答案 0 :(得分:1)
我遇到了同样的问题。这是我的解决方案:
将此添加到您的settings.py
STATICFILES_FINDERS = (
"django.contrib.staticfiles.finders.FileSystemFinder",
#"django.contrib.staticfiles.finders.AppDirectoriesFinder"
)
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
答案 1 :(得分:1)
您不能仅将文件拖放到项目的/ static文件夹中。 Django不会“查看”该目录中的文件,除非它们是通过collectstatic从应用程序中收集的。您将收到一个404,尝试访问您手动放入其中的文件。
您需要将静态文件放入应用程序的/ static目录(如果它不属于特定应用程序,则只需创建一个新文件,例如“ main”或“ website”)。
或者,您可以将STATICFILES_DIRS设置为Django,以便在调用collectstatic时搜索其他目录。