IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Erreur sur instruction if


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Snooky68
    Homme Profil pro
    Développeur Web/Python/PHP
    Inscrit en
    Mai 2006
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web/Python/PHP
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 273
    Par défaut Erreur sur instruction if
    Salut à tous,

    Je suis en train de développez un truc sous django et j'ai un gros problème sur le template! J'ai l'erreur suivante sur une simple instruction if qui me leve une exception TemplateSyntaxError. Exception Value: 'if' statement improperly formatted

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {% if 1 == 1 %}
        <p>truc</p>
    {% endif %}
    En revanche si je fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {% if 1 %}
        <p>truc</p>
    {% endif %}
    Tout se passe très bien.

    C'est donc un if tout se qu'il y a de plus basic! Le "vrai" if ne serra bien sur pas de cette forme, mais même comme sa j'ai l'erreur!

    Quelqu'un a-t-il une idée pour ce problème?

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    c'est quoi l'intêret de faire 'if 1 == 1' ?

  3. #3
    Membre éclairé Avatar de Snooky68
    Homme Profil pro
    Développeur Web/Python/PHP
    Inscrit en
    Mai 2006
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web/Python/PHP
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 273
    Par défaut


    Le "vrai" if ne serra bien sur pas de cette forme
    Lorsque j'ai un problème, j'ai pour habitude de simplifier petit à petit jusqu'à se que j'atteigne un truc vraiment trop bidon! (le if 1 == 1 c'est vraiment con et sa devrait marcher).

    Mais voilà... sa ne marche toujours pas! Alors seulement je poste un message d'aide!

    josmiley, le problème ici pausé n'est pas "c'est quoi l'intérêt de faire 'if 1 == 1' ?" mais plutôt, POURQUOI 'if 1 == 1' ne marche pas?

    Maintenant... pour devancer la prochaine demande qui serra sans doute: "Donne nous le vrai code." je répond que c'est le vrai code! C'est réellement se que j'ai mis dans mon template! Et temps que ce truc vraiment trop bidon ne fonctionnera pas... inutile de ce compliquer la vie avec plus dur!!

    Quelque précision: Le template est, bien sur, plus grand que sa! Il y a encore d'autre élément! Si j'enlève ce "if" alors le template fonctionne mais dès qu'il y est sa fonctionne plus!

    Pour ceux qui veulent plus de code, je ne pense pas que sa puisse aider, mais bon... au cas ou... voilà une petite parti de mon template!
    Le tout est dans un tableau, et dans une boucle for qui donne les variables "notes" et "sections".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <tr>
       <td colspan='2' class="trd_sect">
          {% for note in notes %}
             <table class='note'>
                <tr class='haut'>
                   <td class='gauche'><input id="titre{{ note.id }}" onBlur="enreg_titre('{{ note.id }}')" value='{{ note.titre }}' maxlenght="50"></input></td>
                   <td class='droite'>
    	          {{ note.libelles.all }}
    	          <select id="lib_note" name="lib_note[]" size="5" multiple="multiple">
    		  <option value=""></option>
    		     {% for lib in menu.libelle %}
    	                {% if 1 == 1 %}
                               <p>truc</p>
                            {% endif %}
    		   <option value="{{ lib.id }}" selected='selected'>{{ .nom }}</option>
                         {% endfor %}
                      </select>
                      <a href='/Bloc_note/{{ bloc.id }}/note/{{ note.id }}/delete/'>Effacer</a>
                   </td>
                </tr>
                <tr>
                   <td colspan='2'><textarea id="{{ note.id }}" name="{{ note.id }}" style="width:100%">{{ note.text }}</textarea></td>
                </tr>
             </table>
             <div id='plus{{ sections.id }}'></div>
          {% endfor %}
       </td>
    </tr>
    P.S: Excuse moi josmiley, je suppose que tu veut bien faire, mais répondre à une question par une autre question dons la réponse est dans le premier poste... qui plus est tu pause une question d'on la réponse ne résoudra pas le problème! C'est inutile!
    Encore désoler, c'est un mini coup de gueule contre toute personne voulant dire ou demander des choses qui d'évidence n'avancerons à rien!

    Celà dit... quelqu'un,... ou josmiley... aurrait peut être un début d'avancement pour faire avancé le chmilibili... schmilllliii.... schmmiiliiiiiemilibilike??

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    je ne connais pas django, et quand je dis " c'est quoi l'intêret de faire 'if 1 == 1' ? " je me doute qu'il n'y a aucun intêtret à écrire ça; donc peut-être que le compilateur/interpréteur pense pareil et donc que cette forme de notation n'a pas été implémentée, car inutile.
    django n'attend peut-être pas de numeraire en 1ere operande s'il y a comparaison.
    je pense que c'est propre à django.

  5. #5
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    bonjour,

    la réponse est dans la doc: ifequal devrait répondre à ton besoin.

  6. #6
    Membre éclairé Avatar de Snooky68
    Homme Profil pro
    Développeur Web/Python/PHP
    Inscrit en
    Mai 2006
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web/Python/PHP
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 273
    Par défaut
    OKIIII fun fun fun....

    Pertinent josmiley!!! Désoler!

    Pacificator... en effet, c'est bien sa!(un peut à coté de la plaque en ce moment moi!!!) Maintenant mon if fonctionne.
    Maintenant que le "bidon" fonctionne ... passons à plus dur!

    Mon but est en faite un {% if ... in ... %}. Donc la comparaissont simple fonctionne avec ifequal, mais comment faire le if ... in? Mon but est de comparer deux listes d'objets!

    J'ai trouvé le in operator ici: http://docs.djangoproject.com/en/dev...s/#in-operator

    Je fait donc ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {% if "1" in "1" %}
       <p>truc</p>
    {% endif %}
    Mais j'obtiens toujours encore le fameux: "'if' statement improperly formatted".
    Une autre idée fabuleuse?

  7. #7
    Membre éclairé Avatar de Snooky68
    Homme Profil pro
    Développeur Web/Python/PHP
    Inscrit en
    Mai 2006
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web/Python/PHP
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 273
    Par défaut
    L'idée est très bonne, mais je n'arrive pas à appliquer le filtre!
    Je crée mon dossier "templatetags" je j'y met le __init__.py et un "mod.py" avec ton code!

    Dans le template je met un {% load mod %} et j'essaie d'utiliser mon filtre! Mais j'ai l'erreur suivante. "Exception Value: Invalid filter: 'nn'"

    Mon filtre se nomme "nn" car "in" est un terme python!
    J'ai aussi importé le 'Library' et j'ai créer un objets register avec...

    Mais rien à faire! Quel erreur ai-je fait??
    Merci.

  8. #8
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    effectivement, nommer la fonction in n'était pas très malin, j'avais vu ce filtre sur djangosnippets, il se nommait in_list.
    Sinon, as-tu bien placé ton dossier templatetags dans une application declarée dans ton settings.py?

  9. #9
    Membre éclairé Avatar de Snooky68
    Homme Profil pro
    Développeur Web/Python/PHP
    Inscrit en
    Mai 2006
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web/Python/PHP
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 273
    Par défaut
    En fait j'ai utilisé la même appli pour mon templatetags, donc forcément déclarer dans le settings.

    Je vais essayer de le mettre dans une autre appli, mais je suis pas sur que sa marchera!

    Une autre idée peut être?

  10. #10
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    peux-tu poster ton fichier mod.py?

  11. #11
    Membre éclairé Avatar de Snooky68
    Homme Profil pro
    Développeur Web/Python/PHP
    Inscrit en
    Mai 2006
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web/Python/PHP
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 273
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    from django.template import Library
    register = Library()
     
    def nn(value, arg):
    	return True

    C'est tout...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Erreur sur instruction Declare
    Par popi33370 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/09/2014, 09h40
  2. Erreurs sur instruction Write
    Par taoufiq07 dans le forum Fortran
    Réponses: 11
    Dernier message: 25/10/2010, 21h08
  3. [VB2005]Erreur sur instruction CreateObject
    Par Herlece dans le forum Windows Forms
    Réponses: 3
    Dernier message: 04/08/2008, 13h53
  4. erreur sur l'instruction move
    Par Namson dans le forum VB.NET
    Réponses: 12
    Dernier message: 19/05/2007, 23h52
  5. [MySQL] Erreur sur une instruction UPDATE
    Par Sir Tengu dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/12/2006, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo