3

我知道对此很多 问题但似乎没有一个对我有帮助 这是场景。

我有一个网站,在我一直在研究的 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 页面中的一个片段,它在每个页面上都加载。以下静态文件均未加载,失败并出现 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 是如何知道去哪里寻找的,我如何帮助它指向正确的方向?

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

4

2 回答 2

2

我想到了。

我猜你需要在你的静态文件夹中有一个 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>
于 2013-08-23T16:59:09.543 回答
0

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

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

于 2013-08-23T03:20:16.050 回答