我目前正在硬编码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)
不,没有,而且有原因.CSS文件及其喜欢的内容(JS,img等)作为静态文件提供.事实上,你应该从CDN或至少从nginx服务它们(它确实缓存标题,压缩等).
正确的方法:直接将nginx静态URL指向静态文件夹.将CSS中的所有URL,HTML更改为指向/static/css/.., /static/js/...等等.这将使它们基于URL而不是基于文件.最后将服务器代理到运行在更高端口上的Flask.(当我靠近电脑时,我会发布配置,但你可以在网上找到很多).
非推荐方式:提供动态URL,例如/ assets/<file-name>/然后加载该文件,将其传递给Jinja或您正在使用的任何模板解析器.这样您就可以使用模板标记来获取完整的URL,但我根本不建议这样做.
| 归档时间: |
|
| 查看次数: |
3874 次 |
| 最近记录: |