Django - gestion des caractères accentués dans les modèles
Par NiCoS le lundi 16 avril 2007, 22:13 - Python - Django - Lien permanent
Si vous avez qqc du genre :
class Skill(models.Model): SKILL_LEVEL_CHOICES = ( ('beginner' : 'Débutant'), ('intermediate' : 'Intermédiaire'), ('advanced' : 'Avancé'), ) ...
et que lorsque vous utilisez :
python manage.py validate
vous avez une jolie erreur du type :
mvmo.cv: Non-ASCII character '\xc3' in file /home/django/mvmo/../mvmo/cv/models. py on line 111, but no encoding declared; see http://www.python.org/peps/pep-026 3.html for details (models.py, line 111)
Hé bien cela est du aux accents !
Pour résoudre cette erreur, il vous suffit de placer en tête de votre fichier models.py :
# -*- coding: utf-8 -*-
Vous pouvez remplacer utf-8 par un autre jeu d'encodage : latin-1, iso-8859-15, iso-8859-1, ascii, etc.
Et le tour est joué.
Commentaires
Bonne remarque ! C'est vrai que normalement, on devrait toujours spécifié l'encodage en début de fichier...
but no encoding declared; see http://www.python.org/peps/pep-0263...
En même temps, Python est déjà bien explicite et l'URL ultra complète
Certes certes, mais c'est la première fois que j'ai le problème et que cela est requis dans un de mes projets Django. On aurait pu en outre imaginer que Django fasse de la magie autour de l'encodage et gère cela tout seul...
En tous cas, c'est vrai que le message d'erreur donne déjà des idées et l'url la solution finale. J'aurais pu ne pas faire ce billet, mais bon au moins, comme ça, c'est écrit qqpart
.
en faite je crois que c'est plutôt :
non ?
Pas si on en croit la PEP-0263
Ben ouai mais :
alros on fait quoi ???
Ah oui oups pardon, c'est corrigé
Je pensais que tu parlais du
#qui a été en fait interprété par dotclear comme liste numérotée