Wer kennt sie nicht. Die übermütigen Superkommentatoren in diversen Newspostings. Von “erst0r” bis “looooooooooooooooooooooooooooooooool” ist alles vertreten. Und da sind wir auch schon beim Problem. Dieses super-extra-lange Wort. Vielen Designern sind solche Dinge ein Dorn im Auge. Dank Django können wir die ganze Sache rapide kürzen.
Wir verwenden im Template einfach einen slice, z.B. so {{ comment.comment|slice:”:5″ }}
Tja, schön und gut….aber was tut man wenn “waaaaaaaaaaaaaaaaaaaaaaaaaas geeeeeeeeeeeht aaaaaab?!?!?” gespamt wird? Bei einem slice von z.B. 5 Zeichen würde nur noch “waaaa…” dran stehen. Wollen wir das? Nö.
Also muss der eigene Filter her. Damit man nicht groß nachdenken muss, wie / wo / was – hier fertig von mir geschrieben
from django import template register = template.Library() @register.filter def truncatewords(s, num): """ Truncates a word after a given number of chars Argument: Number of chars to truncate after """ length = int(num) string = [] for word in s.split(): if len(word) > length: string.append(word[:length]+'...') else: string.append(word) return u' '.join(string)
Was geschieht nun, wenn man den Filter einsetzt? Der Filter schneidet bei jedem Wort die angegebene Anzahl ab, also wird aus unserem oben genannten “Was geht ab” ein “waaaa… geeee… aaaaa…”. Ist zwar auch nicht die Krönung der Schöpfung aber immerhin, ne?
In diesem Sinne – viel Spaß damit.