Migration de ce blog vers Django
By AkH, 1 year, 9 months ago, modified Oct. 7, 2008
J'y pensais depuis longtemps, créer mon moteur de blog pour y faire ce que je voulais, c'est fait.
Ce blog tourne maintenant grace à Django, c'est un très bon apprentissage pour qui veut apprendre Django.
Les détails techniques ici.
Refaire un produit comme dotclear 2, qui faisait tourner ce blog est un projet ambitieux, un blog c'est certes simple, mais finalement plein de petites choses viennent s'ajouter au projet.
Je trouvais peut être un peu trop copieux le travail à produire seul pour au moins égaler en fonctionnalité (du moins sur le rendu des articles) le travail de plusieurs mois qui a été réalisé sur Dotclear.
Et pourtant, c'est possible avec un outil comme Django, le projet a démarré grâce au blog biologeek qui avait réalisé ce travail et ouvert les sources de son projet, à la lecture du code on trouve tout clair simple et envisageable.
Il ne manquait plus qu'un peu de courage et de se lancer.
Le premier travail a été de récupérer le modèle de données de Dotclear 2 et de construire un modèle qui me convienne, donc de créer des scripts de migration, là encore Biologeek avait des scripts pour dotclear 1 que j'ai modifiés pour dotclear2.
Vu que je suis tout simplement nul en CSS et HTML, j'ai repris les templates rendues et intégrés directement dans Django, c'est surtout pendant cette phase que j'ai cru le projet possible, Django permet de rapidement extraire et afficher ses données, où l'on veut comme on veut, on se retrouve en qqs heures avec un site qui fonctionne.
Restait les commentaires, l'admin, l'optimisation.
- Je n'ai pas voulu utiliser le framework comment, parce que je le trouvais trop magique et n'arrivais pas à comprendre comment je pouvais le modifier notamment pour y ajouter un captcha recaptcha.
Après trois itérations, je suis passé d'un IntegerField pour stocker l'id de l'objet Article, à une GenericRelation et finir par me rendre compte que j'avais reproduit à peu de chose près le framework comment de Django, (ce qui m'a aidé: j'allais dans le bon sens)
- J'aime beaucoup l'admin de Django, elle permet vite de jouer avec ses données et d'avoir une représentation vivante des différents liens que les objets peuvent avoir entre eux.
Malheureusement l'admin ne peut pas tout faire, enfin c'est ce qu'on se dit au début en voulant telle ou telle fonctionnalité, depuis la 1.0, beaucoup de chose ont évolué et l'intégration de css et js sans toucher au template (je suis tjs nul en css) à tout changer, j'ai donc pu y intégrer tiny_mce.
Merci aussi à la récente addition de GenericTabularInline qui permet de voir directement les commentaires associés à un article.
- Le rendu me semble plutôt rapide mais il fallait optimiser mon site pour supporter la charge monumentale de ce blog (mes qqs potes, mes quatre lecteurs et ma mère qui adore Django), là encore la simplicité d'utilisation du framework cache fait la différence, on cache les éléments long a calculer directement depuis la template.
J2E a beaucoup a apprendre ;)
Beaucoup de projets annexes appportent énormément de nouvelles fonctionnalites à Django mais aussi à Python, sur ce projet j'ai utilisé:
Il reste encore à faire pour égaler certaines fonctionnalités de dotclear2, comme le changement de template CSS, mais je n'en ai pas besoin (je suis tjs aussi nul en CSS).
For fun j'ai même pu ajouter des fonctionnalités comme la nationalité des commentaires.
"Avec Django vous êtes capable de tout", on dirait presque une pub, mais si qqun comme moi qui a tjs refusé de coder pour le web a pu faire ce truc, aussi simple soit il, vous devriez pouvoir faire beaucoup.
J'en ai aussi profité pour virer Mysql, étrange surprise mes outils de migration sont devenus plus rapide avec Postgresql, et le moteur fait bien plus, comme le projet postgis... L'outil d'admin pgAdmin3 est génial et aide à passer le cap en douceur (existe aussi pour le mac).
L'installation tourne sur mod_wsgi qui est tout simplement parfait à l'utilisation et rapide, je posterai là dessus bientôt, adieu donc mod_php et bonjour ma mémoire libre.
Merci à tous les devs Django !


Comments
Allez avoue que tu touches des tunes chaque fois qu'un mec va sur le site de django depuis ce site :)
Assez d'accord avec toi sur l'efficacité de django pour faire des appli web peu à moyennement complexe rapidement. Reste à voir sur des grosses appli web comment il peut se différencier des autres.
Bravo en tout ça pour ce blog. Quand est-ce que tu le mets en open source pour qu'on puisse se former (grâce à ton super code ^-^) et contribuer au projet ?
Ciao
Ok j ai des actions Django mais en ce moment elles ne valent plus grand chose :)
Ouvrir le code pourquoi pas mais la réalité c'est que tout cela reste a priori inexploitable, non documenté, pas industrialisé.
Faudrai au moins que je publie le script de migration pour dotclear2, mais là encore c'est un truc que j'ai fait en une passe, avec des morceaux en awk.
Je préfère ajouter de nouvelles fonctionnalités complètement inutiles :)
Et puis j'ai deja contribue a django rappellez vous cette superbe contribution ! :)Félicitations pour le boulot.
Tu fais un peu de prosélitisme Django mais c'est pas grave =)
L'inconvénient des frameworks notamment type MVC, c'est que (comme disait un de mes profs d'info) c'est un peu trop auto-magique. Il vaut mieux se palucher la doc de l'api pour savoir ou on va et ce qu'on fait avec les données.
Par contre je me félicite de voir que t'as switché vers postgres :D
Merci ! :)
Django a une philosophie très Pythonienne (lance un interpreter python et tape "import this"), justement la magie n'est pas la bienvenue.
Mais tu as raison, souvent dans les API haut niveau, l'on finit par plus très bien savoir ce que l'on fait, les bases de Django sont très cleans, le code source du framework est lisible et compréhensible (fait pareil avec un framework web Java), ce qui gravite autour de Django l'est forcément moins
La preuve il y a un bug dans ce formulaire, j'ai eu une erreur 500, du code ecrit par ... moi :)
Postgres j'utilisais il y a bien longtemps et la vie, la pression sociale, la bêtise humaine m'avaient fait retombé entre les mains pleines de verrues de Mysql ;)
ha je l ai pas venu venir celui là, en voulant corriger mes fautes d'orthographe dans mon commentaire, j ai tout pété :)
Y a du boulot !
Pfiou j'ai fixe 2 bugs, vous avez rien vu :p
Moi j'ai rien vu et j'ai rien compris non plus... ou presque :)
Hummppf j'arrive trop tard avec mon script de migration que je t'avais presque promis ;)
Il faut qu'on cause !! t'as des morceaux qui m'intéresse et je dois avoir des morceaux d'autres trucs qui t'intéresse autour des sujets blog|gallery|facebook|openid dans du django ;)
Heu sinon réduire django a un framework MVC me semble faux. Ce n'est pas que cela et les capacités O/R mapping sont bien conçues (et suffisamment stabilisées depuis la 1.0 dans certains détails comme les GenericRelation) ...
postgresql ou autre n'est qu'un détail, Mais le bon choix n'est pas mysql ;)
Some time before, I really needed to buy a good car for my firm but I didn't have enough money and could not buy anything. Thank heaven my friend proposed to try to take the <a href="http://lowest-rate-loans.com">loans</a> from reliable bank. Therefore, I did so and used to be happy with my secured loan.