
Papierowa dokumentacja TSL zastąpiona aplikacją z e-podpisem
Klient: Green Transit
Branża: Logistyka / LogTech
Django posiada wiele wbudowanych poleceń zarządzania, ale czasem potrzebujemy dodatkowych. W tym artykule opowiem, jak stworzyć i zarejestrować niestandardowe komendy w aplikacji Django, ułatwiając sobie pracę i usprawniając projektowanie.
CEO
21 cze 2023
W Django istnieje wiele wbudowanych komend zarządzania umożliwiających wykonywanie różnych czynności związanych z zarządzaniem aplikacją. W domyślnym setupie możemy stworzyć superusera, zastosować, czy utworzyć migrację. Jednakże, czasem potrzebujemy stworzyć własną komendę zarządzania, aby wykonać niestandardowe zadanie. Szczególnie przydaje się to, gdy chcemy zautomatyzować powtarzające się czynności, takie jak czyszczenie danych w celach developmentu albo tworzenie danych testowych. W Django tworzenie własnych komend jest bardzo proste i pozwala na szybkie i wygodne zarządzanie aplikacją.

Klient: Green Transit
Branża: Logistyka / LogTech

Klient: PolandBuild
Branża: Budownictwo / ConTech

Klient: Klient (Aplikacja webowa do nauki programowania)
Branża: Edukacja / EdTech
Podczas tworzenia niestandardowych komend zarządzania dla aplikacji Django warto również zwrócić uwagę na testowanie ich funkcjonalności. Przed wdrożeniem aplikacji na serwer testy pozwalają na wykrycie i naprawienie ewentualnych błędów w działaniu komend. Django pozwala na tworzenie testów jednostkowych dla komend, co znacznie ułatwia proces sprawdzania ich poprawności. W metodzie testującej należy odpowiednio skonfigurować obiekt Command oraz przeanalizować zwracane przez nią wartości. Dzięki temu można skutecznie zweryfikować działanie niestandardowych komend i zapewnić użytkownikom aplikacji najlepszą jakość usług.
Instrukcja krok po kroku:
Dodajemy plik do folderu management/commands. Nazwa pliku będzie nazwą naszą komendy.
W pliku importujemy klasę BaseCommand z django.core.management.base. Nasza klasa komendy dziedziczy po zaimportowanej klasie. Za obsługę wywołania komendy odpowiedzialna jest metoda handle. W razie błędu podczas wykonywania komendy, rzucamy wyjątek CommandError zaimportowany z tego samego miejsca, co BaseCommand. Argumenty komendy parsuje metoda add_arguments. Otrzymujemy je w argumentach nazwanych metody handle. Oto prosty przykład komendy, wypisujący do konsoli nazwę obiektu Company, po podaniu jego ID.
from django.core.management.base import BaseCommand, CommandError
from company.models import Company
class Command(BaseCommand):
def add_arguments(self, parser) -> None:
parser.add_argument('company_id', type=int)
def handle(self, *args, **kwargs) -> None:
try:
company = Company.objects.get(pk=kwargs['company_id')
except Company.DoesNotExist:
raise CommandError(f"Company {kwargs['company_id']} not found"
self.stdout.write(company.name)
Metodę możemy wywołać w terminalu za pomocą polecenia:
python manage.py <nazwa_komendy - nazwa pliku> [...argumenty]
FAQ
Blog
Global Interpreter Lock (GIL) to mechanizm, który wpływa na sposób, w jaki Python wykonuje kod. Mimo że ma za zadanie kontrolować dostęp do zasobów pamięci, jego obecność może wpływać na skomplikowane scenariusze wielowątkowe. Pozwólmy sobie przyjrzeć się bliżej temu zagadnieniu.
Japronto to niewielki i bardzo szybki framework webowy dla Pythona, który idealnie nadaje się do budowania wydajnych serwisów internetowych. Dzięki wbudowanemu serwerowi HTTP opartemu na Asyncio i niskiemu narzutowi, Japronto oferuje bardzo wysoką wydajność i skalowalność. Jeśli szukasz szybkiego i prostego frameworka dla swojego projektu webowego, Japronto jest warty rozważenia.
Falcon to framework webowy napisany w Pythonie, który cechuje się niskim zużyciem zasobów i bardzo szybką wydajnością. Doskonale sprawdza się w tworzeniu REST API oraz mikroserwisów. W artykule przedstawimy jego główne cechy i funkcjonalności.
Amazon CloudFront to sieć dostarczania treści (CDN) oferowana przez Amazon Web Services (AWS), która pozwala na przyspieszenie dostarczania treści do użytkowników poprzez wykorzystanie lokalizacji brzegowych. Dzięki temu, treść jest dostarczana z najbliższej lokalizacji do użytkownika, co zwiększa szybkość i jakość dostarczanej treści.
InertiaJS zyskuje na popularności, jako narzędzie integrujące najnowsze frameworki frontendowe (Vue, React, Svelte) z tradycyjnymi serwerowymi technologiami backendowymi. Zrozumienie jego działania pozwala płynnie łączyć frontend i backend, bez konieczności pisania API.
MERN Stack to jeden z najpopularniejszych zestawów technologii wykorzystywanych do tworzenia nowoczesnych aplikacji webowych. Dzięki połączeniu MongoDB, Express, React oraz Node.js umożliwia on budowę wydajnych i skalowalnych rozwiązań opartych w całości na języku JavaScript. Stack ten jest chętnie wybierany zarówno przez startupy, jak i doświadczone zespoły developerskie.