Wprowadzenie.
W poprzednim wpisie stworzyliśmy pierwsze modele i dokonaliśmy ich migracji do bazy danych. W tej części przedstawię narzędzie w postaci panelu administracyjnego, które dostarcza nam Django i za pomocą, którego zarządzanie danymi w bazie danych jest szybkie i intuicyjne.
Zakres artykułu.
- Tworzenie aplikacji Django – konto administartora
- Tworzenie aplikacji Django – panel administratora
Tworzenie aplikacji Django - konto administartora
Zanim będziemy mogli korzystać z panelu administratora w pierwszej kolejności musimy utworzyć konto administratora. W celu utworzenia konta administratora w konsoli należy wpisać polecenie python3 manage.py createsuperuser. Program zapyta nas o nazwę użytkownika, którą możemy podać lub również możemy pozostawić to pole puste, wówczas nazwa użytkownika będzie taka sama jak nazwa użytkownika systemu. Drugą daną jaką możemy podać jest adres e-mail. Jeżeli chcemy możemy to pole pozostawić puste. Trzecią daną jest podanie hasła do tworzonego konta administratora, natomiast czwartą daną jest powtórzenie wprowadzonego hasła. Po podaniu tych 4 danych dla naszego panelu administratora zostanie stworzone konta superuser, z którego będziemy mogli już korzystać. Konsola po wprowadzeniu powyższych danych powinna zwrówić nam następujący wynik.
Tworzenie aplikacji Django - panel administratora
W celu uruchomienia panela administratora w pierwszej kolejności należy uruchomić serwer, dobrze nam już znanym poleceniem python3 manage.py runserver.
W tym miejscu warto zaznaczyć, że po uruchomieniu serwera nie pojawia już się nam ostrzeżenie. Ostrzeżenie zniknęło, ponieważ została przeprowadzona migracja, a projekt nie zawera już żadnych zmian. W efekcie po wpisaniu polecenia uruchamiającego serwer powinniśmy zoabczyć następujący rezultat.
Po włączeniu serwera możemy uruchomić przeglądarkę internetową i w polu adresu wpisać http://127.0.0.1:8000/admin/, gdzie w efekcie powinniśmy zobaczyć następującą stronę logowania.
W polu Użytkownik wpisujemy nazwę używnika wprowadzoną podczas tworzenia konta superusera oraz analogicznie postępujemy z hasłem.
Po zalogowaniu się powinniśmy zobaczyć następującą stronę.
Aktualnie mamy możliwość jedynie dodawania i zmieniania grup i użytkowników naszego projektu. Opcje te są standardowo dostępne dla Django.
Abyśmy mogli z panelu administratora zarządzać danymi w tabelach stworzonych po skonstuowaniu naszych modeli, musimy w pliku admin.py znajdującego się w lokalizacji myProject/myFirstApp/admin.py dokonać rejestracji naszych modeli. Rejestracja ma na celu poinformować, że obiekty naszych klas mają być obsłużone przez interfejs administratora. W naszym przypadku plik admin.py powinien wyglądać następująco.
from django.contrib import admin # Register your models here. from .models import MovieGenres, MovieActors, WatchedMovies admin.site.register(MovieGenres) admin.site.register(MovieActors) admin.site.register(WatchedMovies)
Po zapisaniu pliku nie musimy restartować serwera, a jedynie wystarczy, że odświeżymy stronę z panelem administratora. W rezultacie powinniśmy otrzymać następujący efekt.
W tej chwili jesteśmy w stanie dodawać dane do naszej bazy danych.
W pierwszej kolejności dodajmy kilku aktorów, naciskając na przycisk dodaj przy Movie actorss, a następnie wypełniając pola First name, Last name, Age i naciskając na przycisk ZAPISZ lub Zapisz i dodaj nowy w celu dodania kolejnych aktorów.
Po dodaniu aktorów, naciskając na napis Movie actorss, powinniśmy zobaczyć obiekty, które przechowują dane o naszych aktorach. Poniżej przedstawiam efekt jak wygląda to u mnie.
Następnie dodajmy kilka gatunków filmowych postępując podobnie jak w przypadku aktorów. Na koniec dodajmy filmy, które obejrzeliśmy i w tym miejscu na chwilę się zatrzymajmy. Strona z dodawaniem filmów wygląda następująco.
Niestety w miejscu Stars oraz, gdy rozwiniemy listę Genre widzimy opis, który nic nam nie mówi, a przecież zapamiętywanie, który obiekt odnośni się do danych, które nas interesują jest niemożliwe, w przypadku gdy będziemy posiadać wiele danych lub powrócimy do aplikacji po dłuższym czasie. W celu dokonania zmiany na bardziej przyjazne nam nazwy obiektów, otwieramy plik z naszymi modelami w wprowadzamy w nich następujące modyfikacje.
from django.db import models # Create your models here. class MovieGenres(models.Model): genre = models.CharField(max_length=128) def __str__(self): return self.genre class MovieActors(models.Model): first_name = models.CharField(max_length=64) last_name = models.CharField(max_length=64) age = models.IntegerField(default=0) def __str__(self): return self.first_name + " " + self.last_name class WatchedMovies(models.Model): RATES = ( ('1', 'Okropny'), ('2', 'Słaby'), ('3', 'Średni'), ('4', 'Dobry'), ('5', 'Znakomity'), ) title = models.CharField(max_length=128) release_date = models.DateTimeField('data premiery') stars = models.ManyToManyField(MovieActors) genre = models.ForeignKey(MovieGenres, on_delete=models.CASCADE) rate = models.CharField(max_length=1, choices=RATES) review = models.TextField(blank=True) def __str__(self): return self.title
W modelach dodajemy funkcję __str__(self), której wynik jest wyświetlany w panelu administratora oraz w interaktywnym shellu Pythona. Po dodaniu tej funkcji w modelach odświeżamy naszą stronę i otrzymujemy następujący efekt.
Analogiczna sytuacja występuje w listach z naszymi obiektami. Dla tabeli Movie actorss panel wygląda teraz następująco.
W ten oto sposób dostosowaliśmy wizualne nazwy obiektów do naszych preferancji.
Dodanie filmów wygląda analogicznie.