L’expérience est une lanterne que l’on porte sur le dos et qui n’éclaire jamais que le chemin parcouru. Confucius

Aller au contenu | Aller au menu | Aller à la recherche

jeudi, 24 novembre 2011

Django - Dénormalisation d'un queryset

Dans quelques rares cas, l'ORM de Django ne suffit plus. Lorsque votre requête est spécifique il existe plusieurs solutions que j'expose dans cet article illustré par le tri de liste.

Lire la suite...

mercredi, 23 novembre 2011

Django - QuerySetManager - Bonnes pratiques

J'ai déjà parlé de l'intérêt des querySetManager et de leur mise en place dans un projet Django. Désormais avec un peu de recul et l'intervention d'Olivier Meunier (l'homme aux milles pseudonymes), il semble plus pertinent d'externaliser la création du manager et du queryset. C'est à dire, pour l'exemple ci-dessous, définir tout ce joyeux code en dehors de la classe "Project".

Lire la suite...

jeudi, 15 septembre 2011

Django : Trier vos utilisateurs par ordre alphabétique

Il existe probablement d'autres solutions. Dans cet article je vous donne les clés pour réussir à trier correctement les utilisateurs par nom et prénom. L'exercice est assez simple lorsque l'utilisateur a renseigné correctement son identité, c'est à dire "Nom et Prénom". Cela devient plus chaotique, quand un seul des champs est renseigné.

Lire la suite...

dimanche, 11 septembre 2011

Template Tag pour Django extended choices

Voici un simple tag à copier coller dans votre projet afin d'utiliser très simplement "extended choices" côté template. Cet article est un complément de Django Extented Choices.

Edit : 15/10/2011 Il existe une méthode directement intégrée à Django : https://docs.djangoproject.com/en/dev/ref/models/instances/#extra-instance-methods. (Merci Dom). Cette méthode suffira dans la majorité des cas, sinon voir exemple ci-dessous.

Lire la suite...

jeudi, 8 septembre 2011

Annuler un git push

Astuce rapide :

  1. Obtenir le numéro de version des commits grâce à la commande git log -2
  2. Créer une patch entre la dernière version du dépot et la version -1 : git diff <version_anterieure> <version_actuelle> > 01.patch.
  3. Appliquer le patch inversé : patch -p1 -R < 01.patch
  4. "Comiter" puis envoyer de nouveau vers le dépôt central : git ci -a -m "Annulation dernier push" puis git push

Note : Il me semble qu'avec git diff <version_actuelle> <version_anterieure> > 01.patch, il n'est pas utile d'utiliser la commande -R lors de l'application du patch

mardi, 16 août 2011

Django extended choices

Django extended choices permet de gérer avec simplicité et efficacité les constantes au sein d'une application Django. Cet article fait suite à la publication de J-Mad.

Lire la suite...

lundi, 11 juillet 2011

Récursivité au sein d'un template django

Pas de nouveauté fracassante, juste l'exemple d'une syntaxe simple et dépouillée présentant la récursivité du côté des templates. L'exemple présente l'affichage d'une liste de commentaires en cascade. Cf Screenshot. (Valide Django 1.2)

Lire la suite...

mercredi, 30 mars 2011

Effectuer un "Pull request" dans bitbucket

Mercurial est un logiciel de gestion de versions décentralisée libre. Bitbucket est un service web d'hébergement et de gestion de développement de logiciels, utilisant le programme Mercurial alias hg. L'article explique comment effectuer le fameux "pull request" sur son dépôt local.

Lire la suite...

mardi, 29 mars 2011

Effectuer un "Pull request" dans github

Git est un logiciel de gestion de versions décentralisée. GitHub est un service web d'hébergement et de gestion de développement de logiciels, utilisant le programme Git. L'article explique comment effectuer le fameux "pull request" sur son dépôt local.

Lire la suite...

vendredi, 25 mars 2011

Django : Personnaliser la page d'erreur CSRF

Pour se défendre des attaques CSRF, Django contient les outils indispensables. Cet article donne la recette pour gérer soi-même le rendu de la page d'erreur liée à ce type d'attaque.

Lire la suite...

mercredi, 23 mars 2011

Performances : Fichier de configuration OVH

Rien de nouveau mais il parait que Google prend en compte la performance des sites Web comme critère de qualité et donc de référencement. Quoiqu'il soit si vous ne faites pas d'optimisation pour les moteurs de recherche faites le pour vos utilisateurs. Cinq secondes pour afficher une page seront toujours plus agréables que dix. L'article ne sera ni théorique ni technique, je fournis simplement une recette, notamment valable pour les hébergement mutualisés OVH.

Lire la suite...

dimanche, 7 novembre 2010

Installation de django-debug-toolbar sur Ubuntu / Nginx

Django-debug-toolbar fait partie des outils indispensables du développeur django. C'est un formidable outil permettant de traquer les entrées-sorties de votre application ( requêtes http, requêtes bdd, sessions...). Comme à chaque fois, il existe plusieurs solutions pour installer des paquets python. Cet article présente l'installation de la django-debug-toolbar depuis les dépôts Ubuntu. Aussi, il vous sera grès d'adapter le passage "configuration" selon le type d'installation que vous avez effectué.En effet, les fichiers ne s'installent pas tous au même endroit.

Attention, l'ensemble des manipulations qui vont suivre peuvent rendre votre système d'exploitation Ubuntu instable. L'utilisation du compte admistrateur (commande sudo...) suscitent des risques pour lequel je décline toute responsabilité.

Lire la suite...

jeudi, 21 octobre 2010

Django Managers, Queryset Managers. Récupérer vos retraités rapidement.

Si je voulais faire simple et rapide je vous conseillerais de lire la documentation Django sur les Managers ainsi que la version 1.2. Tout est très bien expliqué. Je me permets ici de réexpliquer rapidement l'intérêt de la chose et de présenter une autre approche, tout aussi intéressante des querysets managers.

Lire la suite...

vendredi, 2 avril 2010

Django, internationaliser un "template tag"

De base la commande python manage.py makemessages -l fr permet de générer un fichier .po contenant les chaines à traduire. C'est pratique et puissant, car très rapidement, toutes chaines prêtes à être traduite dans les actions (views.py), les formulaires (forms.py), les modèles (models.py), les templates (*.html).. se retrouvent listées.
Le hic, c'est que cette commande est incapable de détecter les chaines à traduire dans nos templates tag perso. Il faut alors ajouter la bonne expression régulière au sein du code Django.

Modifier le code Django

Il y a probablement beaucoup plus propre mais voici la démarche :

  1. Localiser l'installation de django dans votre système ( via locate django)
  2. Localiser le fichier trans_real.pyc
  3. Ajouter une nouvelle expression régulière dans ce fichier
  4. Ajouter l'appel à l'expression régulière
  1. Editer le fichier : sudo vim /usr/local/lib/python2.6/dist-packages/django/utils/translation
  2. Ligne 406 ajouter : voir code -> permet de détecter les chaines de la forme {% sheet_field mon_objet "chaine à traduire" %}
  3. Ligne 462 ajouter : imatch2 = inline_re2.match(t.contents)
  4. Ligne 469 ajouter : voir code

Logiquement via la commande python manage.py makemessages -l fr de nouvelles chaines doivent être repérées. Sinon la compilation du fichier .po en fichier .mo reste identique via la commande python manage.py compilemessages . PS : J'utilise généralement poedit ou un simple éditeur de texte pour traduire les chaines et vous ?

 

vendredi, 22 janvier 2010

Utiliser bpython au sein de django pour Ubuntu

Django logo bugSuite au commentaire de Narbonne sur l'article d'hier "Quelques outils utiles pour django" je livre aujourd'hui la rapide manipulation permettant d'utiliser bpython avec django. Bpython est un terminal python avancé. En temps réel il colore, indente, propose les méthodes liées aux objets courants, via l'introspection. Il contient un historique, et des commandes rapides pour enregistrer et "pastebiner" le contenu du terminal sans le quitter. Bref on gagne du temps.

Lire la suite...

mercredi, 20 janvier 2010

Quelques outils utiles pour django sous Ubuntu - "Debugging"

Django logo bugTravaillant désormais depuis plus de neuf mois avec le framework django sur le prochain logiciel Opquast, je me permets, aujourd'hui, de fournir très modestement quelques retours d'expérience. Naturellement, toutes les étapes, les logiciels présentés ci-dessous sont compatibles avec la distribution Ubuntu. Pour MacOsX de simples adaptations semblent suffisantes, enfin pour Windows je vous laisse canoter. Cet article présente l'ensemble des outils me permettant de "débugger", tester plus rapidement du code "django / python". Attention, l'ensemble des manipulations qui vont suivre peuvent rendre votre système d'exploitation Ubuntu instable. L'utilisation du compte admistrateur (commande sudo...) suscitent des risques pour lequel je décline toute responsabilité.

Lire la suite...

mardi, 28 avril 2009

Django : Eliminer les doublons, utilisation de group by

Nous avons parfois besoin d'éviter les doublons en sortie de requête. Il existe plusieurs solutions afin obtenir satisfaction.

  • distinct()
  • values()
  • values_list()

Lire la suite...

mardi, 14 avril 2009

[Django 1.0] Commande automatique personnalisée

Pouvoir utiliser des commandes automatiques pour créer un script sql à partir d'un document json, obtenir un dump de la base, créer un projet .. bref c'est déjà bien pratique, mais développer ses propres commandes (en 5 minutes) c'est autre chose. je me permets ici de décrire rapidement sous forme d'item la marche à suivre. Cet article a pour principal but la découverte des commandes personnalisées en django.

Lire la suite...

lundi, 13 avril 2009

Participer au projet django-fr, traduction de la documentation depuis Ubuntu

django-logo-negative.resized.pngSi la majorité des informations sont disponibles sur la page bitbucket dédiée, il reste cependant quelques zones d'ombre pour les débutants souhaitant s'investir sur django-fr. J'oubliais, pour participer au projet de traduction, nul besoin d'être un cador du python ou autre langage. Ce qui suit se veut être un mode d'emploi pour tous les utilisateurs d'Ubuntu.

Lire la suite...

lundi, 23 février 2009

Exemple de requête préparée avec PHP5 et mysqli

Comme un exemple vaut mieux qu'un long discours, voici une illustration des requêtes préparées sous forme objet avec mysqli

Lire la suite...

- page 1 de 3