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.

Voordat je begint
Zorg ervoor dat je dashboard geopend is - je hebt de daar getoonde Git-inloggegevens nodig. Dit sjabloon bevat Django, Gunicorn, mysqlclient voor MySQL-ondersteuning en Django REST Framework.

Snelstart

1

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".

2

Je repository klonen

git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
3

Afhankelijkheden installeren

pip install -r requirements.txt
4

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.

5

Je wijzigingen pushen

git add .
git commit -m "Initial setup"
git push origin main
Elke push naar Git implementeert automatisch je applicatie. Bekijk je Module Work URL op het dashboard om je live site te zien.

Lokale ontwikkeling met Docker

Als je geen Python lokaal hebt geïnstalleerd, kun je Docker gebruiken om je Django-applicatie uit te voeren.

Wat is Docker?
Docker maakt geïsoleerde "containers" met alle software die je nodig hebt (Python, pip) zonder ze op je computer te installeren.

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',
    }
}
Belangrijk
Je databasenaam en gebruikersnaam zijn meestal hetzelfde als je dashboard-gebruikersnaam (bijv. 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 = ['*']

Implementatie-workflow

Codewijziging git push pip install Live!
Voor meer informatie kun je de officiële Django-documentatie raadplegen.