Django – #4 – Pierwsza aplikacja – Panel administracyjny

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. 

Autor artykułu
Dominik Bednarski

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *