You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: de/django_forms/README.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ Als Letztes möchten wir auf unserer Website noch die Möglichkeit haben, Blogpo
4
4
5
5
Das Gute an Django-Forms ist, dass man sie entweder vollständig selbst definieren oder eine `ModelForm` erstellen kann, welche den Inhalt des Formulars in das Model speichert.
6
6
7
-
Genau das wollen wir jetzt machen: Wir erstellen ein Formular für unser `Post`Model.
7
+
Genau das wollen wir jetzt machen: Wir erstellen ein Formular für unser `Post`-Model.
8
8
9
9
So wie die anderen wichtigen Django-Komponenten haben auch die Forms ihre eigene Datei: `forms.py`.
10
10
@@ -85,7 +85,7 @@ Nach dem Hinzufügen der Zeile sieht deine HTML-Datei so aus:
85
85
</html>
86
86
```
87
87
88
-
Nach dem Speichern und Neuladen von http://127.0.0.1:8000 solltest du den bereits bekannten `NoReverseMatch`Fehler sehen. Ist dem so? Gut!
88
+
Nach dem Speichern und Neuladen von http://127.0.0.1:8000 solltest du den bereits bekannten `NoReverseMatch`-Fehler sehen. Ist dem so? Gut!
89
89
90
90
## URL
91
91
@@ -113,7 +113,7 @@ urlpatterns = [
113
113
114
114
Nach dem Neuladen der Site sehen wir einen `AttributeError`, weil wir noch keine `post_new`-View eingefügt haben. Fügen wir sie gleich hinzu!
115
115
116
-
## Die post_newView
116
+
## Die post_new-View
117
117
118
118
Jetzt wird es Zeit, die `blog/views.py` Datei zu öffnen und die folgenden Zeilen zu den anderen `from`-Zeilen hinzuzufügen:
119
119
@@ -373,7 +373,7 @@ Falls du mehr Informationen über Django-Formulare benötigst, solltest du die o
373
373
374
374
## Sicherheit
375
375
376
-
Neue Posts mit einem Linkklick zu erstellen, ist großartig! Aber im Moment ist jeder, der deine Seite besucht in der Lage, einen neuen Blogpost zu veröffentlichen und das ist etwas, dass du garantiert nicht willst. Lasst es uns so machen, dass der Button für dich angezeigt wird, aber für niemanden sonst.
376
+
Neue Posts mit einem Linkklick zu erstellen, ist großartig! Aber im Moment ist jeder, der deine Seite besucht in der Lage, einen neuen Blogpost zu veröffentlichen und das ist etwas, was du garantiert nicht willst. Lasst es uns so machen, dass der Button für dich angezeigt wird, aber für niemanden sonst.
377
377
378
378
Finde in der Datei `blog/templates/blog/base.html` unseren `page-header``div` und das Anchor-Tag, welches du zuvor eingefügt hast. Es sollte so aussehen:
Copy file name to clipboardExpand all lines: de/dynamic_data_in_templates/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@ from django.shortcuts import render
26
26
from .models import Post
27
27
```
28
28
29
-
Der Punkt vor `models` bedeutet *aktuelle Verzeichnis* oder *aktuelle Anwendung*. Die Dateien `views.py` und `models.py` liegen im selben Verzeichnis. Deswegen können wir `.` und den Namen der Datei (ohne `.py`) benutzen. Dann ergänzen wir für den Import den Namen des Models (`Post`).
29
+
Der Punkt vor `models` bedeutet *aktuelles Verzeichnis* oder *aktuelle Anwendung*. Die Dateien `views.py` und `models.py` liegen im selben Verzeichnis. Deswegen können wir `.` und den Namen der Datei (ohne `.py`) benutzen. Dann ergänzen wir für den Import den Namen des Models (`Post`).
30
30
31
31
Und nun? Um vom `Post`-Model die tatsächlichen Blogposts zu erhalten, brauchen wir etwas, das `QuerySet` heißt.
Copy file name to clipboardExpand all lines: de/extend_your_application/README.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ Wir haben bereits ein `Post`-Model, deshalb brauchen wir nichts zur `models.py`
12
12
13
13
## Erstelle eine Template-Verknüpfung
14
14
15
-
Wir beginnen mit dem Hinzufügen einer Verknüpfung in der `blog/templates/blog/post_list.html`-Datei. Derzeit sollte diese so aussehen: {% filename %}-blog/templates/blog/post_list.html-{% endfilename %}
15
+
Wir beginnen mit dem Hinzufügen einer Verknüpfung in der `blog/templates/blog/post_list.html`-Datei. Derzeit sollte diese so aussehen: {% filename %}blog/templates/blog/post_list.html{% endfilename %}
16
16
17
17
```html
18
18
{% extends 'blog/base.html' %}
@@ -40,7 +40,7 @@ Wir beginnen mit dem Hinzufügen einer Verknüpfung in der `blog/templates/blog/
40
40
41
41
{% raw %}Es ist an der Zeit, das mysteriöse `{% url 'post_detail' pk=post.pk %}` zu erklären. Wie du dir wahrscheinlich schon denkst, bedeutet `{% %}`, dass wir Django-Template-Tags verwenden. Dieses Mal verwenden wir eines, das eine URL für uns erzeugen wird! {% endraw %}
42
42
43
-
Der `post_detail`Teil bedeutet, dass Django eine URL in `blog/urls.py` mit dem Namen name=post_detail erwartet.
43
+
Der `post_detail`-Teil bedeutet, dass Django eine URL in `blog/urls.py` mit dem Namen name=post_detail erwartet.
44
44
45
45
Und was ist mit `pk=post.pk`? `pk` ist die Abkürzung für primary key (Primär-Schlüssel), ein eindeutiger Name für jeden Datensatz in einer Datenbank. Da wir keinen Primärschlüssel in unserem `Post`-Model angelegt haben, erstellt Django einen für uns (standardmäßig ist das eine Zahl, die mit jedem Eintrag nach oben gezählt wird, z.B. 1, 2, 3) und fügt den Schlüssel in einem Feld namens `pk` zu jedem unserer Blogposts hinzu. Wir können auf den Primärschlüssel durch `post.pk` zugreifen, genauso wie auf andere Felder (`title`, `author`, usw.) in unserem `Post`-Objekt!
46
46
@@ -98,7 +98,7 @@ Aber bei diesem Code gibt es ein Problem. Wenn es kein `Post`-Objekt mit diesem
98
98
99
99

100
100
101
-
Das wollen wir nicht! Zum Glück stellt uns Django etwas zur Verfügung, das uns dieses Problem abnimmt: `get_object_or_404`. Wenn es kein `Post`-Objekt mit einem gegebenen `pk` gibt, wird eine schöne Seite angezeigt, die sogenannte `Page Not Found 404`Seite ("Seite nicht gefunden"-Seite).
101
+
Das wollen wir nicht! Zum Glück stellt uns Django etwas zur Verfügung, das uns dieses Problem abnimmt: `get_object_or_404`. Wenn es kein `Post`-Objekt mit einem gegebenen `pk` gibt, wird eine schöne Seite angezeigt, die sogenannte `Page Not Found 404`-Seite ("Seite nicht gefunden"-Seite).
102
102
103
103

104
104
@@ -162,11 +162,11 @@ Das sieht dann so aus:
162
162
163
163
Wir erweitern wieder `base.html`. Im `content`-Block wollen wir das Publikationsdatum eines Posts (published_date), falls es existiert, anzeigen und auch den Titel und den Text. Aber wir müssen noch ein paar wichtige Dinge klären, oder?
164
164
165
-
{% raw %}`{% if ... %} ... {% endif %}` ist ein Template-Tag, das wir benutzen können, wenn wir etwas überprüfen möchten. (Erinnerst du dich an `if ... else` vom Kapitel **Einführung in Python**?) In diesem Fall hier wollen wir prüfen, ob das `published_date</0> Feld eines Post-Objektes nicht leer ist. {% endraw %}</p>
165
+
{% raw %}`{% if ... %} ... {% endif %}` ist ein Template-Tag, das wir benutzen können, wenn wir etwas überprüfen möchten. (Erinnerst du dich an `if ... else` vom Kapitel **Einführung in Python**?) In diesem Fall hier wollen wir prüfen, ob das `published_date`-Feld eines Post-Objektes nicht leer ist. {% endraw %}
166
166
167
-
<p>OK, aktualisieren wir unsere Seite und sehen, ob <code>TemplateDoesNotExist` jetzt weg ist.
167
+
OK, aktualisieren wir unsere Seite und sehen, ob `TemplateDoesNotExist` jetzt weg ist.
168
168
169
-

169
+

170
170
171
171
Yay! Es funktioniert!
172
172
@@ -179,7 +179,7 @@ Es wäre schön zu sehen, ob deine Website noch auf PythonAnywhere funktioniert,
179
179
$ git status
180
180
$ git add --all .
181
181
$ git status
182
-
$ git commit -m "View und Template für Blog-Post-Details sowie CSS für die Website hinzugefügt"
182
+
$ git commit -m "View und Template für Blogpost-Details sowie CSS für die Website hinzugefügt"
Copy file name to clipboardExpand all lines: de/how_the_internet_works/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,7 +22,7 @@ Ziemliches Durcheinander, oder? Eigentlich ist es ein Netzwerk aus verbundenen M
22
22
23
23

24
24
25
-
Faszinierend, oder? Es ist jedoch nicht möglich, Kabel zwischen allen Servern des Internet zu schalten. Damit wir eine Maschine (z.B. diejenige, auf welcher https://djangogirls.org abgespeichert ist) erreichen können, muss unsere Anfrage über viele verschiedene andere Maschinen weitergeleitet werden.
25
+
Faszinierend, oder? Es ist jedoch nicht möglich, Kabel zwischen allen Servern des Internets zu schalten. Damit wir eine Maschine (z.B. diejenige, auf welcher https://djangogirls.org abgespeichert ist) erreichen können, muss unsere Anfrage über viele verschiedene andere Maschinen weitergeleitet werden.
Copy file name to clipboardExpand all lines: de/python_introduction/README.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,7 +28,7 @@ Wir wollen eine Python Konsole öffnen, also tippe unter Windows `python` oder i
28
28
29
29
Nach Eingabe von python3 in der Konsole ändert sich das Prompt-Zeichen zu `>>>`. Für uns bedeutet das, dass wir ab nun nur noch Python-Code eingeben können. Den Python-Prompt `>>>` musst du nicht jedesmal eingeben - dies macht Python für dich.
30
30
31
-
Wenn du die Python-Konsole wieder verlassen möchtest, gib `exit()` ein oder nutze das Tastatur-Kürzel `Strg + Z` unter Windows bzw. `Strg + D`, wenn du einen Mac hast oder Linux verwendest. Dann bist Du wieder in der normalen Konsole und der Python-Prompt `>>>` ist weg.
31
+
Wenn du die Python-Konsole wieder verlassen möchtest, gib `exit()` ein oder nutze das Tastatur-Kürzel `Strg + Z` unter Windows bzw. `Strg + D`, wenn du einen Mac hast oder Linux verwendest. Dann bist du wieder in der normalen Konsole und der Python-Prompt `>>>` ist weg.
32
32
33
33
Fürs Erste bleiben wir in der Python Konsole, wir wollen mehr darüber lernen. Lass uns mit ein wenig Mathematik anfangen, gib `2 + 3` ein und drück `enter`.
34
34
@@ -107,7 +107,7 @@ oder du kannst den Apostroph mit einem Backslash (``) markieren:
107
107
"Runnin' down the hill"
108
108
```
109
109
110
-
Toll, was? Um deinen Namen in Großbuchstaben anzuzeigen, gib folgendes ein:
110
+
Toll, was? Um deinen Namen in Großbuchstaben anzuzeigen, gib Folgendes ein:
111
111
112
112
{% filename %}command-line{% endfilename %}
113
113
@@ -478,7 +478,7 @@ Schon gespannt auf den nächsten Teil? :)
478
478
479
479
> Für die Leser zu Hause: Dieses Kapitel wird im Video [Python Basics: Comparisons](https://www.youtube.com/watch?v=7bzxqIKYgf4) behandelt.
480
480
481
-
Ein großer Teil beim Programmieren besteht darin, Dinge zu vergleichen. Was lässt sich am besten vergleichen? Zahlen!. Schauen wir uns mal an, wie das funktioniert:
481
+
Ein großer Teil beim Programmieren besteht darin, Dinge zu vergleichen. Was lässt sich am besten vergleichen? Zahlen! Schauen wir uns mal an, wie das funktioniert:
Copy file name to clipboardExpand all lines: de/template_extending/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -144,4 +144,4 @@ Nur eine Sache noch. Wir müssen die beiden Templates miteinander verknüpfen. D
144
144
145
145
Das war's! Probier aus, ob deine Website noch richtig funktioniert. :)
146
146
147
-
> Wenn du den Fehler `TemplateDoesNotExist` erhältst, dann heißt das, dass es die Datei `blog/base.html` nicht gibt und dass `runserver` in der Konsole läuft. Halte ihn an (durch Drücken von Ctrl+C – Control und die CTaste gleichzeitig) und starte ihn neu, in dem du den Befehl `python manage.py runserver` ausführst.
147
+
> Wenn du den Fehler `TemplateDoesNotExist` erhältst, dann heißt das, dass es die Datei `blog/base.html` nicht gibt und dass `runserver` in der Konsole läuft. Halte ihn an (durch Drücken von Ctrl+C bzw. Strg+C – Control- und die C-Taste gleichzeitig) und starte ihn neu, indem du den Befehl `python manage.py runserver` ausführst.
0 commit comments