2010-08-14 11 views
36

Próbuję wydrukować pierwszych 255 znaków opisu na liście pozycji i szukam metody, aby to uzyskać.Ograniczenie liczby znaków z filtrem szablonów Django

Przykład: Mam zmienną zawierającą około 300 znaków.

nazywam tę zmienną tak, {{ my_variable|characterlimit:255 }}

i byłoby wrócić tylko pierwsze 255 znaków tej zmiennej.

Jeśli ten znacznik nie istnieje, po prostu go utworzę (i zasugeruję, że przechodzi on do django), ale chciałem się upewnić, że nie minęło, zanim poświęciłem na to czas. Dzięki!

Odpowiedz

62

Jeśli "moja_zmienna" jest łańcuchem, możesz skorzystać z slice filter, która traktuje ciąg jako listę znaków. Jeśli jest to zestaw słów, przybliżony jest truncatewords - ale to nie brzmi jak twoja potrzeba.

truncatewords dodaje również ellipsis ... na końcu obciętego wyniku.

Wykorzystanie byłoby coś

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

nie mogę uzyskać to do pracy na sznurku – northben

0

Niestety nie istnieje. Są ruchy, aby go zaimplementować, ale wciąż jest na etapie projektowania (dobrze, zaimplementowane, ale czeka na decyzję projektową), zgodnie z opisem here.

Poprawka dołączona do tego biletu zawiera implementację.

2

A bardziej prosty sposób za pomocą standardowego szablon jest:

{{ variable|stringformat:".10s" }} 

W tym przypadku 10 jest argumentem pozycji, a dla ciągu jest to maksymalna liczba wyświetlanych znaków.

29
Nie

jest official built-in filter:

{{ variable|truncatechars:255 }} 
+0

Spowoduje to umieszczenie ellipsis ("...") za ciągami, które są obcięte (a nie za tymi, które nie są obcięte). Plaster nie zarzucił elipsy. Moja rada: użyj trunkomatów. – MZA

+0

Uzgodniono z powyższym. Będzie to poprawne w większości sytuacji (np. Wyświetlanie długiego adresu URL bez blokowania hiperłącza). –

Powiązane problemy