Django
Overzicht
Django is een hoog-niveau Python-webframework dat snelle ontwikkeling en schoon, pragmatisch ontwerp aanmoedigt. Het bevat een ingebouwde ORM, admin-paneel, authenticatiesysteem en templating-engine.
Snelstart
Repository aanmaken vanuit sjabloon
Ga in je dashboard naar het tabblad Tools & Deployment. Klik op de knop "New Repository", selecteer het Django-sjabloon uit het dropdownmenu, voer een repository-naam en subdomein in en klik vervolgens op "Create Repository".
Je repository klonen
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Afhankelijkheden installeren
pip install -r requirements.txt
Database configureren & migraties uitvoeren
Werk de databaseinstellingen bij in settings.py (zie Databaseconfiguratie hieronder), en voer dan uit:
python manage.py migrate
python manage.py runserver
De server draait standaard op http://localhost:8000.
Je wijzigingen pushen
git add .
git commit -m "Initial setup"
git push origin main
Lokale ontwikkeling met Docker
Als je geen Python lokaal hebt geïnstalleerd, kun je Docker gebruiken om je Django-applicatie uit te voeren.
Commando's uitvoeren met Docker
# Install dependencies
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt
# Run development server
docker run --rm -v $(pwd):/app -w /app -p 8000:8000 python:3.12 sh -c "pip install -r requirements.txt && python manage.py runserver 0.0.0.0:8000"
Databaseconfiguratie
Het NStrim-platform biedt je een MySQL/MariaDB-database. Werk de DATABASES-instelling in je settings.py-bestand bij.
Werk settings.py bij
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '<username>',
'USER': '<username>',
'PASSWORD': '<password>',
'HOST': 'db.<session-domain>',
'PORT': '3306',
}
}
student01). Controleer het inloggegevens-gedeelte van je dashboard voor de exacte waarden.Projectstructuur
├── project/
│ ├── settings.py # Projectconfiguratie
│ ├── urls.py # Hoofd-URL-configuratie
│ └── wsgi.py # WSGI-startpunt
├── app/
│ ├── models.py # Databasemodellen
│ ├── views.py # View-functies / classes
│ ├── urls.py # App-URL-patronen
│ ├── serializers.py # DRF-serializers
│ ├── admin.py # Admin-paneelconfiguratie
│ └── templates/ # HTML-templates
├── static/ # CSS, JS, afbeeldingen
├── manage.py # Django-management-CLI
├── requirements.txt # Python-afhankelijkheden
└── Dockerfile # Docker-configuratie
Veelvoorkomende taken
Een model aanmaken
from django.db import models
class User(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField(unique=True)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
Een view aanmaken
from django.http import JsonResponse
from .models import User
def user_list(request):
users = list(User.objects.values('id', 'name', 'email'))
return JsonResponse(users, safe=False)
URL-configuratie
from django.urls import path
from . import views
urlpatterns = [
path('users/', views.user_list, name='user-list'),
]
Handige commando's
python manage.py runserver
Ontwikkelingsserver starten
python manage.py migrate
Database-migraties uitvoeren
python manage.py makemigrations
Nieuwe migraties aanmaken op basis van modelwijzigingen
python manage.py createsuperuser
Admin-gebruiker aanmaken voor /admin-paneel
python manage.py shell
Interactieve Python-shell met Django
Probleemoplossing
OperationalError: (2002) Can't connect to MySQL server
Oorzaak: Database-host is onjuist of niet bereikbaar.
Oplossing: Controleer of HOST in de DATABASES-instelling overeenkomt met de database-host uit je dashboard.
OperationalError: (1045) Access denied for user
Oorzaak: Verkeerde gebruikersnaam of wachtwoord.
Oplossing: Controleer of USER en PASSWORD in je settings.py exact overeenkomen met je dashboard-inloggegevens.
No module named 'MySQLdb'
Oplossing: Installeer de MySQL-client: pip install mysqlclient. Op macOS heb je mogelijk ook nodig: brew install mysql-client.
DisallowedHost: Invalid HTTP_HOST header
Oplossing: Voeg je deployment-domein toe aan ALLOWED_HOSTS in settings.py: ALLOWED_HOSTS = ['*']