Texte alternatif et ordre¶
Objectif : rendre la galerie accessible et ordonnée en éditant deux champs d'une image : son texte alternatif et sa position.
Ce que vous allez apprendre : update_media_alt_text renseigne le texte lu
par les lecteurs d'écran (alt_text), update_media_position fixe l'ordre
d'affichage (position). Deux écritures ciblées sur une ligne media.
Troisième palier du niveau intermédiaire de la progression images.
Module opt-in et table media
Ce starter suppose forge-mvc-images installé (palier « Installation ») et
la table media appliquée (forge migration:apply). Si elle manque, la
page reste pédagogique.
Ce que ce starter montre¶
- la liste des images d'une entité avec un formulaire d'édition par image ;
update_media_alt_textpour l'accessibilité ;update_media_positionpour l'ordre d'affichage.
Classes Forge utilisées¶
| Classe / fonction | Rôle dans ce starter | Référence |
|---|---|---|
forge_mvc_images.list_media_for_entity |
Lister les images à éditer. | Médias |
forge_mvc_images.update_media_alt_text |
Renseigner le texte alternatif. | Médias |
forge_mvc_images.update_media_position |
Fixer l'ordre d'affichage. | Médias |
Tester¶
Ouvrez https://localhost:8000/image-alt-order, renseignez un texte alternatif
et une position, enregistrez : la galerie reflète l'ordre et l'accessibilité.
Le contrôleur¶
# mvc/controllers/image_alt_order_controller.py
from forge_mvc_images import (
list_media_for_entity,
update_media_alt_text,
update_media_position,
)
_ENTITY_NAME = "gallery-demo"
_ENTITY_ID = 1
class ImageAltOrderController(BaseController):
@staticmethod
def update(request: Request) -> Response:
media_id = request.form("media_id")
alt_text = request.form("alt_text")
position = request.form("position")
update_media_alt_text(int(media_id), alt_text or None)
update_media_position(int(media_id), int(position or 0))
return ImageAltOrderController._render(request, updated=f"Image #{media_id} mise à jour.")
Comprendre ce code¶
alt_textest un enjeu d'accessibilité : un lecteur d'écran l'annonce à la place de l'image. Le module le limite à 255 caractères.positionpilote l'ordre :get_media_gallerytrie dessus, l'effet est donc immédiat à l'affichage.- Les deux écritures ciblent une ligne précise par son identifiant
media_id.
À retenir¶
- Une galerie sérieuse est accessible (
alt_text) et ordonnée (position). update_media_alt_textetupdate_media_positionmodifient une lignemediaciblée.- L'ordre fixé ici est respecté par
get_media_gallery.
Après ce starter¶
Vous avez fait le tour du niveau intermédiaire : rattacher, afficher, ordonner.