Bonjour Forge Images¶
Objectif : premier contact avec le module opt-in forge-mvc-images et ce
qu'il sait traiter.
Ce que vous allez apprendre : vérifier que le module Images répond, et
inspecter ses capacités — les formats d'image autorisés
(ALLOWED_IMAGE_EXTENSIONS) et les tailles des variantes générées
(IMAGE_VARIANT_SIZES). Aucune base de données, aucun fichier : on découvre
simplement comment Forge Images est branché.
Premier palier du niveau débutant de la progression images (vue d'ensemble des starters).
Module opt-in
Ce starter suppose le module installé. forge-mvc-images dépend de
forge-mvc-files et il est publié sur PyPI depuis 1.0.0-beta.13
(pip install --pre forge-mvc-images, palier « Installation » de ce
parcours, en tête de progression). Le cœur de Forge reste autonome ; l'image
est une brique que l'on ajoute à la demande.
Ce que ce starter montre¶
- une route texte de premier contact (
GET /images-welcome) ; - la lecture des constantes du module (
ALLOWED_IMAGE_EXTENSIONS,ALLOWED_IMAGE_MIME_TYPES,IMAGE_VARIANT_SIZES) ; - la sérialisation JSON de ces capacités (
GET /images-welcome/inspect).
Aucune écriture, aucune base de données.
Classes Forge utilisées¶
| Classe / fonction | Rôle dans ce starter | Référence |
|---|---|---|
forge_mvc_images.ALLOWED_IMAGE_EXTENSIONS |
Formats d'image acceptés à l'upload. | Médias |
forge_mvc_images.IMAGE_VARIANT_SIZES |
Tailles des variantes générées (medium, thumbnail). |
Médias |
Response.text / Response.json |
Renvoyer du texte puis du JSON. | Response |
Tester¶
Ouvrez https://localhost:8000/images-welcome : la page affiche
« Bonjour Forge Images ». Puis https://localhost:8000/images-welcome/inspect
renvoie les formats acceptés et les tailles de variantes en JSON.
Le contrôleur¶
# mvc/controllers/images_welcome_controller.py
from forge_mvc_images import (
ALLOWED_IMAGE_EXTENSIONS,
ALLOWED_IMAGE_MIME_TYPES,
IMAGE_VARIANT_SIZES,
)
def _capabilities() -> dict:
return {
"allowed_extensions": sorted(ALLOWED_IMAGE_EXTENSIONS),
"allowed_mime_types": sorted(ALLOWED_IMAGE_MIME_TYPES),
"variant_sizes": {
name: list(size) for name, size in IMAGE_VARIANT_SIZES.items()
},
}
class ImagesWelcomeController(BaseController):
@staticmethod
def index(request: Request) -> Response:
return Response.text("Bonjour Forge Images")
@staticmethod
def inspect(request: Request) -> Response:
return Response.json(_capabilities())
Comprendre ce code¶
- Les constantes
ALLOWED_IMAGE_*sont la liste blanche du module : tout ce qui n'y figure pas est refusé à l'upload. On les expose ici pour découvrir ce que Forge Images accepte. IMAGE_VARIANT_SIZESdécrit les déclinaisons que le module génère automatiquement à l'upload :medium(1280×1280) etthumbnail(300×300).- Les
frozensetsont triés (sorted(...)) pour une sortie JSON stable.
À retenir¶
- Le module Images est opt-in : on l'installe à la demande, le cœur reste autonome.
- Les formats acceptés et les tailles de variantes sont explicites, lisibles via des constantes du module.
- Inspecter les capacités d'une brique avant de l'utiliser est un bon réflexe.
Après ce starter¶
Premier contact établi. La suite : téléverser une vraie image.