.. _pages_app: .. index:: single: Pages single: Homepage single: Impressum single: Startseite single: TemplateView Eine Pages App erstellen ************************* Bevor wir mit der Events-App weitermachen, wollen wir noch eine ``pages``- App erstellen, die mehrheitlich statische Seiten wie zum Beispiel die ``Homepage`` oder das Impressum bereitstellt. Fangen wir mal mit der Homepage an. App installieren ================== Um eine App innerhalb eines Projekts anzulegen, nutzen wir wie gewohnt das Sub-Kommando ``startapp`` gefolgt von dem Namen der gewünschten App. .. code-block:: shell (eventenv) python manage.py startapp pages und registrieren sie in den ``event_manager/event_manager/settings.py`` .. code-block:: python INSTALLED_APPS = [ "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", ] INSTALLED_APPS.extend(["events", "user", "pages"]) # <= diese Zeile hinzufügen Die URLS anlegen ======================= Projekt URLs erweitern ------------------------ Dazu öffnen wir erstmal die Projekt-URLs unter ``event_manager/event_manager/urls.py`` und fügen den Path zu den ``pages.urls`` ein: .. code-block:: python from django.contrib import admin from django.urls import include, path urlpatterns = [ path("admin/", admin.site.urls), path("events/", include("events.urls", namespace="events")), path("", include("pages.urls", namespace="pages")), # <= das hier einfügen! ] Dadurch, dass das erste Argument für die ``path``-Funktion ein leerer String ist, können wir erreichen, dass unsere Index-Page bzw. das Impressum unter der Hauptdomain angezeigt wird. Die URL für die Index-Seite wäre dann zum Beispiel ``www.example.com`` und für das Impressum ``www.example.com/imprint``. Alle anderen Apps müssen wie gewohnt mit ihrem Pfad aufgerufen werden. App URLs anlegen ------------------------ Jetzt müssen noch die URLs auf App-Ebene festgelegt werden. Dazu legen wir die Datei ``event_manager/pages/urls.py`` an und modifzieren den Inhalt wie folgt: .. code-block:: python from django.urls import path from . import views app_name = "pages" urlpatterns = [ path('', views.HomePageView.as_view(), name='home'), ] View für die Homepage einrichten =================================== Die View, auf die wir in den urlpatterns referenzieren, muss jetzt noch unter ``event_manager/pages/views.py`` angelegt werden. Was das alles konkret bedeutet, werden wir im weiteren Verlauf des Buches verstehen lernen. .. code-block:: python from django.views.generic.base import TemplateView class HomePageView(TemplateView): """Das ist eine generische, klassenbasierte View.""" template_name = "pages/home.html" Template für die Homepage =================================== Wir legen das Template für die Homepage unter ``event_manager/pages/templates/pages/index.html`` an und fügen folgenden Inhalt ein: .. code-block:: html+django