我目前正在对 css 文件中的所有 url 进行硬编码。这是其中的一行。
.logo { background: url(**../imgs/logo.png**) no-repeat 0 10px; width: 169px; height: 40px; }
我的 html 文件中的所有其他 url 都是通过 Flask 的 url_for 函数提供的。我也尝试将其应用于我的 css 文件,但它不起作用。我假设这是因为当 html 文件从浏览器请求它们时,会获取 css 文件。
那么有没有办法通过 Flask 处理 css 中的 url?如果有,我应该吗?
以防万一我的目录结构大概是
static/
css/
fonts/
imgs/
js/
templates/
uploads/
app.py and models.py and git, db, procfile etc...
请您参考如下方法:
不,没有,这是有原因的。 CSS 文件及其类似文件(JS、img 等)作为静态文件提供。事实上,您应该从 CDN 或至少从 nginx 为它们提供服务(它执行缓存 header 、压缩等)。
正确方法:直接将 nginx 静态 url 指向静态文件夹。将 CSS、HTML 中的所有 URL 更改为指向 /static/css/.., /static/js/ ... 等等。这将使它们基于 URL 而不是基于文件。最后将服务器代理到在更高端口上运行的 Flask。 (当我靠近计算机时,我会在此发布配置,但您可以在网上找到很多)。
不推荐的方式:提供动态 URL eg/assets/<file-name>/然后加载该文件,通过 Jinja 或您正在使用的任何模板解析器传递它。通过这种方式,您可以使用模板标签来获取完整的 URL,但我完全不推荐这样做。
