Blogroll, Design-Optimierungen und ein erster Django Template Filter

Auch heute finden sich hier einige kleinere Änderungen – im Sinne eines stetigen Wandels und des nie endenden Fortschritts…

Zunächst ist die Werbung in der rechten Spalte wieder entfernt worden. Diese wurde ersetzt durch eine Liste von Blogs – neudeutsch Blogroll genannt. Das Datenmodell war bereits in der Anwendung vorhanden, ist nur niemals ins View durchgedrungen und wurde daher nicht im Template genutzt. Warum, das mag ich nicht mehr nachvollziehen. Jetzt befinden sich dort einige Links zu Blogs, die ich regelmäßig lese, und sicherlich wird die Liste noch ergänzt.

Eine weitere Änderung betrifft das Design. Google Chrome zeigte einige Artefakte in der Darstellung der Überschriften der linken und rechten Spalten. Dies ist behoben, das gesamte CSS optimiert worden. Auf das Vehikel Internet Explorer 6 nehme ich hingegen keinerlei Rücksicht mehr. Mit der heutigen Browser-Generation sehen die Seiten jedenfalls aus wie beabsichtigt. Nur der IE8 (wer hätte das gedacht..?) stellt die Seiten etwas eigenartig dar…

Die Ausgabe in der Blogroll-Box erforderte einen Filter, der eine Zeichenkette nach einer bestimmten Anzahl von Zeichen kürzt. Die Filterfunktionen von Django beziehen sich hingegen auf eine Anzahl von Wörtern. Daher musste ein eigener Filter geschrieben werden. Nichts einfacher als das! Es war wirklich einfach! Das grundsätzliche Vorgehen ist dem Manual zu entnehmen.

Die Schritte in Kurzform:

  • Entscheidung für eine Sammlung von Filterfunktionen, daher ein spezielles Verzeichnis bzw. im Django-Jargon eine Application namens „templates“ angelegt: projektverzeichnis/templates/ .
  • Das Verzeichnis für die Templatetags muss genau so genannt werden: projektverzeichnis/templates/templatetags/ . Dort eine leere Datei __init__.py angelegt, damit Python dies als Package erkennt.
  • Die Sammlung soll kdo_extras heißen. Die Einbindung innerhalb des Templates erfolgt durch:
    {% load kdo_extras %}.
  • Die Anwendung im Template:
    {{ entry.title|truncate_string:"18" }}
  • Innerhalb der settings.py Konfigurationsdatei muss die Application hinzugefügt werden:
  • Und last, but not least der Code der kdo_extras.py:

[python]

# -*- coding: utf-8 -*-
from django import template
from django.template.defaultfilters import stringfilter

register = template.Library()

@register.filter(name=’truncate_string‘)
@stringfilter
def truncate_string(value, arg):
"Truncate string after a certain number of characters and add ‚…‘ to truncated string."
try:
maxlength = int(arg)
except ValueError: # invalid literal for int()
return value # Fail silently.
if len(value) <= maxlength:
return value
return value[0:(maxlength – 3)].strip() + "…"

[/python]

 

Tags:
Kategorie:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.