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 !