使用 Flask 处理 css 个文件中的 url
Handling urls in css files with Flask
我目前正在对 css 文件中的所有网址进行硬编码。这是其中的一行。
.logo { background: url(**../imgs/logo.png**) no-repeat 0 10px; width: 169px; height: 40px; }
我的 html 文件中的所有其他 url 都是通过 Flask 的 url_for 函数提供的。我也尝试将此应用于我的 css 文件,但它不起作用。我假设这是因为 css 文件是在 html 文件从浏览器请求它们时获取的。
那么有没有办法通过 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 为它们提供服务(它确实缓存 headers、压缩等)。
正确方法:直接将 nginx static url 指向静态文件夹。将 CSS、HTML 中的所有 URL 更改为指向 /static/css/.., /static/js/
... 等等。这将使它们基于 URL 而不是基于文件。最后将服务器代理到更高端口上的 Flask 运行。
(当我靠近电脑时,我会 post 配置这个,但你可以在网上找到很多)。
Non-recommended 方式:提供动态 URL 例如 /assets/<file-name>/
然后加载该文件,通过 Jinja 或您正在使用的任何模板解析器传递它。这样你就可以使用模板标签来获得完整的 URLs 但我根本不推荐这样做。
我目前正在对 css 文件中的所有网址进行硬编码。这是其中的一行。
.logo { background: url(**../imgs/logo.png**) no-repeat 0 10px; width: 169px; height: 40px; }
我的 html 文件中的所有其他 url 都是通过 Flask 的 url_for 函数提供的。我也尝试将此应用于我的 css 文件,但它不起作用。我假设这是因为 css 文件是在 html 文件从浏览器请求它们时获取的。
那么有没有办法通过 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 为它们提供服务(它确实缓存 headers、压缩等)。
正确方法:直接将 nginx static url 指向静态文件夹。将 CSS、HTML 中的所有 URL 更改为指向 /static/css/.., /static/js/
... 等等。这将使它们基于 URL 而不是基于文件。最后将服务器代理到更高端口上的 Flask 运行。
(当我靠近电脑时,我会 post 配置这个,但你可以在网上找到很多)。
Non-recommended 方式:提供动态 URL 例如 /assets/<file-name>/
然后加载该文件,通过 Jinja 或您正在使用的任何模板解析器传递它。这样你就可以使用模板标签来获得完整的 URLs 但我根本不推荐这样做。