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 e-mail nie zostanie opublikowany.