我知道对此有很多 问题,但似乎没有一个对我有帮助。 这是场景。
我有一个网站,在我一直在研究的 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 是如何知道去哪里寻找的,我如何帮助它指向正确的方向?
提前感谢大家的帮助。我知道这似乎是一个重复的问题,但我在这里找到的所有其他问题都没有太大帮助。我已经有一段时间了,只是想摆脱它。