无需更改链接到静态文件的方式,仍然可以使用
url_for('static',filename='myfile.txt')。将默认静态视图替换为重定向到CDN(如果已配置)的视图。
from urllib.parse import urljoin# or for python 2: from urlparse import urljoinfrom flask import [email protected]('static')def static(filename): static_url = app.config.get('STATIC_URL') if static_url: return redirect(urljoin(static_url, filename)) return app.send_static_file(filename)
无论您是在开发机器上还是在生产机器上,都将
STATIC_URLconfig值设置为CDN,并且对静态文件的请求将在此处重定向。
重定向相对便宜,并且被浏览器记住。如果您发现性能受到它们的显着影响,则可以编写一个在使用CDN时直接链接的函数。
@app.template_global()def static_url(filename): static_url = app.config.get('STATIC_URL') if static_url: return urljoin(static_url, filename) return url_for('static', filename=filename)
该
template_global装饰使得所有可用模板的功能。代替
url_for需要静态文件的URL时使用它。
可能已经有一个Flask扩展程序可以为您执行此 *** 作。例如,Flask-S3提供了一个服务
url_for,用于提供来自AWS
S3的静态文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)