Ich habe das Repo mal aktualisiert. Folgende Dateien wurden verändert/hinzugefügt mit Kommentaren:
- settings.py, siehe unter dem Punkt TEMPLATE
- useres directory
- views.py, neue views
- urls.py, neue urls mit Parametern
- context_processory.py, neue File. Ermöglicht globale Variablen/Objekte für alle Templates
- models.py, model aktualisiert
- templates
- users
- public_profile.html, neue File, Ansicht eines bestimmten Profiles eines Users
- users_list.html, Tabelle mit allen Usern
- base.html, verändert, jetzt mit Sidebar, bootstrap_theme hinzugefügt mit Übungsaufgabe
- left_sidebar.html, Code für die Sidebar in base.html
- users
Bevor ihr das Projekt zum Laufen bringt, bitte python3 manage.py migrate
in
eurem Terminal eingeben.
Bei Verständnisfragen einfach eine Mail an mich. Hoffe ihr hattet Spaß, vielen Dank für's kommen und bis zum nächsten Mal! :)
- Verhindern, dass registrierte User auf die register-page zugreifen können
- Eine View bauen, die einem zu einem random Profile weiterleitet
- Die Übungsaufgabe, siehe base.html
- Neues Datenmodell, das Lieblingsfussballteams speichert und Lieblingssportler
Hey, bevor du zum TechTalk-django kommst, würde ich dich bitten, schonmal folgende Dinge zu testen & beachten.
Wenn du keine Kenntnisse in Python hast, ist das kein Problem. Das Meiste lernt man so wie so beim Programmieren. Ledglich OOP sollte dir kein Fremdwort sein.
-
Python3 installiert
-
Verbindung mit dem Eduroam-Wifi
-
Ich empfehle den Editor Pycharm von Jetbrains - gibt keinen besseren Editor für Django - , als Student müsst ihr auch nichts zahlen - gilt auch für alle anderen Editoren von denen für z.B. Java(Intellij), SQL(DataGrip), C++(Clion), Go(Goland) etc.
Alternativ VS-Code, Sublime oder Atom. Dort könnt ihr durch das Installieren von Paketen den Editor in einen Django-Editor verwandeln. Atom ist auf allen Plattformen verfügbar und ist opensource.
-
Was ist Django & Bootstrap? - 10Min
-
Wie kommt Django zum Einsatz? - 5Min
-
Meine Erfahrung mit Django - Vorteil & Nachteile - 5Min
-
Programmieren - Hauptteil
- CBV vs Func Views
- Template Language
- Models & Forms
- Bootstrap Grid System
- context processors
- Common Mistakes/Bugs/Errors
-
Abschluss, Verweis auf Projekt der Freitagsrunde: Community der Fakultät IV - 5Min
Falls du nicht sicher bist ob du auf deinem Rechner Dinge umkonfiguerieren oder installieren möchtest, kannst du eine virtuelle Maschine einrichten und eine frische Installation von Ubuntu benutzten. Dafür kannst du VirtualBox verwenden und Ubuntu auf deiner virtuellen Maschine installieren.
Stell sicher, dass du Python3 installiert hast. Dazu öffne dein Terminal und gib ein python -V
. Es mag sein, dass manche von euch sowhol Python 2 als
auch PYthon3 installiert haben. Falls das der Fall ist, dann einfach python3 -V
eingeben im Terminal.
Stellt mit pip3 -V
sicher, dass ihr pip3 installiert habt. Falls nicht, könnt ihr unter Ubuntu mit sudo apt install python3-pip
.
Unter Ubuntu werdet ihr noch das python3-venv Paket benötigen. Führt folgendes im Terminal aus um diesen Paket zu innstallieren: sudo apt install python3-venv
.
Anschließend installiert ihr das Paket virtualenv.
Einfach im Terminal pip3 install --user virtualenv
eingeben
Anschließend könnt ihr schonmal folgendes testen:
- Erstellt einen neuen Ordner
- Navigiert zum Order mit dem Terminal und führt dann diesen Befehl aus:
python3 -m venv myEnv
- Jetzt müssen wir die neue Virtualenv mit dem folgenden Befehl aktivieren:
source myEnv/bin/activate
- Wenn alles gut gelaufen ist, dann steht jetzt in eurem Terminal (myEnv) vor jeder Zeile
- Anschließend installieren wir Django:
pip3 install Django
(Django wird in der Version 2.0.6 installiert) - Führt folgenden Befehl aus (Ganz wichtig ist der Punkt am Ende, der sorgt für Ordnung im Ordner. Bitte nicht vergessen!):
django-admin.py startproject techtalk .
python3 manage.py migrate
eingebenpython3 manage.py runserver
eingeben- Jetzt öffnet euren Browser und ruft 127.0.0.1:8000 auf.
- Wenn alles geklappt habt, solltet ihr eine Willkommensseite sehen.
Wenn es irgendwo zwischen durch Probleme gibt, könnt ihr mir gerne eine E-Mail schicken: [email protected]
Aktivierung der venv bei Windows: {{venv}}\Scripts\activate - hab ich mir sagen lassen ;-)
Linux/Mac: source {{venv}}/bin/activate
- Anaconda
- Sublime Code Intel
- Djaneiro
- atom-django
- Channels
- Rest Framework
- django-cleanup
- django-polymorphic
- django-boostrap3 oder 4
- django-heroku
- django-allauth
Method | Beschreibung | Code |
---|---|---|
get | Gibt ein Objekt zurück, Error wenn mehrere oder keins | user = User.objects.get(id=1) |
get_or_create | Gibt Objekt und bool zurück, falls das Objekt erstellt wurde | User, created = User.objects.get_or_create(id=1, username=“tuberlin“) |
filter | Gibt eine Queryset zurück | users = User.objects.filter(id__gte=1) # id__gte = 1 == id >= 1 |
create | Erstellt ein neues Objekt und gibt es zurück | user = User.objects.create(username=“freitagsrunde“) |
delete | Löscht Objekt oder Objekte. Kann aufgerufen werden auf einzelnes Objekt oder Queryset | User.objects.filter(id__gte=1).delete() User.objects.get(id=1).delete() |
update | Updated ein Feld. Kann nur auf queryset aufgerufen werden | Articles.objects.filter(headline=“Clinton won Election“).update(headline=”Trump won Election”) |
Field | Beschreibung |
---|---|
IntegerField | ganze Zahlen |
PositivIntegerField | natürliche Zahlen |
DecimalField | Dezimal Zahlen |
CharField | Text, max_length required |
TextField | Text |
OneToOneField* | Beziehung zu einem anderen Model, ein User hat genau ein Profil und ein Profil genau einen User |
ForeignKey* | Beziehung zu einem anderen Model, ein User kann mehrer Autos haben, aber ein Auto nur einen User(Käufer) |
ManyToManyField* | Beziehung zu einem anderen Model, ein User kann mehrer Facebookposts liken und ein Facebookpost kann mehrere Likes haben |
DateTimeField | speichert ein Datum inklusive der Zeit |
DateField | speichert ein Datum exklusive der Zeit |
SlugField | Slugs |
- Alle Beziehungsfelder benötigen auch eine on_delete-Definition.
- Wenn ein Feld nicht ausgefüllt werden muss, dann null=True hinzufügen.
- Es ist möglich choices für einige Felder zu definieren.
- DateTimeField werden häufig mit auto_now_add=True oder auto_now=True benutzt, auto_now_add fügt nur das Datum beim ersten Erstellen des Objektes hinzu, auto_now aktualisert jedes mal die Zeit bei jedem Speichervorgang.
Method | Beschreibung | Code |
---|---|---|
extends | Template erweitert ein anderes Template, kann nur einmal verwendet werden und muss erste Zeile sein | {% extends "base.html" %} |
include | Template fügt dein Code eines anderen Templates mit ein | {% include "sidebar.html" %} |
if | if statement im template | {% if request.user.is_authenticated %} Welcome {% else %} Register {% endif %} |
with | Speichert Wert/Objekt in einer variable | {% with request.user.username as username %} Hi, {{ username }}, Wie geht es dir {{ username }} {% endwith %} |
for | For-Loop über ein Queryset | {% for user in users %} {{ user.username }} {% endfor %} |
load | lädt Templatetags & -filter in das Template, nötig um diese zu benutzen | {% load bootstrap3 %} |
base command: python3 manage.py some_command
Command | Beschreibung |
---|---|
runserver | startet den server auf 127.0.0.1:8000 |
startapp | Erstellt eine neue App |
shell | Python-Shell mit Zugriff auf alle Modelle im Projekt |
makemigrations | Erstellt migration-files für die Datenbank |
migrate | migration-files werden ausgeführt, Datenbank wird angepasst |
createsuperuser | Erstellt einen Superuser, hat zugriff auf alles auf der Adminseite |
collectstatic | Sammelt alle static Files, und deployed sie z.B. zu Amazon |
Code | Beschreibung |
---|---|
col-lg-12 | 12 = 100%, 1 = 100%*1/12 |
btn | button |
panel | "Tafel" |
text-center | Zentriert Text, kann auch Text färben mit text-success z.B. |
table | Table class, häufig im Zusammenspiel mit 'table class="table borderless table-hover"' |
hidden-xs | display:none; für Smartphones, für tablets z.B. hidden-sm |