madamasterclass.com

📔 Tutoriel - Bottle

Tutoriel de base sur le framewok bottle 🥂

Introduction au Framework Bottle pour Python

Bottle est un micro-framework WSGI léger et rapide pour Python. Parfait pour les API RESTful, les prototypes et les petites applications web, il se distingue par sa simplicité et son absence de dépendances externes.

Logo Bottle Framework
1 Installation

Bottle peut être installé simplement via pip (Python 3.6+ requis) :

pip install bottle

Alternative : Bottle peut aussi être utilisé en copiant simplement le fichier bottle.py dans votre projet, car c'est un framework mono-fichier.

2 Première application

Créez un fichier app.py avec le contenu suivant :

from bottle import route, run

@route('/')
def home():
    return "Hello World!"

run(host='localhost', port=8080, debug=True)

Exécutez avec : python app.py puis visitez http://localhost:8080

3 Routage avancé

Bottle supporte différents types de paramètres dans les URLs :

# Paramètre simple
@route('/hello/<name>')
def greet(name):
    return f"Bonjour {name}!"

# Paramètre avec filtre (nombre entier)
@route('/article/<id:int>')
def show_article(id):
    return f"Article #{id}"

# Paramètre avec filtre (expression régulière)
@route('/static/<filepath:path>')
def serve_static(filepath):
    return static_file(filepath, root='/path/to/static/files')
4 Méthodes HTTP et formulaires

Gestion des différentes méthodes HTTP et données de formulaire :

from bottle import request, post, get

@get('/login')  # ou @route('/login', method='GET')
def login_form():
    return '''<form action="/login" method="post">
                Utilisateur: <input name="username" type="text" />
                Mot de passe: <input name="password" type="password" />
                <input value="Login" type="submit" />
              </form>'''

@post('/login')  # ou @route('/login', method='POST')
def login_submit():
    username = request.forms.get('username')
    password = request.forms.get('password')
    return f"Connexion de {username} réussie!"
5 Système de templates

Bottle inclut un moteur de templates simple mais puissant :

from bottle import template

@route('/hello/<name>')
def greet(name):
    return template('hello_template', username=name)

Créez un fichier hello_template.tpl :

<!DOCTYPE html>
<html>
<head>
    <title>Page de bienvenue</title>
</head>
<body>
    <h1>Bonjour {{username}}!</h1>
    <p>Vous visitez cette page le {{date}}</p>
</body>
</html>
6 Création d'une API REST

Exemple simple d'API REST avec retour JSON :

from bottle import route, run, response
import json

fruits = [
    {"id": 1, "name": "Pomme", "quantity": 10},
    {"id": 2, "name": "Banane", "quantity": 15}
]

@route('/api/fruits', method='GET')
def get_fruits():
    response.content_type = 'application/json'
    return json.dumps(fruits)

@route('/api/fruits/<id:int>', method='GET')
def get_fruit(id):
    fruit = next((f for f in fruits if f['id'] == id), None)
    if fruit:
        response.content_type = 'application/json'
        return json.dumps(fruit)
    else:
        response.status = 404
        return json.dumps({"error": "Fruit non trouvé"})
7 Déploiement en production

Pour déployer en production, utilisez un serveur WSGI comme Gunicorn :

# Installation de Gunicorn
pip install gunicorn

# Lancement du serveur
gunicorn -w 4 -b 0.0.0.0:8080 app:app

Ou avec le serveur intégré (pour le développement seulement) :

run(host='0.0.0.0', port=8080, server='paste')
Conclusion

Bottle est un excellent choix pour :

  •                 1️⃣ Prototypes rapides
  •                 2️⃣ Microservices et petites API
  •                 3️⃣ Applications avec des dépendances minimales
  •                 4️⃣ Apprentissage des concepts web avec Python

Pour aller plus loin, consultez la documentation officielle.

Activité 1 - Site statique

