admin 0Comment

Wczoraj wrzuciłem lżejszy tekst, w którym relacjonowałem wrocławską konferencję „Wrocław 2.0.17, czyli miasto w czasach rewolucji IT” dziś więc pora na konkretne informacje o tym, co z moim projektem realizowanym w ramach DSP2017.

Jak już wiecie, mam zamiar stworzyć webową aplikację, pomagającą przeglądać i analizować comiesięczny budżet użytkownika, i chcę użyć do tego frameworku Django. Jako, że jest to blog domyślnie skierowany do osób początkujących w nauce programowania, chciałbym najpierw skupić się na moim narzędziu.

Django to framework, czyli swego rodzaju szkielet, ułatwiający nam pisanie aplikacji webowych (czyli działających online i wyświetlanych w przeglądarce). W jaki sposób nam to ułatwia? Przede wszystkim udostępniając nam funkcjonalności, które często są wykorzystywane przy tworzeniu tego rodzaju programów. Zbyt abstrakcyjnie? No to lecimy z przykładami – tworząc program, mający działać online i być obsługiwany przez przeglądarkę najprawdopodobniej będziesz potrzebował możliwości obsługi użytkowników (rejestracja, logowanie i inne), panelu administracyjnego, będziesz też pewnie zapisywał dane w jakiejś bazie danych oraz potrzebował sposobu na wyświetlanie tych danych w formacie zjadliwym dla przeglądarek, czyli transferował dane między back-endem oraz front-endem.

Oczywiście mógłbyś stworzyć to wszystko samodzielnie, od zera, ale miałoby to tyle sensu, co rozpoczynanie od siania pszenicy i kupienia krowy, ponieważ nabrałeś ochoty na zjedzenie kanapki z serem. Wspomniane wyżej elementy (i wiele innych) są tak często wykorzystywane przy tworzeniu aplikacji webowych, że nie ma sensu tworzenie ich za każdym razem od nowa – pomagają w tym frameworki takie jak m. in. Django.

Jak zabrać się do Django? Z perspektywy kilku ostatnich tygodni, kiedy to starałem się poznać ten framework, wydaje mi się, że najlepszym sposobem jest podejście do nauki z już uformowanym w głowie pomysłem na konkretną aplikację. Może to być np. jakiś program, który stworzyłeś wcześniej, tyle, że działający w formie tekstowej (czyli posiadający TUI – Text User Interface) i chciałbyś go przekonwertować na program działający online i obsługiwany przez przeglądarkę. Tak powstał pomysł na mój projekt – pod tym linkiem możecie zerknąć na kod programu TUI, który napisałem w celu ćwiczenia kodowania zgodnego z Object Oriented Programming, i którego funkcjonalność chciałbym skopiować do mojego pomysłu na projekt.

Mając już taki projekt w głowie warto zabrać się za podstawowe tutoriale, dzięki którym tworzymy przykładowe aplikacje webowe – szczególnie mogę tutaj polecić oficjalny tutorial dostępny na stronie Django oraz ten tutorial (niezależnie od waszej płci 😉 ). To jednak dopiero początek drogi, ponieważ mniej lub bardziej refleksyjne „przepisywanie” krok po kroku kursowego kodu nie może się równać z próbą napisania własnej aplikacji. Dla mnie formą „rozgrzewki” przed przystąpieniem do tego projektu było napisanie (przy pomocy Django oczywiście) aplikacji webowej o nazwie Text Checker, której kod możecie zobaczyć na moim koncie GitHub. Jej interface jest w języku polskim, ponieważ pozwala na wysłanie przykładowego tekstu (dajmy na to artykułu, nad którym pracujecie) lub pliku w formacie txt/docx/pdf z tekstem a następnie analizuje go pod kątem takich błędów jak użycie małych liter po kropce, powtórzone wyrazy, wielokrotne spacje, błędne słowa i wyrażenia oraz słowa z brakującymi przecinkami. Zarejestrowany użytkownik może dodatkowo spersonalizować listę błędnych słów i wyrażeń poprzez dodanie (i usunięcie) własnych. Aplikacja nie jest jeszcze skończona (front-end jest maksymalnie uproszczony, brakuje testów, chciałbym wykorzystać w niej pliki json), ale funkcjonuje poprawnie. Jeśli macie ochotę zobaczyć jak wygląda i działa taka niewielka aplikacja, proponuję ściągnąć jej kod i spróbować uruchomić na własnym komputerze.

A jak konkretnie wygląda praca w Django? Podstawą jego działania jest użycie wzorca architektonicznego o nazwie Model-View-Controller (Model-Widok-Kontroler). Jest to sposób organizowania struktury aplikacji – posłużę się prostym przykładem by wyjaśnić o co w nim chodzi. Załóżmy, że pracujemy nad aplikacją webową, która ma być naszym blogiem. Jako modele, traktować będziemy m. in. takie elementy naszego programu jak posty czy komentarze. Będą one zapisywane w naszej bazie danych. Kontroler to ta część struktury aplikacji, w której będziemy przyjmować informacje od użytkownika oraz reagować na nie poprzez aktualizacje modeli a także odświeżanie widoków. Widok to w praktyce front-end naszej aplikacji, czyli sposób na wyświetlenie danych użytkownikowi. Jeżeli więc chcemy na danej podstronie wyświetlić na przykład wszystkie posty na blogu, napisane w ciągu ostatnich trzydziestu dni, w kontrolerze za to odpowiedzialnym pobierzemy odpowiednie obiekty (będące konkretnymi instancjami modeli) i polecimy wyświetlić je w odpowiednim widoku, którym będzie szablon (template) html. Jeśli chcecie zobaczyć przykładowy kod takiego bloga, zerknijcie na to repozytorium na moim koncie GitHub. I ostatnia uwaga – twórcy Django zastosowali wzorzec MVC, jednak, to, co określamy w nim jako Controller nazwali mianem view, a to, co we wzorcu określamy jako View, w Django określone jest w plikach urls oraz folderze templates. Czyli by znaleźć elementy związane z określeniem Model, musisz poszukać pliku models.py, jednak elementów związanych z Controller szukasz w pliku views.py a elementów związanych z View w folderze templates (oraz plikach urls.py). Cóż, nikt nie mówił, że będzie łatwo, a samo tłumaczenie twórców może nawet jeszcze bardziej namieszać ci w głowie, przestań więc przejmować się teorią i skup się więc na praktyce, a z nią przyjdzie zrozumienie mechaniki działania frameworku.

Na koniec wróćmy do mojego projektu – na początek zbudowałem podstawę, czyli stworzyłem projekt,  a w nim aplikację, zainicjowałem bazę danych a także stworzyłem prosty system obsługi użytkowników, pozwalający rejestrować się i logować w danej sesji. Inaczej niż w mojej aplikacji webowej o nazwie Text Checker, tutaj możliwość skorzystania z funkcji aplikacji będzie dostępna tylko dla zalogowanych użytkowników. Jeśli chcesz zajrzeć na kod programu, kliknij w ten link, który prowadzi do commitu na opisanym wyżej etapie.

Dodaj komentarz