Wybierz region
pl
  • PL
  • EN
Wydrukuj

Django – epizod 1. Projekt i struktura

W tym odcinku sagi Django, postaram się przybliżyć informacje o tym, jak stworzyć projekt, jak wygląda jego struktura i postawimy pierwsze kroki w uruchomieniu dev-serwera.

Aby zacząć będzie potrzebna wiedza o venvach i PiP, którą znajdziesz tutaj: https://pl.asseco.com/kariera/blog/django-%e2%80%93-epizod-0-czyli-tak-wlasciwie-o-virtual-envoirments-i-pip-w-pythonie-3296/

 

Tworzenie projektu

Utworzenie projektu rozpoczniemy od stworzenia venva, na którym będziemy pracować, jak to zrobić wyjaśnione jest w poprzednim epizodzie. Gdy już stworzymy wirtualne środowisko, możemy teraz zainstalować Django za pomocą: pip install django.

Zostanie zainstalowane Django, oraz wszystkie jego zależności, których nie jest tak dużo jak w przypadku frameworków javascriptowych. Te zależności to między innymi silnik szablonów htmlowych (Jinja2), biblioteka to zarządzania strefami czasowymi (pytz) i formatter języka SQL dla debug (sqlparse).

Gdy to się powiedzie, możemy utworzyć projekt za pomocą polecenia: django-admin startproject <nazwa projektu>. W moim przypadku jako nazwę wybrałem ConferenceApp (django-admin startproject ConferenceApp).

Powstaje następująca struktura plików:

Skrypt manage.py jest to podstawowy skrypt, który nam będzie pomagał w różnych operacjach związanych z naszym projektem. Od podstawowego uruchomienia dev-serwera, jak również stworzenie migracji i migrowanie schematów bazy danych, czy stworzenie superusera.


Plik settings.py zawiera konfigurację naszego projektu, w nim zamieszczone są informacje odnośnie zainstalowanych aplikacji (o tym nieco później), ścieżek do plików statycznych, włączenia trybu debugowania, strefy czasowej.


UWAGA! W pliku settings.py domyślnie jest zamieszczony SECRET KEY – który jest używany do podpisywania danych. Jest kilka podejść jak sobie poradzić z tą niedogodnością takich jak: wrzucenie SECRET_KEY do zmiennych środowiskowych i pobieranie w settings.py, lub moja preferowana, czyli utworzenie pliku o nazwie secret_settings.py, w którym umieszczam SECRET KEY, a następnie importuje plik do settings.py (dodając secret_settings.py do .gitignore).


Plik urls.py zajmuje się konfiguracją ścieżek do endpointów, zaś wsgi.py służy do wystawienia interfejsu CGI (dla na przykład nginxa).


Aplikacje w Django

W powyżej utworzonym projekcie nie możemy dużo nagrzebać. Jest to pusta struktura projektu. Należy w projekcie utworzyć aplikację. Cały projekt w django jest podzielony na aplikacje, które wypełniają odpowiednie funkcjonalności. Jakie to są funkcjonalności, zależy od nas. Django ma kilka wbudowanych aplikacji, które wspomagają nas w podstawowych funkcjach, jak uwierzytelnianie, czy też podstawowy panel admina.


Aby utworzyć aplikację wchodzimy do katalogu z właśnie utworzonym projektem i uruchamiamy polecenie: python manage.py startapp <nazwa aplikacji> Przy czym nazwa aplikacji musi być inna od nazwy projektu (ja wybrałem ConferenceDashboard).

 

Prawdziwa struktura aplikacji

Django jest frameworkiem opartym o wzorzec MVT (Model-View-Template). Jest bardzo podobny do wzorca MVC, jednak w Django formę kontrolera pełni samo Django, a my skupiamy się na warstwie prezentacji w Template, oraz tym jakie dane mają być zaprezentowane w View. Dlatego też w views.py, będziemy zapisywać widoki, które będą odpowiadać za przekazywanie danych do szablonów, w models.py będziemy opisywać strukturę bazy danych. Plik admin.py służyć będzie do rejestracji naszych modeli, dla wbudowanego panelu adminowskiego. W folderze migrations, zawarte będą migracje schematów bazy danych.

Przez zmianę nacisku przez twórców frameworka, twórcy aplikacji nie muszą przejmować się pisaniem ciągle powtarzającego się kodu, skupiając się na wykonaniu zadania.

 

Drobne rekonfiguracje i uruchomienie dev-serwera

Warto będzie teraz utworzyć w folderze aplikacji plik o nazwie urls.py o następującej treści: https://gist.github.com/SzateX/858e19bae3be56f574659afb0dd4eda0

Dodatkowym w pliku urls.py należącym do całego projektu, dodajemy do listy urlspatterns następującą linijkę: path(r'dashboard/', include('ConferenceDashboard.urls')). Co pozwoli na uszeregowanie patternów url, względem aplikacji. (Cały plik ConferenceApp/urls.py dostępny tutaj: https://gist.github.com/SzateX/9736cd01e465b7e11dd0bc50772e0726 ). Dodatkowo do listy importów należy dodać funkcję include (linia 17 powyższej wklejki)

Jeszcze musimy dodać aplikację do puli zainstalowanych aplikacji. Robimy to w pliku settings.py dodając do listy INSTALLED_APPS: 'ConferenceDashboard' (https://gist.github.com/SzateX/cdbbddfe18f69413089dc48966e6c536#file-settings-py-L40)

Teraz możemy uruchomić nasz serwer poleceniem: python manage.py runserver. Po wejściu w link, który wyświetli się dostaniemy błąd 404 – wszystko jest zrozumiałe, ponieważ nie zrobiliśmy żadnej strony. Ale o tym w następnych epizodach.

Plan na następne epizody

W kolejnych epizodach zajmiemy się po kolei:

  • ORMem – czyli obsługą bazy danych z poziomu Django
  • Krótki wstęp do widoków oraz omówimy pisanie szablonów
  • Zajmiemy się w pełni widokami (czasami uzupełniając brakujące elementy z szablonów) oraz najważniejszy element widoków, czyli CBV
  • Formularze
  • Autoryzacja w widokach

Jakub Szatkowski

Programista w Pionie Banków Komercyjnych. Miłośnik programowania niskopoziomowego, pogromca wskaźników. Fascynat planszówek i wyścigów samochodowych.


Wydrukuj