COOKBOOK 1: Erstellen eines neuen Projekts

Hier sind nochmal alle Schritte beschrieben, die wir zum Erstellen eines Projekts und zum Anlegen einer ersten App benötigen. Dieses Cookbook dient als Hilfe für alle eure zukünftigen Projekte.

0. Projektverzeichnis für alle Django-Projekte anlegen

Es gilt als gute Practice, alle lokalen Django-Projekte in einem Verzeichnis zu verwalten. Deshalb legen wir zuerst einmal ein Projekte-Verzeichnis an.

mkdir django_projects
cd django_projects

1. Verzeichnis für alle virtuellen Environments anlegen

Jedes Django-Projekt erhält sein eigenes virtuelles Environment. Diese werden unter django_projects/.envs angelegt:

mkdir .envs

So sieht unser Verzeichnis jetzt aus

├── django_projects
    └── .envs
        └──eventenv

falls ein anderes, virtuelles Environment aktiv sein sollte, dieses jetzt deaktivieren

(petenv) deactivate

und das Environment aktivieren:

source .envs/eventenv/bin/activate

#der Windows

.envs\eventenv\Scripts\activate

2. Projektverzeichnis erstellen

Wir erstellen nun für unser neues Projekt ein Projektverzeichnis und wechseln auch gleich hinein. Unser Django-Projekt heisst event_project:

(eventenv) mkdir event_project
(eventenv) cd event_project

2. requirements-Dateien anlegen

Wir legen in diesem Verzeichnis mit unserem Editor die requirements.in und die requirements-dev.in an. Optional können wir dort gleich eine README.md und .gitignore- Datei anlegen:

├── django_projects
    └── event_project
        ├──  README.md
        ├── .gitignore
        ├── .requirements.in
        ├── .requirements-dev.in
    └── .envs
        └──eventenv

3. Django installieren

in die requirements.in schreiben wir die nötigen Pakete:

Django==4.1.3

in die requirements-dev.in schreiben wir d nötigen Pakete:

Django==4.1.3

und installieren diese auf der Shell:

(eventenv)  pip install pip-tools
(eventenv)  pip-compile requirements.in
(eventenv)  pip-compile requirements-dev.in

4. ein Django-Projekt erstellen

Nach der Installation steht uns der django-admin zur Verfügung. Mit diesem erstellen wir ein neues Django-Projekt:

(eventenv) pwd
django_projects/event_project
(eventenv) django-admin startproject event_manager

Es wird die Dateistruktur angelegt. Nun gibt es ein äußeres und ein inneres event_manager-Verzeichnis.

event_project
└── event_manager
    ├── manage.py
    └── event_manager
        ├── __init__.py
        ├── asgi.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py

Hinweis: alle zukünftigen Pfadangaben gehen ab jetzt von event_project aus. Die settings.py liegt also unter event_manager/event_manager/settings.py.

5. Settings anpassen

Wir wollen gleich die settings.py anpassen und nehmen dort die folgenden, wichtigsten Änderungen vor:

ALLOWED_HOSTS = ["127.0.0.1"]
LANGUAGE_CODE = 'de-DE'
TIME_ZONE = "Europe/Berlin"
USE_I18N = True
USE_L10N = True
USE_TZ = True

6. Runserver auf der Shell starten

Um den Testserver zu starten, benötigen wir folgendes Kommando:

(eventenv) python manage.py runserver

Die Website im Browser aufrufen, die Rakete muss fliegen: http://127.0.0.1:8000

7. App erstellen

Um eine erste App anzulegen, nutzen wir das Subkommando startapp.

(eventenv) python manage.py startapp events

Es wurden ein paar Dateien in einem App-Verzeichnis erstellt. So sieht unser Verzeichnis aktuell aus:

event_manager
├── manage.py
├── db.sqlite3
├── events
    ├──  migrations/
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── models.py
    ├── tests.py
    ├── views.py

└── event_manager
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

Nun registrieren wir die neu erstellte App events``auch gleich 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",
    "whitenoise.runserver_nostatic",
    "events",
]

1. URLs anlegen

Wir wollen jetzt eine TestView schreiben und die nötigen URLs dafür anlegen. Dies geschieht in der urls.py des Projekts und in der urls.py der App.

a) Pfad zur App registrieren

Unter event_manager/event_manager/urls.py legen wir den folgenden Code an und verweisen auf die Urls der App events, die es aktuell allerdings noch gar nicht gibt:

from django.urls import path, include

urlpatterns = [
    path("admin/", include("admin.urls"))
    path("events/", include("events.urls")), # <= HIER eintragen!
]

b) Die Pfade der App anlegen

Wir erstellen die Datei event_manager/events/urls.py und fügen folgenden Code ein:

from django.urls import path
from . import views

urlpatterns = [
    path('hello/', views.hello, name='hello'),
]

Der Pfad verweist auf eine nicht existente Funktion hello. Diese müssen wir noch anlegen.

9. VIEWS anlegen

Unter event_manager/events/views.py legen wir jetzt die erste View an:

from django.http import HttpResponse

def hello(request):
    return HttpResponse('hello!')

10. RUNSERVER starten und View testen

(eventenv) python manage.py runserver

Und View aufrufen: http://127.0.0.1:8000/events/hello Im Browser sollte nun klein das Wort hello! stehen.