我在 django 1.6 中有一个网页,现在我有一个 html、swf、js 的在线目录。当我直接打开它的目录时它工作正常(http://myotherapp.com/mydirectory)it 在内部调用 index.html 并且一切正常,因为它具有相对 url,但是当我将它托管在 django 中时使用不同的 url 例如 http://myapp.com/publication/1 它不会得到相对附加的任何 css 和 js。我知道我可以更改 index.html 中的文件路径,但是会有更多这样的包,网站的最终用户无法处理这个。
我正在通过 django 管理应用程序管理压缩目录。
现在我有一个解决方法。我上传压缩包,将其解压缩到我的 media/static 目录,我使用正则表达式修改上传和解压缩的 index.html js/css/swf 相对路径到绝对但如果做这个在线目录的公司将改变结构或添加新文件它不会工作,因为我按名称搜索这样的相对 url:“book.swf”或“js/books.swf”,然后我将其更改为绝对。问题是我不能让它更灵活,因为在 html 中有很多 JS 代码(这些 css/js/swf 文件的名称也在 JS 中使用)。
现在的示例网址:http://myapp.com/publication/1 ,它使用从我的媒体目录上传的 index.html 作为模板。
这个解决方案并不完美,因为例如它不能用 js 重新定位到 mobile/index.html 并显示目录的移动版本。
但是如何以 django/python 方式进行生产呢?
请您参考如下方法:
您必须从 HTTP 服务器提供静态文件,将其配置为与 settings.py 文件中的 STATIC_URL 设置相关。
确保您已将这些静态文件放在本地静态应用程序的目录中。
然后运行 ./manage.py collectstatic 将这些文件检索到 STATIC_ROOT 目录,它们将从那里提供。
在您的模板中,您应该使用如下静态文件:
{% load static %}
<img src='{% static "my_app/myexample.jpg" %}' alt='someimg'>
自动引用您关于静态文件的设置配置。
