Django to darmowy i otwartoźródłowy framework webowy napisany w języku Python. Opublikowany po raz pierwszy w 2005 roku, Django kieruje się mottem „szybkiego rozwoju i czystego, pragmatycznego projektowania”. Framework ten, wdrożony na serwerze WWW, pozwala szybko stworzyć interfejs webowy o bogatych funkcjach, bezpieczeństwie i skalowalności.
Każda aplikacja internetowa opiera się na bazach danych w celu przechowywania treści. Django, jako nowoczesny framework, obsługuje wiele standardowych programów bazodanowych, na przykład PostgreSQL, SQLite, MySQL, itd. Ten przewodnik pokaże, jak połączyć aplikację Django z bazą danych MySQL.
Wymagania wstępne
Aby przejść przez ten samouczek, przed przystąpieniem do łączenia Django z bazą danych należy spełnić określone warunki wstępne:
- Odpowiedni serwer WWW. W tym przewodniku będziemy używać serwera Ubuntu.
- Odpowiednio skonfigurowane środowisko programistyczne Python 3.
- Aplikacja bazodanowa. Oto szczegółowy przewodnik na temat instalacji i korzystania z MySQL.
Instalacja i konfiguracja Pythona 3
Django jest napisane w Pythonie. Uruchomienie dowolnej aplikacji w Pythonie wymaga zainstalowania w systemie plików binarnych Pythona. Ubuntu ma domyślnie zainstalowanego Pythona. W tym przypadku będziemy używać Pythona 3. Uruchom następujące polecenia w terminalu. Najpierw zaktualizuj pamięć podręczną APT i zaktualizuj (jeśli są dostępne) wszystkie zainstalowane pakiety:
|
1 |
$ sudo apt update && sudo apt upgrade -y |
Python 3 jest bezpośrednio dostępny z oficjalnych serwerów pakietów Ubuntu. Pakiet
python-is-python3 tworzy python dowiązanie symboliczne do pliku binarnego
python3 w celu ułatwienia użytkowania:
|
1 |
$ sudo apt install python3 python-is-python3 |
Następnie sprawdź, czy instalacja przebiegła pomyślnie:
|
1 2 |
$ python3 --version $ python --version |
Następnie potrzebujemy pip. Jest to standardowy menedżer pakietów Pythona. Odpowiada za zarządzanie dodatkowymi bibliotekami Pythona, które nie są częścią biblioteki standardowej. Zwróć uwagę, że instalujemy pip3 (dla Pythona 3):
|
1 |
$ sudo apt install python3-pip |
Na koniec potrzebujemy kilku dodatkowych pakietów dla stabilnego środowiska programistycznego:
|
1 |
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev |
Instalacja i konfiguracja MySQL
W tej sekcji krótko przedstawimy instalację i konfigurację MySQL. Jest on dostępny w domyślnych repozytoriach pakietów Ubuntu:
|
1 |
$ sudo apt install mysql-server |
Jeśli instalacja przebiegła pomyślnie, MySQL zacznie działać w tle. Sprawdź, czy działa poprawnie:
|
1 |
$ systemctl status mysql |
Serwer MySQL działa. Możemy teraz bezpiecznie przejść do tworzenia naszej aplikacji Django.
Praca z Django
-
Tworzenie przykładowej aplikacji Django
Podstawą naszej aplikacji internetowej jest szkielet projektu Django. Zawiera on wszystkie niezbędne narzędzia i biblioteki wymagane do stworzenia stabilnej aplikacji internetowej. Najpierw utworzymy dedykowany katalog dla naszej aplikacji Django. Zaleca się nazwanie katalogu w sposób znaczący i spójny z aplikacją, którą zamierzamy zbudować. W tej demonstracji nazwiemy go myDemoApp:
|
1 |
$ mkdir -pv myDemoApp |
Potrzebujemy modułu Pythona venv do utworzenia wirtualnego środowiska w tym katalogu. Zainstaluj moduł za pomocą APT:
|
1 |
$ sudo apt install python3-venv |
Następnie przejdź do katalogu i utwórz wirtualne środowisko. Dla jasności nazwaliśmy to środowisko demoapp_env:
|
1 |
$ python3 -m venv demoapp_env |
Następnie aktywuj środowisko wirtualne, uruchamiając skrypt activate:
|
1 |
$ . demoapp_env/bin/activate |
Teraz zainstalujemy Django w tym dedykowanym środowisku wirtualnym. Pip pobierze i zainstaluje kilka dodatkowych komponentów:
|
1 |
$ pip install django |
Django jest zainstalowane i gotowe do użycia. Wywołaj polecenie django-admin, aby utworzyć nowy projekt Django. Następnie nadaj aplikacji odpowiednią nazwę:
|
1 |
$ django-admin startproject demoapp |
Utworzy to projekt demonstracyjny z niezbędnymi plikami i katalogami projektu na swoim miejscu:
|
1 |
$ ls -l |
Szkielet projektu jest gotowy. Następnie musimy go odpowiednio skonfigurować, aby osiągnąć nasz cel.
-
Edycja ustawień projektu Django
Wszystkie konfiguracje projektu są przechowywane w pliku settings.py. Znajduje się on w katalogu projektu Django. Zaczniemy od ustawienia odpowiedniej strefy czasowej i listy hostów, które mogą łączyć się z aplikacją Django. Otwórz plik konfiguracyjny w edytorze tekstu:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Przewiń skrypt w dół i znajdź wpis TIME_ZONE. Na potrzeby demonstracji strefa czasowa jest ustawiona na America/New_York:
|
1 |
$ TIME_ZONE = 'America/New_York' |
Dla odniesienia, poniższe polecenie wyświetli wszystkie obsługiwane strefy czasowe w systemie Linux:
|
1 |
$ timedatectl list-timezones |
Następnie przewiń do wpisu ALLOWED_HOSTS. Kontroluje on, które maszyny mogą uzyskać dostęp do aplikacji. Na potrzeby demonstracji zawiera on tylko localhost:
|
1 |
$ ALLOWED_HOSTS = ['localhost'] |
Następnie zapisz plik i zamknij edytor. Kolejne polecenie zastosuje zmiany:
|
1 |
$ python manage.py migrate |
Teraz musimy utworzyć konto administratora dla aplikacji internetowej. Konto to będzie używane do uzyskiwania dostępu do interfejsu administracyjnego Django. Uruchom następujące polecenie:
|
1 |
$ python manage.py createsuperuser |
Zostaniesz poproszony o podanie nazwy użytkownika, adresu e-mail i hasła. Aplikacja jest teraz gotowa do połączenia z bazą danych.
Połączenie z MySQL
-
Instalacja konektorów MySQL i bibliotek programistycznych
Aby zintegrować MySQL z aplikacją Django, potrzebujemy dodatkowych bibliotek Pythona 3, które dostarczą niezbędnych narzędzi. Będziemy używać konektora bazy danych mysqlclient. Jest to fork MySQLdb.
Upewnij się, że mamy zainstalowany python3-dev:
|
1 |
$ sudo apt install python3-dev |
Potrzebujemy również dodatkowych nagłówków i bibliotek Pythona i MySQL:
|
1 |
$ sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev |
Po zakończeniu instalacji użyj pip do zainstalowania modułu Pythona mysqlclient. Może to wygenerować pewne komunikaty o błędach, które można zignorować:
|
1 |
$ pip install mysqlclient |
-
Konfigurowanie dedykowanej bazy danych
Kolejnym krokiem jest skonfigurowanie dedykowanej bazy danych i użytkownika bazy danych dla naszej aplikacji Django. Uruchom powłokę MySQL jako użytkownik root :
|
1 |
$ sudo mysql -u root |
Aby sprawdzić wszystkie obecnie dostępne bazy danych, uruchom następujące zapytanie:
|
1 |
$ SHOW DATABASES; |
Utwórzmy dedykowaną bazę danych dla naszej aplikacji Django. Nadaj jej odpowiednią nazwę, spójną z nazwą projektu:
|
1 |
$ CREATE DATABASE demoapp_data; |
Następnie zweryfikuj utworzenie:
|
1 |
$ SHOW DATABASES; |
Teraz utwórz dedykowanego użytkownika MySQL. Skonfigurujemy tego użytkownika jako właściciela bazy danych. Aplikacja Django będzie używać poświadczeń tego użytkownika do pracy z bazą danych MySQL:
|
1 |
$ CREATE USER 'demoapp_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Nadaj użytkownikowi demoapp_user pełne uprawnienia do bazy danych demoapp_data:
|
1 |
$ GRANT ALL ON demoapp_data.* TO 'demoapp_user'@'%'; |
Aby zmiany uprawnień weszły w życie, przeładuj MySQL grant tables:
|
1 |
$ FLUSH PRIVILEGES; |
Baza danych jest teraz gotowa do połączenia z aplikacją Django.
-
Łączenie bazy danych z aplikacją Django
Na koniec skonfigurujemy aplikację Django tak, aby używała bazy danych do przechowywania danych. Otwórz skrypt konfiguracyjny settings.py:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Przewiń w dół do wpisu DATABASES i wprowadź następujący kod:
|
1 2 3 4 5 6 7 8 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': '/etc/mysql/my.cnf', }, } } |
Zapisz plik i zamknij edytor. Następnym krokiem jest ustawienie pliku konfiguracyjnego opisanego wcześniej w kodzie. Użyj sudo aby otworzyć plik tekstowy w opisanej lokalizacji:
|
1 |
$ sudo nano /etc/mysql/my.cnf |
Ten plik konfiguracyjny będzie zawierał informacje o bazie danych dedykowanej dla Django oraz o użytkowniku, którego utworzyliśmy w serwerze MySQL. Dodaj następujące linie na końcu pliku:
|
1 2 3 4 5 |
[client] database = demoapp_data user = demoapp_user password = password123 default-character-set = utf8 |
Aby zmiany weszły w życie, musimy zrestartować serwer MySQL:
|
1 2 |
$ sudo systemctl daemon-reload $ sudo systemctl restart mysql |
-
Testowanie połączenia z MySQL
Teraz nadszedł czas, aby zweryfikować, czy połączenie z MySQL działa poprawnie. Jeśli serwer Django uruchamia się bez problemów, oznacza to, że połączenie działa prawidłowo. W przeciwnym razie coś jest nie tak. Najpierw zastosuj wszystkie zmiany wprowadzone w projekcie Django:
|
1 |
$ python manage.py migrate |
Teraz przejdź do następującego katalogu projektu i uruchom serwer Django:
|
1 2 |
$ cd ~/myDemoApp/demoapp $ python manage.py runserver <server_ip_address>:8000 |
Następnie spróbuj uzyskać dostęp do serwera z poziomu przeglądarki internetowej:
|
1 |
$ http://<server_ip_address>:8000 |
Voila! Pomyślnie trafiliśmy na stronę sukcesu Django. Potwierdza to również, że połączenie z MySQL działa poprawnie. Po zakończeniu zadania możesz bezpiecznie wyjść ze środowiska wirtualnego:
|
1 |
$ deactivate |
Podsumowanie
W tym poradniku poznałeś podstawy łączenia Django i MySQL. Utworzyliśmy aplikację Django i pokazaliśmy, jak połączyć ją z bazą danych MySQL. Cała magia tkwi w pliku konfiguracyjnym Django settings.py. Zmodyfikowaliśmy również kilka podstawowych ustawień, takich jak ALLOWED_HOSTS oraz TIME_ZONE. Django jest niezwykle elastyczne. Oprócz MySQL obsługuje również inne serwery SQL, takie jak PostgreSQL, silniki serwerowe, takie jak Nginx, itp.
Możesz również zapoznać się z naszymi poradnikami dotyczącymi najlepszych praktyk instalacji, konfiguracji i pracy z Django:
- Instalacja frameworka webowego Django na Ubuntu 20.04
- Konfiguracja Django z PostgreSQL, Nginx i Gunicorn na Ubuntu 20.04
- Tworzenie modeli Django: Poradnik
Miłego korzystania!





Komentarze
Brak komentarzy. Bądź pierwszy.