2010-04-09 3 views
13

In Rails ERB, è possibile sopprimere ritorni a capo con l'aggiunta di un trattino finale per tag:Posso sopprimere i newline dopo ogni tag di modello con il motore di template di Django?

<ul> 
    <% for @item in @items -%> 
    <li><%= @item %></li> 
    <% end -%> 
</ul> 

diventa:

<ul> 
    <li>apple</li> 
    <li>banana</li> 
    <li>cacao</li> 
</ul> 

C'è un modo per fare questo in Django? (Divulgazione: sto generando un file csv con Django)

Modifica: Chiarito che le nuove righe che sto cercando sono quelle lasciate dopo il modello etichette.

risposta

4

Il più vicino che ho trovato a quello che stai cercando (sto cercando la stessa cosa) è parlare di una patch futura, qui: http://code.djangoproject.com/ticket/2594.

Purtroppo, sembra che non c'è molto che si può fare fino a confondersi che patch.

+1

Non hanno mai intenzione di unire questa patch. Il bug report è stato chiuso con un messaggio che diceva essenzialmente che il motore di template di Django non vedrà nuove funzionalità e che il piano è di avere Jinja come motore di scelta per Django. – Louis

0

Quando si scrive un modello, è possibile aprire gli ul codificati nel modello e ripetere gli elementi con il valore restituito con il valore inserito.

Per quanto ne so, non esiste una funzione predefinita per questo.

1

Ad esempio:

<ul> 
{% for obj in list %} 
    <li>{{ obj|linebreaksbr|striptags }}</li> 
{% endfor %} 
</ul> 

O questo, che mette a nudo anche spazi bianchi/schede/etc, tra i tag HTML:

{{ spaceless }} 
<ul> 
{% for obj in list %} 
    <li>{{ obj }}</li> 
{% endfor %} 
</ul> 
{{ endspaceless }} 
+0

Il tuo secondo esempio rimuove tutte le newline, non solo quelle causate dall'avere tag modello sulle proprie linee. Il tuo primo esempio si limita a eliminare i newline se obj li ha ... non esattamente quello che l'OP stava chiedendo. – CodeBlock

3
{% spaceless %} 
<ul> 
    <li>apple</li> 
    <li>banana</li> 
    <li>cacao</li> 
</ul> 
{% endspaceless %} 

Non sono a conoscenza di qualsiasi modo per scartare template etichetta le linee. Voterò per l'apertura della segnalazione di bug.

+4

Rimuove tutte le newline, non sopprime i newline dalle righe che contengono solo i tag del modello. – CodeBlock

1

Si tratta di 2016 ora, e credo che questo problema è ancora presente. In questo tutorial https://www.youtube.com/watch?v=vQjmz9wCjLA intorno a 1:45, un unestest di un modello mostra che c'è una riga finale finale alla fine del tag.

+2

Ora è il 2017, e ancora nessuna soluzione ragionevole a questo! – NirIzr