Python Django

Czym jest Django?

Za wikipedią:

Django – wolny i otwarty framework przeznaczony do tworzenia aplikacji internetowych, napisany w Pythonie. Powstał pod koniec 2003 roku jako ewolucyjne rozwinięcie aplikacji internetowych, tworzonych przez grupę programistów związanych z Lawrence Journal-World. W 2005 roku kod Django został wydany na licencji BSD. Nazwa frameworku pochodzi od gitarzysty Django Reinhardta.

Django realizuje wzorzec architektoniczny model-template-view (pokrewny z MVC).

Wśród dobrze znanych witryn, które używają Django, znajdują się witryny Pinterest, Instagram, Fundacji Mozilla, Public Broadcasting Service i The Washington Times.

Jak widać, dzisiejsze zajęcia przygotowane są specjalnie z myślą o osobach, które twierdzą, iż "na kognitywistyce nie ma żadnych praktycznych zajęć/rzeczy". Proszę bardzo, całe dzisiejsze zajęcia to czysta praktyka (oprócz zrozumienia zasad działania MVC), którą to praktykę, wdraża się w rzeczywistym świecie: w małych, średnich i dużych przedsiębiorstwach.


Stwórz własną stronę

Wyśmienity tutorial znajdą Państwo na Django Girls (do tego ma polską wersję językową):
https://tutorial.djangogirls.org/pl/

Jak zainstalować Python-a:
https://tutorial.djangogirls.org/pl/installation/

Polecam przejrzeć wszystkie sekcje po kolei. Dla niecierpliwych, od razu Django:
https://tutorial.djangogirls.org/pl/django/

Na zajęciach nie będziemy tworzyć nowego projektu Django od zera. Posłużymy się gotowym projektem i podstawimy tylko nasz template w HTML.
Szczegóły jak to zrobić znajdą Państwo tutaj: https://tutorial.djangogirls.org/pl/html/.

Inne tutoriale:
https://github.com/wsvincent/awesome-django#general-tutorials

Repozytoria z działającymi przykładami:
https://github.com/wsvincent/djangoforbeginners


Blog (aktualności, news feed)

Pokazuje i objaśnia prowadzący. Dla Państwa przyszłej kariery lepiej, żeby Państwo uważnie się przysłuchiwali i spróbowali odtworzyć zadanie w domu lub nawet pójść krok dalej i samodzielnie coś w nim zmienić.

Dwa źródła przyładów:

  1. Przykład bardziej wyczerpujący: https://tutorial.djangogirls.org/pl/django_models/.
  2. Przykład szybszy: https://github.com/wsvincent/djangoforbeginners/tree/master/ch5-blog-app (ten zaprezentowany zostanie na zajęciach).

Wysyłanie e-maila

Pokazuje i objaśnia prowadzący. Dla Państwa przyszłej kariery lepiej, żeby Państwo uważnie się przysłuchiwali i spróbowali odtworzyć zadanie w domu lub nawet pójść krok dalej i samodzielnie coś w nim zmienić.

Tutorial:
https://wsvincent.com/django-contact-form/

Repozytorium na GitHub-ie:
https://github.com/wsvincent/django-contact-form

Funkcja w Django:
https://docs.djangoproject.com/en/1.10/topics/email/

Dla gotowych na więcej (rzeczywiste wysłanie e-maila):
https://simpleisbetterthancomplex.com/tutorial/2017/05/27/how-to-configure-mailgun-to-send-emails-in-a-django-app.html


*Przykład z życia wzięty (use case example) — sterowanie domem inteligentnym

  • Jak zaprojektować interface domu inteligentnego?
  • Web application (np. Django Python), mobile application (Android, iOS), czy obie wersje?
  • Komunikacja pomiędzy hardware-m (czujniki, sterowniki, wentylacja, klimatyzacja), a serwerem.
  • User-centered design, testy użyteczności.

Hosting (deployment, wdrażanie) strony w django (nie wymagany na potrzeby zadania):


Zadanie na dziś (do dokończenia w domu)

  1. Stworzyć środowisko (warto zajrzeć tutaj: https://wsvincent.com/django-contact-form/ (sekcja "Initial setup") oraz tutaj: https://robots.thoughtbot.com/how-to-manage-your-python-projects-with-pipenv#getting-started)
  2. Bazując na przykładzie https://github.com/wsvincent/djangoforbeginners/tree/master/ch3-pages-app dodać jeszcze jedną stronę i do wszystkich trzech dodać template-y (wzorce HTML)
  3. Dodać do projektu plik CSS (wskazówkę gdzie go dodać znajdą Państwo tutaj: https://tutorial.djangogirls.org/pl/css/#tw%C3%B3j-pierwszy-arkusz-css), podpiąć ten plik do każdego wzorca html, który Państwo zastosują.

Ciekawostka — najlepsza obecnie opcja, aby stworzyć oraz odpalić środowisko wirtualne (opcjonalna względem tej pokazanej w tutorialu djangogirls; źródło: https://djangoforbeginners.com/initial-setup/#virtual-environments):

$ pipenv shell
$ pipenv install
# (ewentualnie) python manage.py migrate
$ python manage.py runserver

Zadanie 04

Stwórz własną stronę według wytycznych powyżej. Do prowadzącego przesyłają Państwo folder z Państwa projektem, "zzipowany" (najchętniej nie "zrarowany"). Nie muszą umieszczać Państwo w nim folderu ze środowiskiem wirtualnym (przykładowa nazwa tego folderu: "myenv"), ponieważ waży on relatywnie dużo. Prowadzący i tak odpali tylko jedno środowisko na swoim komputerze i będzie odpalał serwer z dostarczonymi przez Państwa plikami (poprzez prowadzenie komendy: "python manage.py runserwer") i sprawdzał co pokaże się w przeglądarce.

Jeśli mają Państwo problem: proszę przysłać logi (logs), tj. treść błędu jaki wyskakuje. Najlepiej zarówno jako przeklejony tekst w wiadomości oraz jako zrzut ekranu z widocznymi: wpisaną komendą oraz zwróconym błędem. Jest to dobra praktyka w świecie programistycznym i ułatwi to prowadzącemu udzielenie Państwu pomocy.

UWAGI:

  • Zgodnie z tym, co mówiliśmy na zajęciach, w tutorialu django girls rozdziały: "Administracja" oraz "Wdrażanie" można pominąć. Nie są one potrzebne do wykonania zadania. Jeśli ktoś mimo to chce wykonać te rozdziały i ma z nimi problem, zapraszamy na dyżury.
  • Proszę spakować do archiwum ZIP folder! Pakowanie pojedynczych plików jest bardzo złą praktyką.
  • Nazwy archiwów/folderów nie mogą zawierać spacji ani znaków diakrytycznych. Dlaczego? Praktycznie wszystkie bardziej zaawansowane programy i funkcjonalności wymagają użycia jak najprostszych znaków, najlepiej liter alfabetu łacińskiego plus ewentualnie podkreślenik (ang. underscore, "_"), nawet myślnik/minus ("-") może być niebezpieczny.
Strona na licencji Creative Commons Attribution-ShareAlike 3.0. Autorzy: A. Czoska, M. Komosiński, B. Kowalczyk, A. Kupś, M. Lubawy