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.
(eventenv) python manage.py startapp pages
und registrieren sie in den event_manager/event_manager/settings.py
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:
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:
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.
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:
<h1>Startseite</h1>
Wenn wir das die URL 127.0.0.1:8000
aufrufen, sollte uns jetzt die Homepage angezeigt werden.
Auf die selbe Art könnte man nun weitere Pages wie zum Beispiel ein Impressum oder eine About-Seite anlegen. Das überlasse ich mal dem Leser als kleine Übungsaufgabe.
Später werden wir uns mehr mit Templates und Views beschäftigen. Nun geht es aber erstmal weiter mit den Models.