Sam & Max: Python, Django, Git et du cul » template http://sametmax.com Deux développeurs en vadrouille qui se sortent les doigts du code Wed, 05 Feb 2014 14:20:37 +0000 en hourly 1 http://wordpress.org/?v=3.3.1 Cog, l’anti langage de template Python http://sametmax.com/cog-lanti-langage-de-template-python/ http://sametmax.com/cog-lanti-langage-de-template-python/#comments Mon, 27 Jan 2014 17:45:38 +0000 Sam http://sametmax.com/?p=8903 Cog est un outil Python en ligne de commande qui permet d'insérer du code Python dans un fichier, afin qu'il génère une partie de ce fichier]]> Cog est un outil Python en ligne de commande qui permet d’insérer du code Python dans un fichier, afin qu’il génère une partie de ce fichier.

A priori, ça ressemble à un langage de template. Là où ça diffère, c’est que cog ne cherche pas à générer un fichier différent, il insère le code généré dans le fichier original, et garde le code de génération.

Exemple, vous avez envie d’insérer un warning en haut de plusieurs fichiers de code. Vos choix :

  • Copier-coller le warning.
  • Créer un script de build qui insère le warning.

L’alternative des bricoleurs qui ont juste besoin de quelques insertions, c’est Cog. Par exemple, votre fichier contient :

# [[[cog for l in open('warning.txt'): cog.out("# " + l) ]]]
# [[[end]]]
 
import vostrucs
 
vostrucs.faire_vos_machins()

Après un cog.py -r votre_fichier.py, votre fichier sera :

# [[[cog for l in open('warning.txt'): cog.out("# " + l) ]]]
# Attention, ceci est un avertissmement super important.
# Ce logiciel ne vient avec aucune garantie. Il vomira dans votre salon.
# Violera votre femme, lui collera l'hépatite C et offrira un CD de one direction
# à vos enfants.
# [[[end]]]
 
import vostrucs
 
vostrucs.faire_vos_machins()

cog vient avec plusieurs options, par exemple la possibilité de retirer le code de génération ou de lire le précédent texte généré depuis le code de génération.

La véritable force de l’outil c’est qu’il peut utiliser n’importe quel module Python, et donc générer du texte à partir d’un contenu en ligne ou un fichier CSV. Il est d’ailleurs né parce que l’auteur était codeur C et avait besoin de générer du code à partir d’un fichier XML.

Le seul défaut de Cog, c’est que c’est verbeux. Et moche.

flattr this!

]]>
http://sametmax.com/cog-lanti-langage-de-template-python/feed/ 4
Django, une app à la fois – faire une app de base http://sametmax.com/django-une-app-a-la-fois-faire-une-app-de-base/ http://sametmax.com/django-une-app-a-la-fois-faire-une-app-de-base/#comments Sat, 18 Jan 2014 15:22:24 +0000 Sam http://sametmax.com/?p=8789 Ca faisait longtemps que je n’avais pas fait avancer le projet django, an app at a time.

Voici donc un nouveau morceau qui montre comment écrire une petite app de base avec un template et une vue réutilisables qui serviront donc dans les prochaines apps du projet.

Comme d’hab, vous pouvez récupérer le code sur la teub de Guy et il y a une version française et anglaise.

flattr this!

]]>
http://sametmax.com/django-une-app-a-la-fois-faire-une-app-de-base/feed/ 2
Ignorer certains caractères spéciaux dans un template django http://sametmax.com/ignorer-certains-caracteres-speciaux-dans-un-template-django/ http://sametmax.com/ignorer-certains-caracteres-speciaux-dans-un-template-django/#comments Mon, 09 Dec 2013 07:04:51 +0000 Sam http://sametmax.com/?p=8268 Hier Max me demandait comment mettre un template Javascript dans un template Django s’ils utilisent la même syntaxe.

La réponse : utiliser le tag “verbatim” :

{% verbatim %}
  Mettre ici le code que django doit afficher tel quel, sans interpréter.
{% endverbatim %}

flattr this!

]]>
http://sametmax.com/ignorer-certains-caracteres-speciaux-dans-un-template-django/feed/ 6