2017-04-26 04:10:46 +01:00
|
|
|
# Render templates in a Flask like way from a "template" directory in
|
|
|
|
# the project
|
2016-12-13 06:18:33 +00:00
|
|
|
|
|
|
|
from sanic import Sanic
|
2017-04-11 21:34:55 +01:00
|
|
|
from sanic import response
|
2017-04-26 04:10:46 +01:00
|
|
|
from jinja2 import Environment, PackageLoader, select_autoescape
|
2016-12-13 06:18:33 +00:00
|
|
|
|
2017-05-28 07:37:41 +01:00
|
|
|
import sys
|
|
|
|
# Enabling async template execution which allows you to take advantage
|
|
|
|
# of newer Python features requires Python 3.6 or later.
|
|
|
|
enable_async = sys.version_info >= (3, 6)
|
|
|
|
|
|
|
|
|
2016-12-13 06:18:33 +00:00
|
|
|
app = Sanic(__name__)
|
|
|
|
|
2017-04-16 13:50:07 +01:00
|
|
|
# Load the template environment with async support
|
|
|
|
template_env = Environment(
|
2017-04-26 04:10:46 +01:00
|
|
|
loader=PackageLoader('jinja_example', 'templates'),
|
|
|
|
autoescape=select_autoescape(['html', 'xml']),
|
2017-05-28 07:37:41 +01:00
|
|
|
enable_async=enable_async
|
2017-04-16 13:50:07 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
# Load the template from file
|
|
|
|
template = template_env.get_template("example_template.html")
|
|
|
|
|
|
|
|
|
2016-12-13 06:18:33 +00:00
|
|
|
@app.route('/')
|
|
|
|
async def test(request):
|
2017-04-26 04:10:46 +01:00
|
|
|
rendered_template = await template.render_async(
|
|
|
|
knights='that say nih; asynchronously')
|
2017-04-16 13:50:07 +01:00
|
|
|
return response.html(rendered_template)
|
2016-12-13 06:18:33 +00:00
|
|
|
|
|
|
|
|
2017-04-26 04:10:46 +01:00
|
|
|
app.run(host="0.0.0.0", port=8080, debug=True)
|