Jinja2 modello, non il rendering se-elif-else correttamente

Sto cercando di impostare il colore del testo con i css in un jinja2 modello. Nel codice riportato di seguito voglio impostare la stringa di output per la stampa in un tipo di carattere specifico colore se la variabile che contiene una stringa. Ogni volta che il modello viene generato se si stampa in rosso a causa di istruzione else, non è mai di vedere le prime due condizioni, anche se l’uscita deve essere abbinato, posso dire che l’uscita dalla variabile è quando la tabella genera ed è come previsto. So che il mio css è corretto, dovuto per la stampa della stringa in rosso per impostazione predefinita.

Il mio primo pensiero è stato quello di racchiudere la stringa stavo controllando per le virgolette, ma che non ha funzionato. Successivo è stato che jinja non era in espansione RepoOutput[RepoName.index(repo)] ma il loop di cui sopra funziona, RepoName è ampliato in modo corretto. So se ho aggiunto le parentesi graffe verrà stampata la variabile che io sono abbastanza certo sarà rompere il modello o non solo di lavoro.

Ho provato a cercare in questi siti e sono andato attraverso la lista di espressioni globali, come pure, ma non riuscivo a trovare un esempio simile al mio o di una direzione in cui cercare oltre.

http://jinja.pocoo.org/docs/templates/#if

http://wsgiarea.pocoo.org/jinja/docs/conditions.html

   {% for repo in RepoName %}
       <tr>
          <td> <a href="http://mongit201.be.monster.com/icinga/{{ repo }}">{{ repo }}</a> </td>
       {% if error in RepoOutput[RepoName.index(repo)] %}
          <td id=error> {{ RepoOutput[RepoName.index(repo)] }} </td> <!-- I want this in green if it is up-to-date, otherwise I want it in red -->
       {% elif Already in RepoOutput[RepoName.index(repo) %}
          <td id=good> {{ RepoOutput[RepoName.index(repo)] }} </td>   <!-- I want this in green if it is up-to-date, otherwise I want it in red -->
       {% else %}
            <td id=error> {{ RepoOutput[RepoName.index(repo)] }} </td> <!-- I want this in green if it is up-to-date, otherwise I want it in red -->
       </tr>

       {% endif %}
   {% endfor %}

Grazie

  • Sono error e Already vuole essere stringhe di qui?
  • Forse cercavi per l’ elif tag iniziare con {$?
  • E dalla logica, id=error è sempre, a meno che non Already in RepoOutput[RepoName.index(repo) è vero; che consente di tagliare un ramo nel test qui.
  • Grazie per avermi mostrato l’errore di battitura, i miei occhi stanno andando morbido, a questo punto!
  • L’ho impostato per errore, così ho potuto vedere rosso e controllare il css invece che nero.
InformationsquelleAutor Matty | 2014-02-25



One Reply
  1. 54

    Si prova se i valori del variabili error e Already sono presenti in RepoOutput[RepoName.index(repo)]. Se queste variabili non esiste quindi un oggetto non definito è utilizzato.

    Sia di vostro if e elif test quindi sono false; non c’è nessun oggetto non definito nel valore di RepoOutput[RepoName.indice(repo)].

    Penso che si è voluto verificare se alcuni stringhe sono, in valore, invece:

    {% if "error" in RepoOutput[RepoName.index(repo)] %}
        <td id="error"> {{ RepoOutput[RepoName.index(repo)] }} </td>
    {% elif "Already" in RepoOutput[RepoName.index(repo) %}
        <td id="good"> {{ RepoOutput[RepoName.index(repo)] }} </td>
    {% else %}
        <td id="error"> {{ RepoOutput[RepoName.index(repo)] }} </td>
    {% endif %}
    </tr>

    Altre correzioni che ho fatto:

    • Utilizzato {% elif ... %} invece di {$ elif ... %}.
    • spostato il </tr> etichetta del if condizionale della struttura, ha bisogno di essere lì da sempre.
    • mettere tra virgolette le id attributo

    Nota che molto probabilmente si desidera utilizzare un class attributo invece qui, non id, quest’ultimo deve avere un valore che deve essere univoco in tutto il documento HTML.

    Personalmente, mi piacerebbe impostare il valore della classe di qui e ridurre la duplicazione di un po’:

    {% if "Already" in RepoOutput[RepoName.index(repo)] %}
        {% set row_class = "good" %}
    {% else %}
        {% set row_class = "error" %}
    {% endif %}
    <td class="{{ row_class }}"> {{ RepoOutput[RepoName.index(repo)] }} </td>
    • Io vi aspetto in classe per un uso più ampio, stavo solo testando questa una tabella specifica. Grazie per il pensiero, io sono abbastanza nuovo per i css.
    • sì, il mio male circa il {% endif %}. ci dispiace!
    • L’avevo completamente perso quel che modifica contenuta un’altra modifica!

Lascia un commento