Skip to main content
 首页 » 编程设计

python之使用 Flask 处理 css 文件中的 url

2025年05月04日15jyk

我目前正在对 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,但我完全不推荐这样做。