Dans cette activité, vous allez créer un petit site statique en utilisant le framework Bottle. Ce site comportera plusieurs pages, notamment une page d'accueil, une page "À propos" et une page de contact.

1. Installation de Bottle

Si ce n'est pas déjà fait, installez Bottle en utilisant la commande suivante :

⌨️  
pip install bottle
2. Création de l'application

Créez un fichier Python nommé app.py et ajoutez le code suivant pour créer votre application :

⌨️  
from bottle import Bottle, run, template

app = Bottle()

@app.route('/')
def home():
return template('home')

@app.route('/about')
def about():
return template('about')

@app.route('/contact')
def contact():
return template('contact')

run(app, host='localhost', port=8080)
3. Création des templates

Créez un dossier nommé views et ajoutez-y trois fichiers HTML :

  •                 1️⃣ home.tpl
  •                 2️⃣ about.tpl
  •                 3️⃣ contact.tpl

Voici un exemple de contenu pour chaque fichier :

3.1. Fichier home.tpl
<h1>Bienvenue sur notre site</h1>
<p>Ceci est la page d'accueil.</p>
<a href="/about">À propos</a> <|> <a href="/contact">Contact</a>
3.2. Fichier about.tpl
<h1>À propos</h1>
<p>Informations sur notre site.</p>
<a href="/">Retour à l'accueil</a>
3.3. Fichier contact.tpl
<h1>Contact</h1>
<p>Formulaire de contact à venir.</p>
<a href="/">Retour à l'accueil</a>
4. Lancer l'application

Pour lancer votre application, exécutez le fichier app.py :

python app.py

Ouvrez votre navigateur et allez à http://localhost:8080 pour voir votre site en action !

5. Conclusion

Vous avez maintenant créé un petit site statique avec Bottle. Vous pouvez étendre ce projet en ajoutant plus de pages, des formulaires et même une base de données pour stocker des informations !

Activité 2 - Site dynamique

Dans cette activité, vous allez créer un site dynamique en utilisant le framework Bottle. Ce site comportera un formulaire permettant aux utilisateurs de soumettre des informations, que vous pourrez afficher sur une page de confirmation.

1. Installation de Bottle

Si ce n'est pas déjà fait, installez Bottle en utilisant la commande suivante :

⌨️  
pip install bottle
2. Création de l'application

Créez un fichier Python nommé app.py et ajoutez le code suivant pour créer votre application dynamique :

⌨️  
from bottle import Bottle, run, template, request

app = Bottle()

@app.route('/')
def home():
return template('form')

@app.route('/submit', method='POST')
def submit():
name = request.forms.get('name')
email = request.forms.get('email')
return template('confirmation', name=name, email=email)

run(app, host='localhost', port=8080)
3. Création des templates

Créez un dossier nommé views et ajoutez-y deux fichiers HTML :

  • form.tpl
  • confirmation.tpl

Voici un exemple de contenu pour chaque fichier :

3.1. Fichier form.tpl
<h1>Formulaire de Contact</h1>
<form action="/submit" method="post">
  <label for="name">Nom :</label><br>
  <input type="text" name="name" required><br>
  <label for="email">Email :</label><br>
  <input type="email" name="email" required><br>
  <input type="submit" value="Soumettre">
</form>
3.2. Fichier confirmation.tpl
<h1>Confirmation</h1>
<p>Merci, <strong>{{name}}</strong>!</p>
<p>Votre email : <strong>{{email}}</strong></p>
<a href="/">Retour au formulaire</a>
4. Lancer l'application

Pour lancer votre application, exécutez le fichier app.py :

python app.py

Ouvrez votre navigateur et allez à http://localhost:8080 pour voir votre site en action ! Remplissez le formulaire et soumettez-le pour voir la page de confirmation.

5. Conclusion

Vous avez maintenant créé un site dynamique avec un formulaire en utilisant Bottle. Cette base peut être étendue pour inclure des fonctionnalités supplémentaires comme la validation des données, l'enregistrement dans une base de données, et plus encore !

Forum(s) associé(s)

Page: