Dein erstes Django-Projekt!

Ein Teil dieses Kapitels basiert auf Tutorials der Geek Girls Carrots (https://github.com/ggcarrots/django-carrots).

Teile dieses Kapitels basieren auf dem django-marcador Tutorial lizenziert unter Creative Commons Attribution-ShareAlike 4.0 International License. Für das "django-marcador Tutorial" liegt das Urheberrecht bei Markus Zapke-Gründemann et al.

Wir werden einen kleinen Blog erstellen!

Der erste Schritt ist, ein neues Django-Projekt zu starten. Im Grunde bedeutet das, dass wir einige Skripte ausführen werden, die Django zur Verfügung stellt, um ein Skelett eines Django-Projekts für uns zu erzeugen. Das Projekt beinhaltet einen Haufen von Verzeichnissen und Dateien, die wir später verwenden werden.

Die Namen einiger Dateien und Verzeichnisse sind sehr wichtig für Django. Die Dateien, die erstellt werden, solltest du nicht umbenennen. Sie an eine andere Stelle zu verschieben, ist auch keine gute Idee. Django muss zwingend eine gewisse Struktur erhalten, um wichtige Dinge wiederzufinden.

Denk daran, alles in der "Virtualenv"-Umgebung auszuführen. Wenn du kein Präfix (myvenv) in deiner Konsole siehst, musst du deine Virtualenv-Umgebung aktivieren. Wie das gemacht wird, erklären wir im Kapitel Django-Installation, im Abschnitt Arbeiten mit Virtualenv. Zur Erinnerung: Gib dazu auf Windows myvenv\Scripts\activate ein, bzw. auf OS X oder Linux source myvenv/bin/activate.

Create project: OS X or Linux

In deiner OS X- oder Linux-Konsole solltest du den folgenden Befehl ausführen; vergiss den Punkt (.) am Ende nicht!

command-line

(myvenv) ~/djangogirls$ django-admin startproject mysite .

Der Punkt . ist sehr wichtig, weil er dem Skript mitteilt, dass Django in deinem aktuellen Verzeichnis installiert werden soll. (Der Punkt . ist eine Schnellreferenz dafür.)

Hinweis: Wenn du das oben angegebene Kommando eingibst, denk daran, nur das einzutippen, was mit django-admin anfängt. Der (myvenv) ~/djangogirls$-Teil hier ist nur ein Beispiel für die Eingabeaufforderung (den "Prompt") auf der Kommandozeile.

Create project: Windows

Auf Windows solltest du den folgenden Befehl ausführen. (Vergiss den Punkt (.) am Ende nicht!):

command-line

(myvenv) C:\Users\Name\djangogirls> django-admin.exe startproject mysite .

Der Punkt . ist sehr wichtig, weil er dem Skript mitteilt, dass Django in deinem aktuellen Verzeichnis installiert werden soll. (Der Punkt . ist eine Schnellreferenz dafür.)

Hinweis: Wenn du das oben angegebene Kommando eingibst, denk daran, nur das einzutippen, was mit django-admin.exe anfängt. Der (myvenv) C:\Users\Name\djangogirls>-Teil hier ist nur ein Beispiel für die Eingabeaufforderung (den "Prompt") auf der Kommandozeile.

django-admin.py ist ein Skript, welches Verzeichnisse und Dateien für dich erstellt. Du solltest jetzt eine Verzeichnisstruktur haben, die folgendermaßen aussieht:

djangogirls
├───manage.py
├───mysite
│        settings.py
│        urls.py
│        wsgi.py
│        __init__.py
└───requirements.txt

Hinweis: In deiner Verzeichnisstruktur wirst du auch den venv-Ordner sehen, den wir vorhin erzeugt haben.

manage.py ist ein Script, das das Management deines Projektes unterstützt. Mit dem Script bist du unter anderem in der Lage, den Webserver auf deinem Rechner zu starten, ohne etwas Weiteres installieren zu müssen.

Die Datei settings.py beinhaltet die Konfiguration deiner Website.

Erinnerst du dich, als wir über den Postboten gesprochen haben, der überlegt, wohin er den Brief liefern soll? Die urls.py Datei beinhaltet eine Liste von Patterns (Mustern), die vom urlresolver benutzt werden.

Lass uns kurz die anderen Dateien vergessen - wir werden sie nicht verändern. Denk aber dran, sie nicht versehentlich zu löschen!

Einstellungen anpassen

Wir machen nun ein paar Änderungen in mysite/settings.py. Öffne die Datei mit dem Code-Editor, den du schon installiert hast.

Hinweis: settings.py ist eine Datei wie jede andere. Du kannst sie aus deinem Code-Editor heraus öffnen, in dem du im "Datei"-Menü die "Öffnen"-Aktion wählst. So solltest du das normale Fenster zur Dateiauswahl bekommen, in dem du zur settings.py-Datei navigieren und sie auswählen kannst. Stattdessen kannst du die Datei aber auch öffnen, in dem du im Dateimanager zum "djangogirls"-Ordner navigierst und auf die Datei rechtsklickst. Wähle dann deinen Code-Editor aus der Liste der "Öffnen mit"-Programme. Das ist wichtig, da du andere Programme installiert haben könntest, die diese Datei zwar öffnen können, aber die dich die Datei nicht editieren lassen würden.

Es wäre schön, wenn die richtige Zeit auf deiner Webseite eingestellt ist. Gehe zur Zeitzonen-Liste auf Wikipedia und kopiere die für dich geltende Zeitzone (Spalte "TZ"), z.B. Europe/Berlin.

Suche in settings.py die Zeile, die TIME_ZONE enthält und ändere sie ab, um deine eigene Zeitzone auszuwählen. Zum Beispiel:

mysite/settings.py

TIME_ZONE = 'Europe/Berlin'

Ein Sprachkennung besteht aus einem Kürzel für die Sprache, z.B. en für Englisch oder de für Deutsch, und einem Länder-Kürzel z.B. de für Deutschland oder ch für die Schweiz. Falls Englisch nicht deine Muttersprache ist, kannst du damit die Standard-Knöpfe und -Meldungen von Django auf deine Sprache wechseln. Der "Cancel"-Knopf würde dann in diese Sprache übersetzt (und z.B. bei Deutsch mit "Abbrechen" beschriftet). Django enthält viele fix-fertige Übsersetzungen.

Wenn du eine andere Sprache als Englisch willst, ändere die Sprachkennung, indem du die folgende Zeile änderst:

mysite/settings.py

LANGUAGE_CODE = 'de-ch'

Ausserdem müssen wir einen Pfad für statische Dateien festlegen. (Über statische Dateien und CSS lernst du später in diesem Tutorial etwas.) Geh hinunter zum Ende der Datei und füge direkt unter dem STATIC_URL-Eintrag einen neuen Eintrag namens STATIC_ROOT ein:

mysite/settings.py

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

Wenn DEBUG auf True gesetzt ist und ALLOWED_HOSTS leer, dann wird der "Host" gegen ['localhost', '127.0.0.1', '[::1]'] validiert. Unser Hostname auf PythonAnywhere, wo wir unsere Anwendung deployen werden, würde da nicht passen. Deswegen ändern wir folgende Einstellung:

mysite/settings.py

ALLOWED_HOSTS = ['127.0.0.1', '.pythonanywhere.com']

Hinweis: Wenn du ein Chromebook verwendest, füge noch diese Zeile am Ende deiner settings.py-Datei hinzu: MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'

Füge auch .amazonaws.com zu den ALLOWED_HOSTS hinzu, wenn du Cloud9 benutzt.

Eine Datenbank erstellen

Es gibt viele verschiedene Datenbank Programme, welche die Daten unserer Website verwalten können. Wir werden die Standard-Datenbanksoftware nehmen, sqlite3.

Das sollte schon in der mysite/settings.py-Datei eingestellt sein:

mysite/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

Um eine Datenbank für unseren Blog zu erstellen, müssen wir folgenden Befehl in der Konsole ausführen (Dazu müssen wir in dem djangogirls-Verzeichnis sein, in dem sich auch die manage.py-Datei befindet). Wenn alles glatt läuft, sollte das so aussehen:

command-line

(myvenv) ~/djangogirls$ python manage.py migrate
Operations to perform:
  Apply all migrations: auth, admin, contenttypes, sessions
Running migrations:
  Rendering model states... DONE 
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK 
  Applying contenttypes.0002_remove_content_type_name... OK 
  Applying auth.0002_alter_permission_name_max_length... OK 
  Applying auth.0003_alter_user_email_max_length... OK 
  Applying auth.0004_alter_user_username_opts... OK  
  Applying auth.0005_alter_user_last_login_null... OK 
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying sessions.0001_initial... OK

Und wir sind fertig! Zeit, unseren Webserver zu starten, um zu sehen, ob unsere Website funktioniert!

Den Webserver starten

Kontrolliere, dass du in dem Verzeichnis bist, in dem die manage.py-Datei liegt (das djangogirls-Verzeichnis). Wir starten den Webserver, indem wir in der Konsole python manage.py runserver ausführen:

command-line

(myvenv) ~/djangogirls$ python manage.py runserver

Wenn du ein Chromebook verwendest, benutze stattdessen diesen Befehl:

Cloud 9

(myvenv) ~/djangogirls$ python manage.py runserver 0.0.0.0:8080

Wenn du Windows benutzt und dies mit dem UnicodeDecodeError fehlschläft, verwende diesen Befehl:

command-line

(myvenv) ~/djangogirls$ python manage.py runserver 0:8000

Jetzt wollen wir schauen, ob unsere Website funktioniert: Öffne deinen Browser (Firefox, Chrome, Safari, Edge oder was du sonst nutzt) und gib diese Adresse ein:

browser

http://127.0.0.1:8000/

Wenn du ein Chromebook und Cloud9 verwendest, dann klicke stattdessen die URL in dem erschienenen Fenster in der oberen rechten Ecke des Kommandozeilenfensters, in dem der Webserver läuft. Die URL sollte etwa so aussehen:

browser

https://<a bunch of letters and numbers>.vfs.cloud9.us-west-2.amazonaws.com

Glückwunsch! Du hast gerade deine erste Website erstellt und sie auf deinem Webserver laufen! Ist das nicht toll?

Installation hat funktioniert!

Beachte, dass ein Terminalfenster immer nur eine Sache zur selben Zeit erledigen kann, und in dem Terminalfenster, was du vorhin geöffnet hast, läuft gerade der Webserver. Und solange der Webserver läuft und auf einkommende Anfragen wartet, akzeptiert das Terminal zwar Texteingaben, aber es wird keine neuen Befehle ausführen.

Wie Webserver funktionieren, haben wir im Kapitel "Wie das Internet funktioniert" angesehen.

Öffne ein neues Terminal und aktiviere dort dein virtualenv, damit du – auch während der Webserver läuft – neue Kommandos eingeben kannst. Um den Webserver zu stoppen, wechsel zurück in das Fenster, in dem er läuft, und drücke STRG+C - Steuerung und C gleichzeitig. (In Windows kann es sein, dass du STRG und "Pause"-Taste drücken musst).

Bereit für den nächsten Schritt? Es wird Zeit, ein paar Inhalte hinzuzufügen!

results matching ""

    No results matching ""