Django is een gratis en open-source webframework gebouwd in Python. Django werd voor het eerst gepubliceerd in 2005 en belichaamt het motto “snelle ontwikkeling en een schoon, pragmatisch ontwerp.” Het framework, geïmplementeerd op een webserver, kan snel een web-frontend produceren met rijke functies, beveiliging en schaalbaarheid.
Elke web-app is voor zijn inhoud afhankelijk van databases. Omdat Django een modern framework is, ondersteunt het een aantal standaard databaseprogramma's, bijvoorbeeld PostgreSQL, SQLite, MySQL, enz. Deze gids laat zien hoe u een Django-app verbindt met een database op MySQL.
Vereisten
Om deze handleiding te volgen, moet u aan bepaalde voorwaarden voldoen voordat u overgaat tot Django en de databaseverbinding:
- Een geschikte webserver. In deze gids gebruiken we een Ubuntu-server.
- Een correct geconfigureerde Python 3-ontwikkelomgeving.
- Een database-applicatie. Hier is een diepgaande handleiding over het installeren en gebruiken van MySQL.
Python 3 installeren en configureren
Django is geschreven in Python. Om een Python-app uit te voeren, moeten de Python-binaries op het systeem zijn geïnstalleerd. Ubuntu wordt standaard geleverd met Python geïnstalleerd. Hier gebruiken we Python 3. Voer de volgende opdrachten uit vanuit de terminal. Werk eerst de APT-cache bij en upgrade (indien beschikbaar) alle geïnstalleerde pakketten:
|
1 |
$ sudo apt update && sudo apt upgrade -y |
Python 3 is rechtstreeks beschikbaar vanaf de officiële Ubuntu-pakketservers. Het pakket
python-is-python3 maakt een python binaire softlink naar
python3 voor gebruiksgemak:
|
1 |
$ sudo apt install python3 python-is-python3 |
Controleer vervolgens of de installatie is geslaagd:
|
1 2 |
$ python3 --version $ python --version |
Daarna hebben we pip nodig. Dit is de standaard Python-pakketbeheerder. Deze is verantwoordelijk voor het beheren van aanvullende Python-bibliotheken die geen deel uitmaken van de standaardbibliotheek. Let op dat we pip3 installeren (voor Python 3):
|
1 |
$ sudo apt install python3-pip |
Tenslotte hebben we nog enkele aanvullende pakketten nodig voor een robuuste programmeeromgeving:
|
1 |
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev |
MySQL installeren en configureren
In dit gedeelte wordt kort gedemonstreerd hoe u MySQL installeert en configureert. Het is beschikbaar via de standaard Ubuntu-pakketbronnen:
|
1 |
$ sudo apt install mysql-server |
Als de installatie is geslaagd, start MySQL op de achtergrond. Controleer of het correct werkt:
|
1 |
$ systemctl status mysql |
De MySQL-server is actief en draait. We kunnen nu veilig overstappen naar de ontwikkeling van onze Django-app.
Werken met Django
-
De voorbeeld-Django-app opzetten
Het fundament van onze web-app vereist het Django-projectskelet. Dit bevat alle benodigde tools en bibliotheken om een robuuste web-app te maken. Eerst maken we een speciale map aan voor onze Django-app. Het is aan te raden om de map een betekenisvolle naam te geven die consistent is met de app die we gaan bouwen. In deze demonstratie noemen we deze myDemoApp:
|
1 |
$ mkdir -pv myDemoApp |
We hebben de Python-module venv nodig om een virtuele omgeving in de map te maken. Installeer de module met APT:
|
1 |
$ sudo apt install python3-venv |
Navigeer vervolgens naar de map en zet een virtuele omgeving op. Voor de duidelijkheid hebben we de omgeving demoapp_env:
|
1 |
$ python3 -m venv demoapp_env |
Activeer vervolgens de virtuele omgeving door het script activate uit te voeren:
|
1 |
$ . demoapp_env/bin/activate |
We installeren Django nu binnen deze speciale virtuele omgeving. Pip zal enkele aanvullende componenten downloaden en installeren:
|
1 |
$ pip install django |
Django is geïnstalleerd en klaar voor gebruik. Roep de opdracht django-admin aan om een nieuw Django-project te maken. Geef de app daarna een geschikte naam:
|
1 |
$ django-admin startproject demoapp |
Hiermee wordt een demoproject gemaakt met de benodigde projectbestanden en mappen op hun plaats:
|
1 |
$ ls -l |
Het projectskelet is klaar. Vervolgens moeten we het correct configureren om ons doel te bereiken.
-
Django-projectinstellingen bewerken
Alle configuraties van het project zijn opgeslagen in het bestand settings.py. Dit bevindt zich in de Django-projectmap. We beginnen met het instellen van een juiste tijdzone en het vermelden van hosts die verbinding kunnen maken met de Django-app. Open het configuratiebestand in een teksteditor:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Scroll naar beneden in het script en zoek de vermelding TIME_ZONE. Ter demonstratie is de tijdzone ingesteld op America/New_York:
|
1 |
$ TIME_ZONE = 'America/New_York' |
Ter referentie: de volgende opdracht toont alle ondersteunde tijdzones in Linux:
|
1 |
$ timedatectl list-timezones |
Scroll vervolgens naar de vermelding ALLOWED_HOSTS. Dit bepaalt welke machine(s) toegang hebben tot de app. Ter demonstratie bevat het alleen localhost:
|
1 |
$ ALLOWED_HOSTS = ['localhost'] |
Sla vervolgens het bestand op en sluit de editor. De volgende opdracht past de wijzigingen toe:
|
1 |
$ python manage.py migrate |
Nu moeten we een beheerdersaccount aanmaken voor de web-app. Dit account wordt gebruikt om toegang te krijgen tot de Django-beheerdersinterface. Voer de volgende opdracht uit:
|
1 |
$ python manage.py createsuperuser |
Er wordt gevraagd om een gebruikersnaam, e-mailadres en wachtwoord. De app is nu klaar om verbinding te maken met de database.
MySQL-verbinding
-
MySQL-connectoren en ontwikkelingsbibliotheken installeren
Om MySQL in de Django-app te integreren, hebben we enkele aanvullende Python 3-bibliotheken nodig die de benodigde tools bieden. We gebruiken de databaseconnector mysqlclient. Het is een fork van MySQLdb.
Zorg ervoor dat we python3-dev hebben geïnstalleerd:
|
1 |
$ sudo apt install python3-dev |
We hebben ook enkele aanvullende Python- en MySQL-headers en -bibliotheken nodig:
|
1 |
$ sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev |
Gebruik na voltooiing van de installatie pip om de Python-module mysqlclient te installeren. Dit kan enkele foutmeldingen genereren die kunnen worden genegeerd:
|
1 |
$ pip install mysqlclient |
-
Een speciale database configureren
De volgende stap is het configureren van een speciale database en databasegebruiker voor onze Django-app. Start de MySQL-shell als de root-gebruiker:
|
1 |
$ sudo mysql -u root |
Voer de volgende query uit om alle momenteel beschikbare databases te controleren:
|
1 |
$ SHOW DATABASES; |
Laten we een speciale database maken voor onze Django-app. Geef deze een toepasselijke naam die consistent is met de projectnaam:
|
1 |
$ CREATE DATABASE demoapp_data; |
Controleer vervolgens de aanmaak:
|
1 |
$ SHOW DATABASES; |
Maak nu een speciale MySQL-gebruiker aan. We configureren deze gebruiker als de eigenaar van de database. De Django-app gebruikt de inloggegevens van deze gebruiker om met de MySQL-database te werken:
|
1 |
$ CREATE USER 'demoapp_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Geef de gebruiker demoapp_user volledige rechten op de database demoapp_data:
|
1 |
$ GRANT ALL ON demoapp_data.* TO 'demoapp_user'@'%'; |
Om de wijzigingen in de rechten door te voeren, herlaadt u de MySQL-rechten-tabellen:
|
1 |
$ FLUSH PRIVILEGES; |
De database is nu klaar om verbonden te worden met de Django-app.
-
De database verbinden met de Django-app
Ten slotte configureren we de Django-app om de database te gebruiken voor gegevensopslag. Open het configuratiescript settings.py:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Scroll naar beneden naar de vermelding DATABASES en voer de volgende code in:
|
1 2 3 4 5 6 7 8 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': '/etc/mysql/my.cnf', }, } } |
Sla het bestand op en sluit de editor. De volgende stap is het instellen van het configuratiebestand dat hierboven in de code is beschreven. Gebruik sudo om het tekstbestand op de beschreven locatie te openen:
|
1 |
$ sudo nano /etc/mysql/my.cnf |
Dit configuratiebestand zal informatie bevatten over de voor Django bestemde database en de gebruiker die we in de MySQL-server hebben aangemaakt. Voeg de volgende regels toe aan het einde van het bestand:
|
1 2 3 4 5 |
[client] database = demoapp_data user = demoapp_user password = password123 default-character-set = utf8 |
Om de wijzigingen door te voeren, moeten we de MySQL-server opnieuw opstarten:
|
1 2 |
$ sudo systemctl daemon-reload $ sudo systemctl restart mysql |
-
MySQL-verbinding testen
Het is nu tijd om te controleren of de MySQL-verbinding goed werkt. Als de Django-server zonder problemen draait, werkt de verbinding prima. Anders is er iets mis. Pas eerst alle wijzigingen toe die in het Django-project zijn aangebracht:
|
1 |
$ python manage.py migrate |
Ga nu naar de volgende projectmap en start de Django-server:
|
1 2 |
$ cd ~/myDemoApp/demoapp $ python manage.py runserver <server_ip_address>:8000 |
Probeer vervolgens toegang te krijgen tot de server vanuit een webbrowser:
|
1 |
$ http://<server_ip_address>:8000 |
Voila! We zijn met succes op de succespagina van Django beland. Dit bevestigt ook dat de MySQL-verbinding goed werkt. Nadat de taak is voltooid, kun je de virtuele omgeving veilig afsluiten:
|
1 |
$ deactivate |
Tot slot
In deze handleiding heb je de basis geleerd van het combineren van Django en MySQL. We hebben een Django-app gemaakt en laten zien hoe je deze kunt verbinden met een MySQL-database. De magie zit in het Django-configuratiebestand settings.py. We hebben ook enkele basisinstellingen gewijzigd, zoals ALLOWED_HOSTS en TIME_ZONE. Django is ongelooflijk flexibel. Naast MySQL ondersteunt het ook andere SQL-servers zoals PostgreSQL, server engines zoals Nginx, enz.
Je kunt ook onze handleidingen bekijken over de beste praktijken voor het installeren, configureren en werken met Django:
- Het Django Web Framework installeren op Ubuntu 20.04
- Django instellen met PostgreSQL, Nginx en Gunicorn op Ubuntu 20.04
- Django-modellen maken: een handleiding
Veel computerplezier!





Reacties
Nog geen reacties. Wees de eerste.