使用Flask处理css文件中的URL

김민준*_*김민준 1 python flask

我目前正在硬编码css文件中的所有网址.这是其中许多行中的一行.

.logo { background: url(**../imgs/logo.png**) no-repeat  0 10px; width: 169px; height: 40px;  }
Run Code Online (Sandbox Code Playgroud)

我的html文件中的所有其他网址都是通过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...
Run Code Online (Sandbox Code Playgroud)

Sai*_*ram 6

不,没有,而且有原因.CSS文件及其喜欢的内容(JS,img等)作为静态文件提供.事实上,你应该从CDN或至少从nginx服务它们(它确实缓存标题,压缩等).

正确的方法:直接将nginx静态URL指向静态文件夹.将CSS中的所有URL,HTML更改为指向/static/css/.., /static/js/...等等.这将使它们基于URL而不是基于文件.最后将服务器代理到运行在更高端口上的Flask.(当我靠近电脑时,我会发布配置,但你可以在网上找到很多).

非推荐方式:提供动态URL,例如/ assets/<file-name>/然后加载该文件,将其传递给Jinja或您正在使用的任何模板解析器.这样您就可以使用模板标记来获取完整的URL,但我根本不建议这样做.