Is there a Flask or Jinja2 configuration flag / extension to automatically minify the HTML output after rendering the template?
Using extends we can inherit templates as well as variables.
render_template is a Flask function from the flask. templating package. render_template is used to generate output from a template file based on the Jinja2 engine that is found in the application's templates folder. Note that render_template is typically imported directly from the flask package instead of from flask.
Found a better way to do this. You can minify all your pages with this method:
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
Have a look here https://github.com/cobrateam/django-htmlmin#using-the-html_minify-function
I realise it is mainly used for django but the example shows how to use this projects code to do what you want with a flask view, i think.
I use the following decorators
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
And simply wrapped the default render_template function like so
if app.debug:
flask.render_template = prettify(flask.render_template)
else:
flask.render_template = uglify(flask.render_template)
This has the added benefit of being auto added to the cache, since we don't actually touch app.route
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With