django中的一些静态文件服务404当其他没有任何想法为什么?

时间:2013-07-24 10:36:50

标签: django static-files django-1.5

使用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/

2 个答案:

答案 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时搜索其他目录。