Django is een bekend webframework dat het proces van het maken van robuuste, schaalbare, veilige en krachtige webapps stroomlijnt. Het is een open-source project geschreven in Python. Je kunt hier meer gedetailleerde informatie over Django vinden.
Elke webapp heeft een database nodig als backend om gegevens te beheren. Django ondersteunt verschillende database-engines als backend, bijvoorbeeld MySQL, PostgreSQL, SQLite enz. PostgreSQL is een krachtig, open-source object-relationeel databasesysteem. Het staat bekend om zijn betrouwbaarheid, schaalbaarheid, beveiliging en robuuste functieset. Je kunt hier meer leren over PostgreSQL.
In deze handleiding laten we zien hoe je PostgreSQL integreert als backend in een voorbeeld-Django-app.
Vereisten
Werken met Django vereist bepaalde systeemconfiguraties.
- Een correct geconfigureerde Ubuntu 21.04-server. Leer meer over het opzetten van een Ubuntu-server.
- Een Python-ontwikkelomgeving. Django is geschreven in Python, dus het heeft de Python-omgeving nodig om te draaien.
- PostgreSQL geïnstalleerd, aangezien we dit gaan gebruiken als de databaseserver voor onze Django-app. Leer meer over het installeren en configureren van PostgreSQL op Ubuntu hier.
Deze handleiding laat ook zien hoe je verschillende Python-modules en -bibliotheken gebruikt die nodig zijn voor een functionele Django-app.
Stap 1. De benodigde componenten installeren
Om ons project te laten werken, hebben we een aantal belangrijke pakketten nodig die op ons Ubuntu-systeem zijn geïnstalleerd. Gelukkig zijn ze allemaal direct beschikbaar vanuit de officiële Ubuntu-pakketbronnen. Deze pakketten bevatten Python-componenten en database- (PostgreSQL) componenten.
Start eerst de terminal en werk de APT-pakketcache bij:
|
1 |
sudo apt update |
Installeer vervolgens de pakketten:
|
1 |
sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib |
Stap 2. De database voorbereiden
PostgreSQL is nu geïnstalleerd en klaar voor gebruik. Vervolgens gaan we een speciale database en een gebruiker aanmaken voor onze Django-app. Het hebben van een speciale gebruiker is gunstig voor database- en rechtenbeheer.
Tijdens de installatie maakt PostgreSQL een speciale gebruiker aan postgres. Deze heeft de rechten om elke administratieve taak op PostgreSQL uit te voeren. Open het postgres account:
|
1 |
sudo su – postgres |
Je zou in een nieuwe shell-sessie moeten belanden onder de gebruiker postgres. Open vervolgens een PostgreSQL-shell:
|
1 |
psql |
We gaan nu een speciale database maken voor onze Django-app. Het wordt aanbevolen om deze een naam te geven die overeenkomt met de Django-app:
|
1 |
CREATE DATABASE <database_name>; |
Vervolgens maken we een speciale databasegebruiker aan. We gebruiken deze gebruiker om toegang te krijgen tot de voor Django bestemde database:
|
1 |
CREATE USER <username> WITH PASSWORD '<password>'; |
De volgende stap is het aanpassen van een paar verbindingsparameters voor de nieuwe gebruiker. Het helpt de databasebewerkingen te versnellen, omdat de waarden niet telkens hoeven te worden opgevraagd wanneer er een verbinding tot stand wordt gebracht. Voer de volgende opdrachten uit:
|
1 2 3 |
ALTER ROLE <username> SET client_encoding TO 'utf8'; ALTER ROLE <username> SET default_transaction_isolation TO 'read committed'; ALTER ROLE <username> SET timezone TO '<timezone>'; |
Laten we deze opdrachten kort doornemen:
-
We stellen de standaardcodering in op UTF-8. Dit is wat Django verwacht bij de interactie met databases.
-
Het standaard transactieschema is ingesteld op 'read committed', zodat leesacties van niet-doorgevoerde transacties worden geblokkeerd.
-
De tijdzone moet worden ingesteld op basis van de locatie.
Als je niet zeker bent van de naam van de tijdzone, geeft de volgende opdracht een lijst van alle tijdzones die door PostgreSQL worden ondersteund:
|
1 |
SELECT * FROM pg_timezone_names; |
Verleen ten slotte de nieuwe gebruiker volledige rechten op de voor Django bestemde database:
|
1 |
GRANT ALL PRIVILEGES ON DATABASE <database_name> TO <username>; |
Ons werk met PostgreSQL is nu klaar. Sluit de psql shell en log uit de postgres sessie.
Stap 3. Django installeren
We hebben de benodigde databaseserver voor onze Django-app geconfigureerd. Nu gaan we de speciale Django-app installeren en configureren. Hoewel Django rechtstreeks beschikbaar is vanuit de officiële Ubuntu-repository, raden we deze methode niet aan. Hiermee wordt Django systeembreed geïnstalleerd. Voor betere flexibiliteit en beheergemak installeren we Django in plaats daarvan in een virtuele omgeving. Het is een standaardpraktijk om Django te installeren en te configureren binnen een virtuele Python-omgeving.
Python heeft een module virtualenv die een virtuele Python-omgeving op een doellocatie maakt. De omgeving krijgt zijn eigen kopie van Python-binaries en -configuraties. Wijzigingen binnen de virtuele omgeving hebben geen invloed op de rest van het systeem.
Installeer virtualenv:
|
1 |
sudo apt install virtualenv |
Vervolgens is ons doel om een speciale map te hebben om de virtuele Python-omgeving in te richten. Deze zal dienen als de basis voor onze Django-app. Ter demonstratie zal de naam van onze app sample_app zijn. Maak een nieuwe map aan:
|
1 |
mkdir -pv <dir_name> |
Wijzig de huidige actieve map en richt de virtuele omgeving in:
|
1 2 |
cd sample_app/ virtualenv sample_app_env |
Activeer daarna de virtuele omgeving:
|
1 |
source sample_app_env/bin/activate |
De virtuele omgeving is nu klaar en functioneel. Vervolgens gebruiken we pip om Django en psycopg2 (een Python-adapter voor PostgreSQL) te installeren:
|
1 |
pip install django psycopg2 |
Ten slotte kunnen we een nieuw Django-project maken met behulp van de Django-tools. Dit genereert een submap met dezelfde naam die alle code en een beheerscript in de huidige map bevat:
|
1 |
django-admin startproject <project_name> . |
Stap 4. Het Django-project configureren
Het Django-project heeft alle basistools om als web-app te functioneren. Om het met onze database te integreren, moeten we enkele aanpassingen doen in de configuratiebestanden.
Open het bestand settings.py in een tekstverwerker:
|
1 |
nano settings.py |
Scroll naar beneden naar de sectie DATABASES. Standaard is deze geconfigureerd om SQLite:
te gebruiken. Wijzig de code voor ons doel als volgt:
|
1 2 3 4 5 6 7 8 9 10 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': '<db_name>', 'USER': '<db_user>', 'PASSWORD': '<db_user_password>', 'HOST': 'localhost', 'PORT': '', } } |
Hier vertellen we Django om de psycopg2-adapter te gebruiken voor databasecommunicatie. We declareren ook alle benodigde database-informatie, zoals de databasenaam, samen met de gebruikersnaam en het wachtwoord van de speciale gebruiker.
Sla het bestand op als u klaar bent en sluit de editor.
Stap 5. De database migreren
Django is geconfigureerd om toegang te krijgen tot onze PostgreSQL-database. We kunnen nu de datastructuur naar onze database migreren. In Django staat dit bekend als migratie.
Om de databasewijzigingen te migreren, roept u het beheerscript manage.py:
|
1 |
python manage.py makemigrations |

