| 1 |
=========================== |
|---|
| 2 |
Die Applikation "flatpages" |
|---|
| 3 |
=========================== |
|---|
| 4 |
|
|---|
| 5 |
Django wird mit einer optionalen Applikation namens "flatpages" ausgeliefert. Sie erm�cht, einfachen HTML-Content in einer Datenbank abzulegen. Die Verwaltung ist �jangos Administrations-Interface und die Python API realisiert. |
|---|
| 6 |
|
|---|
| 7 |
Bei einer Flatpage handelt es sich um ein simples Objekt, bestehend aus einer URL, einem Titel und dem Inhalt. Sie kann f�malige und spezielle 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 oder vielen Seiten verkn�erden. |
|---|
| 10 |
|
|---|
| 11 |
Hier einige Beispiele f�seiten, die auf Django setzen 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, m�folgende Schritte ausgef�erden: |
|---|
| 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 lediglich eine URL mit einem Titel und einigem textuellen Inhalt verbindet. ``django_flatpage_sites`` wiederum verbindet eine "flatpage" mit einer Seite. |
|---|
| 31 |
|
|---|
| 32 |
Die ``FlatpageFallbackMiddleware`` erledigt die gesamte Arbeit. Jedes mal wenn eine Django-Applikation einen 404-Fehler produziert, ��ese Middleware letzten Endes die Flatpage-Datenbank auf eine registrierte URL hin. Im Speziellen wird ��b eine Flatpage mit der angegebenen URL und Seiten-ID existiert, die mit der SITE_ID_ Einstellung �nstimmt. |
|---|
| 33 |
|
|---|
| 34 |
Wird eine �ereinstimmung gefunden, wird wie folgt vorgegangen: |
|---|
| 35 |
|
|---|
| 36 |
* Falls die Flatpage ein angepasstes Template besitzt, wird dieses geladen. Ansonsten wird das Template ``flatpages/default`` geladen. |
|---|
| 37 |
* Dieses Template wird einer einfachen Kontext-Variablen names ``flatpage`` �ben, welche das Flatpage-Objekt darstellt. Dieses verwendet RequestContext_ zum rendern des Templates. |
|---|
| 38 |
|
|---|
| 39 |
Wird keine �ereinstimmung gefunden, wird die Verarbeitung der Anfrage ganz normal weitergef� |
|---|
| 40 |
Die Middleware wird nur im Falle eines 404, nicht aber eines 500 oder eines anderen Statuscodes, aktiviert. |
|---|
| 41 |
|
|---|
| 42 |
Zu beachten ist, dass die Reihenfolge der ``MIDDLEWARE_CLASSES`` eine Rolle spielt. Die ``FlatpageFallbackMiddleware`` kann grunds�lich an das Ende der Liste gesetzt werden, da sie das letzte Mittel darstellt. |
|---|
| 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 auch 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 aber ebenso f�timmte Flatpages �hrieben werden kann. |
|---|
| 71 |
|
|---|
| 72 |
Das ``flatpages/default.html`` muss eigenst�ig angelegt werden. Innerhalb des Template-Verzeichnisses muss dazu lediglich ein Verzeichnis ``flatpages`` angelegt werden, welches die Datei ``default.html`` enth�. |
|---|
| 73 |
|
|---|
| 74 |
Den Flatpage-Templates wird eine einzige Kontext-Varible names ``flatpage`` �ben, welche ein Flatpage-Objekt darstellt. |
|---|
| 75 |
|
|---|
| 76 |
Es folgt ein Beispiel-Teplate ``flatpages/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> |
|---|