【问题标题】:Django Static Files - 404Django 静态文件 - 404
【发布时间】:2013-08-23 00:57:06
【问题描述】:

我知道有一个lotofquestionsonthis,但他们似乎都没有帮助我。这是场景。

我有一个网站,在我一直在研究的 Windows 上使用 IIS 上的 Django Web 框架。为了部署静态文件,我一直在使用框架的 collectstatic 功能来收集静态文件。它的这方面工作正常。从我的settings.py:

STATIC_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), 'static'))

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    'C:/work/wincrash/dev/dev/analysis/static',
)

运行 collect static 成功地从 C:/work/wincrash/dev/dev/analysis/static 拉取我所有的静态文件,并将它们放在站点根目录的 /static/ 文件夹中。

我在尝试加载网页上的静态文件时出现问题。这是我的 base.html 页面中的一个 sn-p,它在每个页面上都加载。以下静态文件均未加载,失败并出现 404 错误:

<link type="text/css" href="{{ STATIC_URL }}media/css/custom-theme/jquery-ui-1.8.22.custom.css" rel="Stylesheet" /> 
<script type="text/javascript" src="{{ STATIC_URL }}media/js/jquery/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}media/js/jquery/jquery-ui-1.8.22.custom.min.js"></script>

<!-- Base css sheet -->
<link rel="stylesheet" href="{{ STATIC_URL }}media/css/base.css" type="text/css" media="all" />

渲染 HTML 时的结果如下:

<link type="text/css" href="/static/media/css/custom-theme/jquery-ui-1.8.22.custom.css" rel="Stylesheet">
<script type="text/javascript" src="/static/media/js/jquery/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="/static/media/js/jquery/jquery-ui-1.8.22.custom.min.js"></script>
<!-- Base css sheet -->
<link rel="stylesheet" href="/static/media/css/base.css" type="text/css" media="all">

所以我想我要问的是什么阻止了这些文件被加载?是 Django 框架吗?是 IIS 吗? IIS 日志显示未找到所有静态文件的 404。为什么是这样? IIS 是如何知道去哪里寻找的,我如何帮助它指明正确的方向?

提前感谢大家的帮助。我知道这似乎是一个重复的问题,但我在这里找到的所有其他问题都没有太大帮助。我已经有一段时间了,只是想跳过它。

【问题讨论】:

    标签: django iis static


    【解决方案1】:

    我想通了。

    我猜您的静态文件夹中需要一个 web.config 文件,以便 IIS 找到为静态文件提供服务的静态文件夹。当我将具有以下内容的 web.config 文件放在拥有所有静态文件的静态文件夹中时,它立即起作用。

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
        <handlers>
          <!-- 
          This removes Helicon Zoo handler and makes IIS processing static files.
          -->
          <remove name="django.project#x64" />
          <remove name="django.project#x86" />
        </handlers>
      </system.webServer>
    </configuration>
    

    【讨论】:

      【解决方案2】:

      尝试将 {% load staticfiles %} 添加到您的模板中

      https://docs.djangoproject.com/en/dev/howto/static-files/#configuring-static-files

      【讨论】:

        猜你喜欢
        • 2012-09-30
        • 2020-10-17
        • 2014-06-07
        • 1970-01-01
        • 2017-06-05
        • 2018-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多