Tester Django - modifier ses modèles
Par J.Ducastel le lundi 19 novembre 2007, 17:16 - Artefacts - Lien permanent
Ce week-end, j'ai repris mes tests de
Django, un framework web
en Python. (Ou comment occuper
son week-end par temps pourri et grève des transports). Histoire de me
simplifier la vie et remettre à plus tard l'installation et la configuration de
MySQL sur mon Mac, j'ai opté pour le stockage SQLite (qui est inclus d'office).
Voici un bref compte-rendu, ainsi qu'une petite astuce pour les premiers stades
d'un développement avec Sqlite
Tout naturellement, je suis parti dans la ré-implémentation incrémentale
d'un de mes projets PHP. Ce qui signifie commencer avec des modèles de données
très simples, et les enrichir au fur et à mesure. Avec Django, la définition
des modèles de données se fait par la rédaction de classes modèles, et la
création des tables de la base se fait via un utilitaire en ligne de commande :
python manage.py syncdb.
Or cette commande ne crée que les tables n'existant pas encore et ne met pas
à jour la structure des tables existantes, ce qui fait que très vite on se
retrouve avec des tables dont la structure ne correspond plus au modèle, et une
erreur du type no such column. J'ai cru un instant que la commande
python manage.py flush vidait la base et donc supprimait les
tables, mais elle ne vide apparemment que les données et conserve la structure
des tables existantes.
C'est là qu'une fois de plus, Firefox m'a
servi de couteau suisse du développement. En cherchant un utilitaire pour
inspecter le contenu de la base Sqlite, je suis tombé SQLite
Manager, une extension permettant d'administrer entièrement une base Sqlite
! Du coup, ça m'a permis de supprimer la table associée à chaque fois que je
modifiais un modèle, et la recréer ensuite via syncdb.
Pour ce qui est de Django, je ne suis pas déçu. Cela faisait longtemps que je le surveillais du coin de l'oeil, et même un peu plus puisque j'ai réalisé une implémentation partielle de son moteur de templates en PHP (actuellement incluse dans webappkit, mon système de paquetages pour applis web PHP). En pratique, c'est encore mieux qu'attendu et la qualité et la richesse de la documentation y est pour quelque chose. Ainsi bien sûr que les qualités du language Python, qui a pas mal d'avance sur PHP a la fois en fonctionnalités et en cohérence.
Quelques liens supplémentaires :
- Django-fr, proposant une partie de la documentation en français
- Django Book un livre en ligne (a paraitre prochainement)
- The B-list un blog très riche en informations et astuces de développement.
- Mes signets Django sur Magnolia comme ça je ne recopie pas tous mes liens ici ;)

Commentaires
Merci pour l'extension Sqlite, je cherchais ça depuis longtemps sans prendre le temps de le faire !