我目前正在对CSS文件中的所有网址进行硬编码。这是其中许多的一行。
.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服务它们(它确实缓存标头,压缩等)。
正确的方法:将nginx静态网址直接指向静态文件夹。将CSS,HTML中的所有URL更改为指向/static/css/.., /static/js/
...等。这将使它们基于URL,而不是基于文件。最后,将服务器代理到在更高端口上运行的Flask。(当我靠近计算机时,我会在此发布配置,但您可以在网上找到很多东西)。
不推荐的方式:提供一个动态URL,例如/ assets/<file-name>/
,然后加载该文件,将其通过Jinja或您使用的任何模板解析器传递。这样,您可以使用模板标记来获取完整的URL,但是我完全不建议这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句