2

使用 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/static/css/bootstrap.css

给了我一个合适的 CSS 内容

怎么回事?它们在同一个文件夹中并且具有相同的用户/权限/组

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

更新:

它不是从“项目/静态”提供文件,而是从应用程序文件夹下的静态文件夹提供文件,我通过删除一个应用程序下的静态文件夹来解决这个问题 - 文件开始给出 404。如果我禁用 AppDirectoriesFinder 也是如此。但它仍然不一致,一些应用程序即使从应用程序文件夹下的“静态”也不提供文件。

我的理想情况是:AppDirectoriesFinder 被注释掉并且所有文件都来自myProject/static/

4

2 回答 2

3

您不能只将文件拖放到项目的 /static 文件夹中。Django 不会“看到”该目录中的文件,除非它们是通过 collectstatic 从应用程序中收集的。您将收到 404 尝试访问您手动放入的文件。

您需要将静态文件放入应用程序的 /static 目录中(如果它不属于特定应用程序,只需创建一个新文件,例如“main”或“website”)。

或者,您可以为 Django 设置 STATICFILES_DIRS 以在调用 collectstatic 时搜索其他目录。

于 2019-01-29T18:31:32.873 回答
2

我有同样的问题。这是我的解决方案:

将此添加到您的 settings.py

STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    #"django.contrib.staticfiles.finders.AppDirectoriesFinder"
)

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
) 
于 2014-01-22T10:49:16.280 回答