是否有Flask或Jinja2的配置标志/扩展来在渲染模板后自动缩小HTML输出?
是否有Flask或Jinja2的配置标志/扩展来在渲染模板后自动缩小HTML输出?
我发现了一种更好的方法来实现这一点。您可以使用此方法对所有页面进行压缩:
from flask import Flask
from htmlmin.main import minify
app = Flask(__name__)
@app.after_request
def response_minify(response):
"""
minify html response to decrease site traffic
"""
if response.content_type == u'text/html; charset=utf-8':
response.set_data(
minify(response.get_data(as_text=True))
)
return response
return response
请看这里:https://github.com/cobrateam/django-htmlmin#using-the-html_minify-function
我知道它主要用于Django,但是示例展示了如何使用该项目代码来处理Flask视图的需求,我认为。
setup.py
文件仍然需要 Django。 - H.D.我使用以下修饰器
import bs4
import functools
import htmlmin
def prettify(route_function):
@functools.wraps(route_function)
def wrapped(*args, **kwargs):
yielded_html = route_function(*args, **kwargs)
soup = bs4.BeautifulSoup(yielded_html, 'html.parser')
return soup.prettify()
return wrapped
def uglify(route_function):
@functools.wraps(route_function)
def wrapped(*args, **kwargs):
yielded_html = route_function(*args, **kwargs)
minified_html = htmlmin.minify(yielded_html)
return minified_html
return wrapped
if app.debug:
flask.render_template = prettify(flask.render_template)
else:
flask.render_template = uglify(flask.render_template)
htmlmin
中的装饰器? - bfontainepip install flask-htmlmin
进行安装,源代码可在https://github.com/hamidfzm/Flask-HTMLmin上找到。希望它能对您有所帮助。使用装饰器。
from htmlmin.decorator import htmlmin
@htmlmin
def home():
...
或者你可以直接使用:
re.sub(r'>\s+<', '><', '<tag> </tag>') # results '<tag></tag>'
a <b>big</b> <i>fat</i> <s>edit</s> here
压缩后,输出结果为a <b>big</b><i>fat</i><s>edit</s> here
--空格已被删除。 - smitellifrom flask import Flask
from htmlmin.minify import html_minify
app = Flask(__name__)
@app.route('/')
def home():
rendered_html = render_template('home.html')
return html_minify(rendered_html)
re
模块来完成这个任务:return sub(r'\s{2,}|[\r\n]', '', render_template('blah.html'))
... 什么使得minify特别? - Vasili Syrakisfrom flask import Flask
import htmlmin
app = Flask(__name__)
@app.route('/')
def home():
rendered_html = render_template('home.html')
return htmlmin.minify(rendered_html)
https://htmlmin.readthedocs.io/en/latest/quickstart.html
最小化的HTML仍然会在标签之间保留一些空格。如果我们想要删除它,那么在渲染模板时需要添加remove_empty_space=True
属性。return htmlmin.minify(rendered_html, remove_empty_space =True)
在2022年,我发现使用minify-html包取得了更好的成功:https://github.com/wilsonzlin/minify-html
minify_html.minify(
"""
html here
""",
minify_js=True,
minify_css=True,
remove_processing_instructions=True,
)