|
1 |
python manage.py migrate |
Maak vervolgens een superuser aan voor onze Django-app:
|
1 |
python manage.py createsuperuser |
Dit superuser-account zal fungeren als het beheerdersaccount voor onze Django-app.
Stap 6. De wijzigingen testen
Tot nu toe hebben we meerdere aanpassingen gedaan aan onze Django-app. Tijd om te controleren of alles naar behoren werkt. We verifiëren dit door de app te starten en het beheerderspaneel te openen.
Omdat we de Django-app lokaal ontwikkelen, starten we de server op localhost. Traditioneel starten we deze op poort 8000. Als je een firewall hebt geconfigureerd, moet deze verkeer naar poort toestaan8000. Lees hier meer over de basisprincipes van UFW.
Start de Django-server:
|
1 |
python manage.py runserver localhost:8000 |
Open de URL in een browser:
|
1 |
http://localhost:8000 |
Je zou op de succespagina van de Django-installatie moeten terechtkomen. Ga naar de volgende URL om de Django-beheerpagina te openen:
|
1 |
http://localhost:8000/admin |
Je moet de superuser gebruiken die we hebben aangemaakt om in te loggen:
Voila! We zijn succesvol op het beheerderspaneel terechtgekomen!
Als je klaar bent met verkennen, druk dan op Ctrl + C in de console om de Django-server te stoppen.
Tot slot
In deze handleiding hebben we met succes gedemonstreerd hoe je een voorbeeld-Django-app opzet en PostgreSQL configureert als backend. Hoewel SQLite over het algemeen ruim voldoende is voor de behoeften tijdens de ontwikkeling (en licht productiegebruik), zullen de meeste projecten veel baat hebben bij de overstap naar een DBMS met meer functies. PostgreSQL is een uitstekende optie voor prestaties en schaalbaarheid.
Django is een veelzijdig webframework dat met tal van technologieën kan samenwerken. Bekijk meer cloudhandleidingen die het gebruik van Django demonstreren:
- Django instellen met PostgreSQL, Nginx en Gunicorn op Ubuntu 20.04
- Een Django- en Gunicorn-applicatie bouwen met Docker op Ubuntu
- Een Django-applicatie beveiligen en schalen met Docker, Nginx en Let’s Encrypt
- Een Django-app maken met een databaseverbinding: een handleiding
Veel computerplezier!






















Reacties
Nog geen reacties. Wees de eerste.