dimanche 25 novembre 2007
Premiers pas de Django
Par Sun Wukong, dimanche 25 novembre 2007 à 16:51 :: Python
Django est un framework de développement d'applications Web pour le langage Python. C'est LE framework des perfectionnistes, ainsi qu'il se définit ;-).
Pour l'heure, ce ne sont plus exactement mes pas. Mais à chaque tentative précédente, j'avais débordé d'ambition, tentant d'apprendre le framework en même temps que le langage, en partant à chaque fois bille en tête avec un modèle de données relativement complexe. De quoi se décourager. Aussi, cette fois, je vais me fixer des objectifs simples et complexifier au fur et à mesure, par itération. Agile, soyons agile !
Je vais par la suite consigner ici les problèmes rencontrés dans mon développement afin de pouvoir en garder une trace et de diminuer les temps de blocage ultérieurs quand je retomberai sur ces difficultés.
Je pars d'un modèle simple : une table unique, implémentant un choix assez large de type de données différents qui me permettront de voir plusieurs type de contrôles dans les forms générées. Au niveau de la dynamique, j'implémente les classiques opérations CRUD. J'aimerais bien me lancer dans une architecture REST, convaincu par la lecture du blog du Biologeek, mais là aussi, je me préfère me forcer au plus simple pour revenir là-dessus plus tard.
Dans un premier temps, je vais donc implémenter une Personne, comprenant de nombreuses caractéristiques (nom, prénom, pseudo, email, website, instantmsg, naissance, sexe, adresse, codepostale, ville, pays, telrtc, telfax, telgsm) et créer les pages nécessaires pour créer, éditer, consulter, rechercher et supprimer une instance de Personne.
Dans un deuxième temps, je rattacherai cette entité à l'entité User de l'application d'authentification intégrée à Django et rendrai mon site accessible uniquement aux utilisateurs enregistrés.
Dans un troisième temps, je créerai une autre entité possédant une relation avec Personne, comme une Entreprise par exemple. Doucement mais sûrement, sinon je suis encore capable de pondre un modèle de CRM complet et de m'y noyer. On fera la CRM plus tard 
Voici donc au fil du temps les problèmes sur lesquels j'ai buté.
If you happen to land here with Google Airlines and that you think the answer of your problem is here, burried under French words, you can contact me in English. Chinese may also be an alternative.
Les paramètres de base de données sont renseignés dans le fichier settings.py, à la racine du projet. Pour ma part, j'ai opté pour PostgreSQL, probablement la meilleure base de données relationnelle opensource. Et j'ai rapidement buté sur un message d'erreur : « psycopg2.OperationalError: FATAL: authentification Ident échouée pour l'utilisateur « dev » » Et oui, PostgreSQL a le bon goût d'être en français, une localisation parmi de très nombreuses autres. Pour le coup, Google ne m'a pas trop aidé, mais j'ai réussi à identifier le problème. Si Django indique que « Set to empty string for localhost. » il s'est avéré que dans mon cas, ce n'était pas le cas : bien que travaillant en local, le paramètre DATABASE_HOST doit bien être renseigné à localhost. Il faudra donc se méfier des affirmations futures 