2010-08-14 13 views
36

Sto provando ad emettere i primi 255 caratteri di una descrizione su un elenco di elementi e sto cercando un metodo per ottenerlo.Limitare il numero di caratteri con il filtro Django Template

Esempio: Ho una variabile che contiene circa 300 caratteri.

mi chiamano che variabile simili, {{ my_variable|characterlimit:255 }}

e sarebbe restituire solo i primi 255 caratteri di quella variabile.

Se questo tag non esiste, lo creerò semplicemente (e suggerisco che vada in django), ma volevo assicurarmi che non fosse successo prima che mi prendessi il tempo per farlo. Grazie!

risposta

62

Se "my_variable" è una stringa, è possibile utilizzare lo slice filter, che considera la stringa come un elenco di caratteri. Se si tratta di un insieme di parole, l'equivoco approssimativo è truncatewords - ma ciò non suona come il tuo bisogno.

truncatewords aggiunge anche i puntini di sospensione ... alla fine del risultato troncato.

Uso sarebbe qualcosa di simile

{{ my_variable|slice:":255" }} 
+0

non ho potuto ottenere questo a lavorare per una stringa – northben

0

Purtroppo non esiste. Ci sono delle mosse per implementarlo, ma è ancora in fase di progettazione (bene, implementato, ma in attesa di una decisione di progettazione), come descritto in here.

La patch associata a quel ticket contiene un'implementazione.

2

Un modo più semplice utilizzando il tag modello standard è:

In questo caso il 10 è l'argomento di posizione e per una stringa è il numero massimo di caratteri da visualizzare.

29
Ci

è un official built-in filter:

{{ variable|truncatechars:255 }} 
+0

Ciò inserirà i puntini di sospensione ("...") dietro le stringhe che vengono troncati (e non dietro quelli che non vengono troncati). Fetta non mettere ellissi dietro di esso. Il mio consiglio: usa truncatechars. – MZA

+0

Concordato con quanto sopra. Ciò sarà corretto nella maggior parte delle situazioni (ad esempio, visualizzando un URL lungo senza ostacolare il collegamento ipertestuale). –

Problemi correlati