Ich baue eine Blog-Anwendung in Django und wenn ich alle Blogs zeige, möchte ich einen kleinen Blog-Auszug mit jedem Eintrag anzeigen. Kann mir jemand sagen, wie kann ich das machen?
Eine Möglichkeit wäre, ein zusätzliches Feld zu erstellen und eine feste Anzahl von Wörtern zu speichern jeder Blogeintrag, sagen wir 20 Wörter. Aber das würde dann redundante Informationen speichern in der Datenbank. Gibt es einen besseren Weg, das zu tun?
Ich schlage vor, dass Sie den Template-Filter truncatewords verwenden.
Vorlagenbeispiel:
%Vor% Wenn der Blog-Inhalt als HTML gespeichert wird, verwenden Sie truncatewords_html
, um sicherzustellen, dass offene Tags nach dem Kürzungspunkt geschlossen werden (oder mit striptags
kombinieren, um HTML-Tags zu entfernen).
Wenn Sie Zeichen (nicht Wörter) abschneiden möchten, können Sie slice
:
(gibt die ersten 10 Zeichen aus).
Wenn der Inhalt als HTML gespeichert wird, kombinieren Sie ihn mit striptags
, um Probleme mit offenen Tags zu vermeiden: {{blogpost.content|striptags|slice:":10"}}
In Django 1.4 und höher gibt es einen truncatechars Filter, der eine Datei abschneidet string zu einer bestimmten Länge und beende es mit ...
. Es schneidet es tatsächlich auf die spezifische Länge minus 3 ab, und die letzten 3 Zeichen werden zum ...
.
Etwas verwandt ..
Ich habe gerade eine Antwort auf diese Frage gegeben: Django strip_tags Vorlagenfilter hinzufügen Leerzeichen , die anderen beim Erstellen von Auszügen helfen können, die HTML-Tags und kurze Inhalte in & lt; p & gt; Stichworte.
Hilft dies zu konvertieren ..
%Vor%zu diesem ..
%Vor%statt dessen ..
%Vor%