Django-fr

Forum

#1 12-04-2014 21:58:24

BravPyth
Membre
Inscription : 12-04-2014
Messages : 8

Pareil mais différent

Bonjour,
Je débute l'apprentissage de Django et j'apprends avec un tutoriel. J'ai créé un projet (que j'ai appelé essai) et une application (que j'ai appelé blog). Dans l'application blog, j'ai créé un fichier urls.py.
Quand j'insère (le texte ci-dessous est un copié-collé):

from django.conf.urls import patterns, url
urlpatterns = patterns('blog.views',
    url(r'^accueil/$', 'home'),)

Cela me renvoie une erreur,
mais lorsque j'insère  (le texte ci-dessous est un copié-collé):

from django.conf.urls import patterns, url
urlpatterns = patterns('blog.views',
    url(r'^accueil/$', 'home'),)

cela fonctionne parfaitement!

Je ne vois pourtant aucune différence entre les deux. C'est la deuxième fois que ce genre de problème m'arrive et je n'arrive pas à comprendre d'où vient l'erreur.
Quelqu'un peut-il m'aider?
Merci

Hors ligne

#2 14-04-2014 06:47:42

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : Pareil mais différent

Sans la traceback, il y a peu de chance que l'on puisse t'aider.

Hors ligne

#3 14-04-2014 13:18:13

frankynov
Membre
Inscription : 11-04-2014
Messages : 6

Re : Pareil mais différent

Python est très, très capricieux en ce qui concerne le formatage du code.
Par exemple, si tu identes ton code avec des espaces puis avec des tabulations, tu as beaucoup de chance que ça foire tongue

Regarde bien tes tabulations. Tu utilises quel IDE ?

Hors ligne

#4 14-04-2014 14:55:20

BravPyth
Membre
Inscription : 12-04-2014
Messages : 8

Re : Pareil mais différent

Pour le traceback, voilà l'erreur renvoyée avec la 1ère version:

SyntaxError at /tnv/accueil/

Non-ASCII character '\xc2' in file /home/michel/ProjetsDjango/theatrenonviolent/tnv/urls.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details (urls.py, line 1)

Request Method:     GET
Request URL:     http://127.0.0.1:8000/tnv/accueil/
Django Version:     1.6.1
Exception Type:     SyntaxError
Exception Value:    

Non-ASCII character '\xc2' in file /home/michel/ProjetsDjango/theatrenonviolent/tnv/urls.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details (urls.py, line 1)

Exception Location:     /usr/local/lib/python2.7/dist-packages/django/utils/importlib.py in import_module, line 40
Python Executable:     /usr/bin/python
Python Version:     2.7.3
Python Path:    

['/home/michel/ProjetsDjango/theatrenonviolent',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gst-0.10',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-control-panel',
'/usr/lib/python2.7/dist-packages/ubuntuone-couch',
'/usr/lib/python2.7/dist-packages/ubuntuone-installer',
'/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']

Dernière modification par BravPyth (14-04-2014 14:57:59)

Hors ligne

#5 14-04-2014 15:10:49

BravPyth
Membre
Inscription : 12-04-2014
Messages : 8

Re : Pareil mais différent

Question environnement, je suis sous linux(ubuntu), j'ai installé IDLE (python 3.2) et j'utilise Django-1.6.1.

Hors ligne

#6 14-04-2014 15:18:54

frankynov
Membre
Inscription : 11-04-2014
Messages : 6

Re : Pareil mais différent

Rajoute ceci en tout début de fichier :
# coding=utf-8

Aussi, vérifie que tu as bien des ' ' et non des ``, des fois quand on copie-colle du code le formatage ne se fait pas très bien hmm

Dernière modification par frankynov (14-04-2014 15:20:29)

Hors ligne

#7 14-04-2014 15:29:44

BravPyth
Membre
Inscription : 12-04-2014
Messages : 8

Re : Pareil mais différent

# coding=utf-8 ne change rien (d'ailleurs je ne comprendrais pas pourquoi ça marcherait sans dans la 1ère version et pas dans la deuxième)
Les ' ' me paraissent bon, je viens de les retaper (touche du 4), même résultat.

Hors ligne

#8 14-04-2014 15:37:36

BravPyth
Membre
Inscription : 12-04-2014
Messages : 8

Re : Pareil mais différent

J'ai voulu poser la même question dans un autre forum, mais l'apparence sortant des deux versions n'étant pas les mêmes, j'ai laissé tombé. Cela peu peut-être apporté une réponse, parce que lorsque je regarde les codes html des deux textes qui étaient identiques au départ, le résultat est différent :

1ère version qui ne marche pas :
<pre class="western" style="margin-left: 1.25cm;"><code class="western"><span style="font-family: Comic Sans MS,cursive;"><span style="font-size: small;">from django.conf.urls import patterns, url</span></span></code>
<code class="western"><span style="font-family: Comic Sans MS,cursive;"><span style="font-size: small;">urlpatterns = patterns('tnv.views',</span></span></code>
<code class="western">    </code><span style="font-family: Comic Sans MS,cursive;"><code class="western"><span style="font-size: small;">url(r'^accueil/$', 'home'),)</span></code></span></pre>

2ième version :
<p class="western" style="margin-left: 1.25cm; margin-bottom: 0cm; font-style: normal; font-weight: normal; widows: 2; orphans: 2; text-decoration: none;" align="LEFT"><span style="font-family: Comic Sans MS,serif;"><span style="font-size: small;">from django.conf.urls import patterns, url</span></span></p>
<p class="western" style="margin-left: 1.25cm; margin-bottom: 0cm; font-style: normal; font-weight: normal; widows: 2; orphans: 2; text-decoration: none;" align="LEFT"><span style="font-family: Comic Sans MS,serif;"><span style="font-size: small;">urlpatterns = patterns('tnv.views',</span></span></p>
<p class="western" style="margin-left: 1.25cm; margin-bottom: 0cm; font-style: normal; font-weight: normal; widows: 2; orphans: 2; text-decoration: none;" align="LEFT"><span style="font-family: Comic Sans MS,serif;"><span style="font-size: small;">url(r'^accueil/$', 'home'),)</span></span></p>

Hors ligne

#9 14-04-2014 15:52:57

BravPyth
Membre
Inscription : 12-04-2014
Messages : 8

Re : Pareil mais différent

Je ne sais pas si cela permettra de trouver un moyen de résoudre ce problème, mais voici un autre essai qui montre la différence des deux textes en apparence semblable.
J'ai transformé mon fichier urls.py en urls.html et j'ai ouvert comme une page web. Dans la version qui ne marche pas apparaît des  un peu partout.
Voilà les résultats :
1ère version :
from django.conf.urls import patterns, url urlpatterns = patterns('tnv.views',     url(r'^accueil/$', 'home'),)

2ième version :
from django.conf.urls import patterns, url urlpatterns = patterns('tnv.views', url(r'^accueil/$', 'home'),)

Hors ligne

#10 14-04-2014 18:06:19

Djok
Membre
Inscription : 12-07-2012
Messages : 26

Re : Pareil mais différent

# -*- coding: utf-8 -*-

Oui bravepyth c'est un problème d'encodage. Est-ce que tu as lu la PEP signalée dans l'erreur

Pour ta première version ça ressemble à du latin-1 compris comme du utf-8.

Peux tu vérifier quel est l'encodage de ton IDE, car si tu déclare UTF-8 mais que ton IDE encode en latin-1 il faut changer son encodage (mieux) ou déclarer latin-1 comme encodage (moins bien)

Bon courage

Hors ligne

#11 14-04-2014 18:20:42

Djok
Membre
Inscription : 12-07-2012
Messages : 26

Re : Pareil mais différent

ah autant pour moi ta solution marche aussi franckynov...
A bien regarder ce que tu obtiens dans ton navigateur je pencherais plus pour des caractère à la con de Windows (genre espace insécable). Tu n'aurais pas fait un copie coller depuis libreoffice/openoffice ?

Comment tu as fait la deuxième version ? tu l'as tappé directement ?

Dernière modification par Djok (14-04-2014 18:26:20)

Hors ligne

#12 14-04-2014 19:22:53

BravPyth
Membre
Inscription : 12-04-2014
Messages : 8

Re : Pareil mais différent

J'ai effectivement fait un copié-collé depuis libreoffice...mais pour les deux versions! Comme j'apprends à utiliser Django, je me suis fait un document libreoffice avec la procédure à suivre étape par étape. Et comme j'ai recommencé plusieurs fois, j'ai copié ce qui marchait pour comparer à ce qui ne marchait pas et j'ai vu que c'était semblable en apparence. A plusieurs reprise en tapant directement, cela à résolu le problème.
J'ai lu la PEP signalée dans l'erreur mais cela ne me permet pas de comprendre pourquoi deux textes en apparence identiques sont différents et comment faire pour savoir si deux textes sont réellement identiques.

Hors ligne

#13 14-04-2014 20:22:46

Djok
Membre
Inscription : 12-07-2012
Messages : 26

Re : Pareil mais différent

Oui en effet ton problème est différent. Le message d'erreur laissait penser à un problème d'encodage. Quoiqu'il en soit :

  • c'est un bonne habitude de déclarer un encodage en début d'un source python

  • il faut maîtriser son encodage du début à la fin en Python, dans les sources d'une part mais aussi dans tous ce qui manipule les caractères

Pour ton problème :

Les suites bureautiques ajoutent des caractères invisibles pour la mise en page. Il faut éviter les copier-coller depuis de telles sources. Je ne sais pas si il est possible d'expurger ce type de caractères ou si on peut spécifier à libreoffice de ne pas en ajouter. C'est vrai que c'est étonnant que la deuxième version n'en contienne pas... Tu utilises quoi comme éditeur ? Vu que sous X il existe trois presse-papiers les différences pourraient venir du fait que tu as utilisé un presse-papier différent à chaque fois (bouton du milieu).

Les caractères invisibles c'est une vraie cata surtout dans une base données pour une application web. donc prudence avec le copier-coller...

Bonne soirée à toi

Dernière modification par Djok (14-04-2014 20:26:12)

Hors ligne

#14 15-04-2014 15:42:06

BravPyth
Membre
Inscription : 12-04-2014
Messages : 8

Re : Pareil mais différent

Comme éditeur j'utilise gedit et pour copier coller de libre office writer à gedit, je fais ctrl C puis ctrl V.

Merci de vos réponses,  même si je ne sais pas comment l'éviter, je commence à comprendre d'où vient le problème. Je me vois mal me passer du copier-coller, je pense qu'il y aurait encore plus d'erreurs dues aux erreurs de frappe. Je ferais avec.

Hors ligne

Pied de page des forums