【问题标题】:Some static files in django serve 404 when other dont- any ideas why?django 中的一些静态文件服务于 404,而其他人不知道为什么?
【发布时间】:2013-07-23 18:49:39
【问题描述】:

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

但是:

localhost:8000/static/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

更新:

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

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

【问题讨论】:

  • 你检查.css文件权限了吗?
  • DEBUG 设置的值是多少?
  • 我检查了权限,DEBUG 为真

标签: django static-files django-1.5


【解决方案1】:

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

你需要把静态文件放到一个app的/static目录下(如果它不属于某个特定的应用程序,只需创建一个新的,例如“main”或“website”) ")。

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

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。这是我的解决方案:

    将此添加到您的 settings.py

    STATICFILES_FINDERS = (
        "django.contrib.staticfiles.finders.FileSystemFinder",
        #"django.contrib.staticfiles.finders.AppDirectoriesFinder"
    )
    
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'static'),
    ) 
    

    【讨论】:

    • 请问是什么原因造成的?你能描述一下吗? (也帮助了我)
    猜你喜欢
    • 2013-01-26
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 2012-09-30
    • 2020-10-17
    相关资源
    最近更新 更多