Ceci est une ancienne révision du document !
Python et quart
Framwork Python pour Flask-like !
serveur web, websocket, jinja templates, et des trucs pour de l'“asynchrone que c'est bien”. (asyncio)
Installation
Dans un virtualenv :
pip install quart
Et aussi, si on veut ajouter les variables d'environnement :
pip install python-dotenv
Démarrage
Basique, simple :
from quart import Quart app = Quart(__name__) @app.route("/") async def hello(): return "Hello, World!" if __name__ == "__main__": app.run(debug=True)
Démarrage plus élaboré
from quart import Quart, render_template, request, url_for, current_app, redirect async def admin() -> str: if request.method == "GET": return await render_template('admin.html',appconfig=current_app.config) if request.method == "POST": form = await request.form try: actionadmin = form["actionadmin"] except BadRequestKeyError: actionadmin = "" return await render_template('admin.html',actionadmin=actionadmin,appconfig=current_app.config) async def index() -> str: return await render_template('index.html',appconfig=current_app.config) def create_app(mode='Development') -> Quart: app = Quart(__name__) app.config.from_object(f"config.{mode}") with open("settings.toml", "r") as f: app.config.update(toml.load(f)) app.add_url_rule("/", view_func=index, methods=['GET']) # fonction index # GET is allowed here only to redirect to / app.add_url_rule("/admin/", view_func=admin, methods=['POST', 'GET']) # fonction admin return app if __name__ == '__main__': app = create_app() app.run(host='127.0.0.1', debug=True)
Et démarrage en mode production avec :
QUART_APP=app:create_app && quart run
Et démarrage en mode Dev avec :
QUART_APP=app:create_app && QUART_DEBUG=1 && quart run
Ou à placer dans un .env :
QUART_APP=app:create_app QUART_DEBUG=1
et lancer un :
source .env && quart run