flask导出html,从Jinja2的模板瓶应用压缩HTML输出(Minify HTML output from Flas

是否有一个瓶或Jinja2的配置标记/扩展自动运行如下渲染模板后的HTML输出?

Answer 1:

看看这里https://github.com/cobrateam/django-htmlmin#using-the-html_minify-function

我知道它主要用于Django的,但示例演示如何使用此项目的代码做你想要什么用烧瓶观点,我觉得。

Answer 2:

找到一个更好的办法来做到这一点。 您可以运行如下用这种方法你所有的网页:

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

Answer 3:

使用装饰。

from htmlmin.decorator import htmlmin

@htmlmin

def home():

...

或者,你可以使用:

re.sub(r'>\s+ ') # results ''

Answer 4:

我写了一个烧瓶延伸来实现这一目的。 您可以通过安装它pip install flask-htmlmin和源可在https://github.com/hamidfzm/Flask-HTMLmin 。 希望这将是有益的。

Answer 5:

我用下面的装饰

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

并简单地包裹着,像这样的默认render_template功能

if app.debug:

flask.render_template = prettify(flask.render_template)

else:

flask.render_template = uglify(flask.render_template)

这已经添加到缓存的是汽车的额外好处,因为我们实际上并不接触app.route

Answer 6:

为了扩大从@olly_uk答案和@Alexander评论的实用性,它看来, Django的htmlmin扩展现在被设计与Django的比其他框架中使用。

从文档在这里 ,您可以手动使用html_minify功能瓶的观点,就像这样:

from 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)

Answer 7:

修改为htmlmin的最新版本@Bletch答案。

from 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)

https://htmlmin.readthedocs.io/en/latest/reference.html

文章来源: Minify HTML output from Flask application with Jinja2 templates

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值