2021-09-20 ========== .. sectnum:: Django installeren ----------------------- Maak een nieuwe virtual environment en installeer hierin Django met behulp van pip. Het package heet 'django'. Django project ----------------------- Maak een Django project aan met:: django-admin startproject gametracker Bovenstaand commando maakt automatisch een aantal bestanden voor je aan. Doorblader de aangemaakte mappen, en bekijk de aangemaakte bestanden even. - manage.py: voorziet een aantal Django commando's die veelgebruikte taken uitvoeren - gametracker/settings.py: de instellingen voor je Django project - gametracker/urls.py: de URL naar view mapping Voer het volgende commando uit om de datebase aan te maken:: python manage.py migrate Applicatieserver opstarten -------------------------- Voer het volgende commando uit:: python manage.py runserver Surf nu naar `localhost:8000`. Wat zie je? Admin gebruiker aanmaken ------------------------ Voer het volgende commando uit:: python manage.py createsuperuser Volg de instructies uit om een gebruiker aan te maken. Django admin interface ---------------------- Start de applicatie-server opnieuw op met:: python manage.py runserver Surf nu naar `http://localhost:8000/admin/` en login met je nieuwe credentials. Django admin - add user ----------------------------- Voeg een gebruiker toe met naam 'morty' en een password. Django admin - login as user ----------------------------- Log uit, en log opnieuw in als user 'morty'. Kan je aan de admin? Django admin - add staff user ----------------------------- Voeg een gebruiker toe met naam 'rick' en een password. Geef deze gebruiker staff rechten. Django admin - login as staff ----------------------------- Log uit, en log opnieuw in als user 'rick'. Kan je aan de admin? Django app ----------------------- Maak een Django app aan met:: python manage.py startapp game Ook dit commando maakt een aantal bestanden voor je aan. Doorblader de aangemaakte mappen, en bekijk de aangemaakte bestanden even. - game/models.py: hierin omschrijf je de informatie die je in de database wil bijhouden - game/admin.py: hiermee kan je je eigen data aan de admin toevoegen - game/views.py: hierin kan je views toevoegen zoals we vorig jaar reeds deden App aan project toevoegen ------------------------- Open `gametracker/settings.py` en zoek naar een lijst met naam `INSTALLED_APPS`. Voeg 'game' aan de lijst toe. Data model toevoegen ------------------------- Open `game/models.py` en voeg onderstaande code toe:: class Game(models.Model): name = models.CharField(max_length=200) Dit zorgt ervoor dat er een tabel "game" voorzien wordt, waarin de namen van games opgeslagen kunnen worden met een maximale lengte van 200 characters. Database aanpassen ------------------------ Voer het volgende commando uit:: python manage.py makemigrations Dit commando bekijkt je project, en schrijft Python code om je database automatisch aan te passen. Voer het volgende commando uit:: python manage.py migrate Dit commando voert de eerder genoemde Python code uit, om zo de database aan te passen. App aan admin toevoegen ------------------------- Open `game/admin.py` en voeg onderstaande code toe:: from .models import Game admin.site.register(Game) Hiermee koppelen we onze eigen class (database model) aan de database. Django admin Game interface --------------------------- Start de applicatie-server opnieuw op met:: python manage.py runserver Surf nu naar `http://localhost:8000/admin/` en voeg een game toe aan de database. Database model uitbreiden ------------------------- Open `game/models.py` en voeg onderstaande code toe:: class Game(models.Model): name = models.CharField(max_length=200) release_year = models.PositiveSmallIntegerField(blank=True, null=True) # nieuw! Dit zorgt ervoor dat er in tabel "game" een tweede kolom "release_year" voorzien wordt. Database opnieuw aanpassen -------------------------- Voer het volgende commando uit:: python manage.py makemigrations Dit commando bekijkt je project, en schrijft Python code om je database automatisch aan te passen. Voer het volgende commando uit:: python manage.py migrate Dit commando voert de eerder genoemde Python code uit, om zo de database aan te passen. Django admin Game aanpassen --------------------------- Start de applicatie-server opnieuw op met:: python manage.py runserver Surf nu naar `http://localhost:8000/admin/` en voeg nu een release jaar aan je games toe aan de database. Database model uitbreiden met een boolean field --------------------------------------------------- Open `game/models.py` en voeg onderstaande code toe:: multiplayer = models.BooleanField(default=False) Dit zorgt ervoor dat er in tabel "game" een derde kolom "multiplayer" voorzien wordt. Gebruik 'makemigrations' en 'migrate' om de database aan te passen. Database uitbreiden met een tweede tabel ---------------------------------------------------- Open `game/models.py` en voeg onderstaande code toe:: class Publisher(models.Model): name = models.CharField(max_length=200) Dit zorgt ervoor dat er een tweede tabel "publisher" bijkomt. Gebruik 'makemigrations' en 'migrate' om de database aan te passen. Voeg Publisher ook toe aan de admin. Database model Game uitbreiden met een foreign key --------------------------------------------------- Open `game/models.py` en voeg onderstaande code toe aan de Game class:: publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE) Dit zorgt ervoor dat er in tabel "game" een vierde kolom "publisher" voorzien wordt. Gebruik 'makemigrations' en 'migrate' om de database aan te passen.