| 1 |
=========================== |
|---|
| 2 |
Die Applikation "flatpages" |
|---|
| 3 |
=========================== |
|---|
| 4 |
|
|---|
| 5 |
Django wird mit einer optional einsetzbaren Applikation namens "flatpages" ausgeliefert. Sie erm�cht, einfachen HTML-Content in einer Datenbank abzulegen. Die Verwaltung ist sowohl �jangos Administrations-Interface, als auch �ie Python API realisiert. |
|---|
| 6 |
|
|---|
| 7 |
Bei einer Flatpage handelt es sich um ein einfaches Objekt, bestehend aus einer URL, einem Titel und dem Inhalt. Sie kann f�iebige Seiten verwendet werden. Gute Beispiele sind das Impressum oder die rechtlichen Hinweise einer Webseite, die zwar in der Datenbank abgelegt werden sollen, aber f� keine eigene Django-Applikation entwickelt werden soll. |
|---|
| 8 |
|
|---|
| 9 |
Eine Flatpage kann ein angepasstes oder ein systemweites Standard-Template verwenden. Sie kann mit einer beliebigen Anzahl von Seiten verkn�erden. |
|---|
| 10 |
|
|---|
| 11 |
Hier einige Beispiele f�seiten, die Django einsetzen und Flatpages verwenden: |
|---|
| 12 |
|
|---|
| 13 |
* http://www.chicagocrime.org/about/ |
|---|
| 14 |
* http://www.lawrence.com/about/contact/ |
|---|
| 15 |
|
|---|
| 16 |
Installation |
|---|
| 17 |
============ |
|---|
| 18 |
|
|---|
| 19 |
Um die Applikation Flatpages zu installieren, sind folgende Schritte notwendig: |
|---|
| 20 |
|
|---|
| 21 |
1. ``'django.contrib.flatpages'`` zur Einstellung INSTALLED_APPS_ hinzuf� 2. ``'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'`` zur Einstellung MIDDLEWARE_CLASSES_ hinzuf� 3. Den Befehl ``manage.py syncdb`` ausf� |
|---|
| 22 |
|
|---|
| 23 |
.. _INSTALLED_APPS: http://www.djangoproject.com/documentation/settings/#installed-apps |
|---|
| 24 |
.. _MIDDLEWARE_CLASSES: http://www.djangoproject.com/documentation/settings/#middleware-classes |
|---|
| 25 |
|
|---|
| 26 |
Was steckt dahinter |
|---|
| 27 |
=================== |
|---|
| 28 |
|
|---|
| 29 |
``manage.py syncdb`` legt zwei Tabellen in der Datenbank an: ``django_flatpage`` und ``django_flatpage_sites``. |
|---|
| 30 |
Bei ``django_flatpage`` handelt es sich um eine einfache Zuordnungstabelle, die eine URL mit einem Titel und einigem textuellen Inhalt verbindet. ``django_flatpage_sites`` hingegen verbindet eine Flatpage mit einer Seite. |
|---|
| 31 |
|
|---|
| 32 |
Die eigentliche Hauptarbeit verrichtet die ``FlatpageFallbackMiddleware``. Jedes mal wenn eine Django-Applikation einen 404-Fehler produziert, ��e Middleware die Flatpage-Datenbank auf eine registrierte URL hin. Im Einzelnen wird dabei ��b eine Flatpage mit der angegebenen URL und Seiten-ID existiert, die mit der SITE_ID_ Einstellung �nstimmt. |
|---|
| 33 |
|
|---|
| 34 |
Wurde eine �ereinstimmung gefunden, wird wie folgt vorgegangen: |
|---|
| 35 |
|
|---|
| 36 |
* Falls die Flatpage ein angepasstes Template besitzt, wird dieses geladen. Sonst wird das Template ``flatpages/default`` geladen. |
|---|
| 37 |
* Dem Template wird die Kontext-Variable ``flatpage`` �ben, welche das Flatpage-Objekt darstellt. Das Rendern des Templates �mmt ein RequestContext_. |
|---|
| 38 |
|
|---|
| 39 |
Wird keine �ereinstimmung gefunden, wird die Verarbeitung der Anfrage ganz normal weitergef� |
|---|
| 40 |
Die Middleware wird nur im Falle eines 404 aktiviert, nicht aber bei einem 500 oder einem anderen Statuscodes. |
|---|
| 41 |
|
|---|
| 42 |
Zu beachten ist, dass die Reihenfolge der ``MIDDLEWARE_CLASSES`` eine Rolle spielt. Dabei kann die ``FlatpageFallbackMiddleware`` an das Ende der Liste m�cher Eintr� gesetzt werden, da sie grunds�lich als letztes verwendet wird. |
|---|
| 43 |
|
|---|
| 44 |
Mehr Informationen �iddleware finden sich in den `middleware docs`_. |
|---|
| 45 |
|
|---|
| 46 |
.. _SITE_ID: http://www.djangoproject.com/documentation/settings/#site-id |
|---|
| 47 |
.. _RequestContext: http://www.djangoproject.com/documentation/templates_python/#subclassing-context-djangocontext |
|---|
| 48 |
.. _middleware docs: http://www.djangoproject.com/documentation/middleware/ |
|---|
| 49 |
|
|---|
| 50 |
Hinzuf��ern und l�en von Flatpages |
|---|
| 51 |
============================================ |
|---|
| 52 |
|
|---|
| 53 |
Mit Hilfe des Admin-Interfaces |
|---|
| 54 |
------------------------------ |
|---|
| 55 |
|
|---|
| 56 |
Falls Djangos automatisches Admin-Interface aktiviert ist, sollte auf der Index-Seite ein Abschnitt "Flatpages" auftauchen. Die Flatpages lassen sich wie jedes andere Objekt im System editieren. |
|---|
| 57 |
|
|---|
| 58 |
Mit Hilfe der Python API |
|---|
| 59 |
------------------------ |
|---|
| 60 |
|
|---|
| 61 |
Flatpages werden durch ein Standard-`Django model`_ repr�ntiert, welches unter `django/contrib/flatpages/models.py`_ zu finden ist. Auf Flatpage-Objekte kann mit Hilfe der `Django database API`_ zugegriffen werden. |
|---|
| 62 |
|
|---|
| 63 |
.. _Django model: http://www.djangoproject.com/documentation/model_api/ |
|---|
| 64 |
.. _django/contrib/flatpages/models.py: http://code.djangoproject.com/browser/django/trunk/django/contrib/flatpages/models.py |
|---|
| 65 |
.. _Django database API: http://www.djangoproject.com/documentation/db_api/ |
|---|
| 66 |
|
|---|
| 67 |
Flatpage Templates |
|---|
| 68 |
================== |
|---|
| 69 |
|
|---|
| 70 |
Standardm�g werden Flatpages mit dem Template ``flatpages/default.html`` gerendert, welches sich aber auch f�zielle Flatpages �hreiben l�t. |
|---|
| 71 |
|
|---|
| 72 |
Die Datei ``flatpages/default.html`` muss von Hand erzeugt werden. Innerhalb des Template-Verzeichnisses ist dazu lediglich ein Verzeichnis ``flatpages`` anzulegen, das die Datei ``default.html`` enth�. |
|---|
| 73 |
|
|---|
| 74 |
Den Flatpage-Templates wird die Kontext-Variable ``flatpage`` �ben, welche ein Flatpage-Objekt darstellt. |
|---|
| 75 |
|
|---|
| 76 |
Im Folgenden ein Beispiel-Template f�latpages/default.html``:: |
|---|
| 77 |
|
|---|
| 78 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" |
|---|
| 79 |
"http://www.w3.org/TR/REC-html40/loose.dtd"> |
|---|
| 80 |
<html> |
|---|
| 81 |
<head> |
|---|
| 82 |
<title>{{ flatpage.title }}</title> |
|---|
| 83 |
</head> |
|---|
| 84 |
<body> |
|---|
| 85 |
{{ flatpage.content }} |
|---|
| 86 |
</body> |
|---|
| 87 |
</html> |
|---|