Niniejsza książka opisuje Django, framework do tworzenia aplikacji internetowych, który pozwala zaoszczędzić czas i czyni tworzenie witryn internetowych czystą przyjemnością. Stosując Django, możesz kreować i pielęgnować wysokiej jakości aplikacje internetowe przy minimalnym nakładzie pracy. Z jednej strony tworzenie aplikacji internetowych to ekscytujące i kreatywne zajęcie; z drugiej jednak wymaga wielokrotnego wykonywania tych samych czynności i dużej cierpliwości. Django pozwala skoncentrować się na tej przyjemnej części — samym jej unikatowym sednie — ponieważ wykonuje większość typowych zadań i bolączek. Czyniąc to, zapewnia wysokopoziomowe abstrakcje typowych wzorców aplikacji internetowych, skróty dla częstych zadań programistycznych i jasne konwencje rozwiązywania problemów. Jednocześnie Django stara się nie wchodzić w drogę, pozwalając zboczyć z utartych ścieżek, jeśli będzie tego wymagała sytuacja. Celem tej książki jest uczynić Cię ekspertem Django. Książka skupia się na dwóch aspektach. Po pierwsze, dogłębnie wyjaśnia co robi Django i jak z jego pomocą tworzyć aplikacje internetowe. Po drugie, jeśli to konieczne wyjaśnia wysokopoziomowe koncepcje, odpowiadając na pytanie "W jaki sposób mam to efektywnie zastosować we własnym projekcie?". Czytając tę książkę, zdobędziesz umiejętności wymagane do szybkiego wykonania użytecznych witryn, tworząc czysty i łatwy w pielęgnacji kod. Czym jest framework webowy?Django to jeden z wiodących przedstawicieli nowej generacji frameworków webowych — co jednak dokładnie oznacza ten termin? Aby odpowiedzieć na to pytanie, rozważmy projekt aplikacji internetowej napisanej w języku Python, ale bez użycia frameworka. W książce w kilku miejscach zastosujemy to podejście, by pokazać, w jaki sposób wykonać zadania bez skrótów, byś mógł sam się przekonać, że skróty bywają bardzo pomocne. (Oczywiście warto wiedzieć, jak wykonać wszystkie zadania bez stosowania skrótów, bo nie zawsze są one dostępne. Przede wszystkim jednak, wiedza o tym, dlaczego pewne rzeczy działają w taki sposób, w jaki działają, czyni Cię lepszym programistą). Jednym z najprostszych i najbardziej bezpośrednich sposobów tworzenia aplikacji internetowej w języku Python jest użycie standardu CGI (Common Gateway Interface), który był popularnym sposobem tworzenia dynamicznych stron WWW około roku 1998. Oto bardzo krótkie wyjaśnienie sposobu działania standardu: utwórz skrypt powłoki w języku Python, który generuje na wyjście kod HTML; następnie zapisz ten skrypt na serwerze WWW z rozszerzeniem ".cgi" i odwiedź tę stronę używając przeglądarki internetowej. To wszystko. Poniżej znajduje się przykład skryptu CGI, który wyświetla 10 ostatnio opublikowanych książek, pobierając dane z bazy danych. Nie przejmuj się szczegółami składni. Zwróć jednak uwagę na podstawowe elementy kodu: #!/usr/bin/python By wypełnić wymagania związane z CGI kod w pierwszej kolejności wyświetla wiersz "Content-Type", po którym następuje pusty wiersz. Następnie wyświetla początkowy kod HTML, łączy się z bazą danych i wykonuje zapytanie SQL pobierające tytuły ostatnich 10 książek. Iterując przez książki, generuje kod HTML z nazwami tytułów. W ostatnim kroku wyświetla zamykający kod HTML i zamyka połączenie z bazą danych. Pisząc tylko tę jedną stronę WWW, można odnieść wrażenie, że pisanie wszystkiego na najniższym poziomie wcale nie jest takie złe. Z pewnością uzyskany kod nie jest trudny do zrozumienia — nawet początkujący programista zrozumie te 16 wierszy kodu, od pierwszego wiersza po ostatni. Nie trzeba uczyć się niczego nowego, nie trzeba poznawać dodatkowego kodu. Wdrożenie również jest proste: po prostu zapisz kod w pliku o rozszerzeniu ".cgi", umieść go na serwerze i odwiedź odpowiednią stronę WWW za pomocą przeglądarki internetowej. Pomimo swej prostoty, rozwiązanie to ma kilka problemów i niedogodności. Zadaj sobie następujące pytania:
Dokładnie tego rodzaju problemy stara się rozwiązywać framework webowy. Frameworki webowe zapewniają infrastrukturę programistyczną dla aplikacji, byś mógł skupić się na pisaniu czystego, łatwego w pielęgnacji kodu bez potrzeby wymyślania koła od nowa. W dużym skrócie można powiedzieć, że właśnie to zapewnia Django Wzorzec projektowy MVCPrzejdźmy szybko do prostego przykładu, który obrazuje różnicę między poprzednim podejściem i frameworkiem. Oto, w jaki sposób mógłby wyglądać powyższy kod CGI, gdyby napisać go w Django: # models.py (tabele bazy danych) Nie przejmuj się zbyt mocno szczegółami składni; po prostu postaraj się poczuć ogólną strukturę. Przede wszystkim zwróć uwagę na podział zadaniowy:
Połączenie tych elementów w szerszej perspektywie odpowiada wzorcowy MVC (Model-Widok-Kontroler). W modelu MVC oprogramowanie tworzy się w taki sposób, by kod definiujący i udostępniający dane (model) był oddzielony od logiki routingu żądań (kontroler), który to jest odseparowany od interfejsu użytkownika (widok). Najważniejszą zaletą tego podejścia jest luźne powiązanie komponentów. Każdy element aplikacji internetowej wykorzystującej Django ma ściśle określoną rolę i może zostać zmieniony niezależnie bez wpływania na pozostałe części. Przykładowo programista może zmienić adres URL określonej części aplikacji bez zmian w kryjącej się pod spodem implementacji. Projektant może zmienić kod HTML strony bez zaglądania do kodu w języku Python, który ją w rzeczywistości renderuje. Administrator bazy danych może zmienić nazwę tabeli i wprowadzić modyfikację tylko w jednym miejscu bez potrzeby przeszukiwania i poprawiania dziesiątek plików. W tej książce każdy komponent MVC otrzymał własny rozdział. Rozdział 3. opisuje widoki, rozdział 4. szablony, a rozdział 5. modele. Dodatkowo ostatni z wspomnianych rozdziałów bardziej dogłębnie omawia filozofię modelu MVC zastosowanego w Django. Historia DjangoZanim przejdziemy do dodatkowego kodu, zatrzymajmy się na chwilę i przedstawmy historię Django. Wspomnieliśmy wcześniej, że będziemy pokazywali pewne rozwiązania bez skrótów, by lepiej te skróty zrozumieć. Podobnie, warto wiedzieć dlaczego powstało Django, ponieważ znajomość historii pozwala w odpowiednim kontekście spojrzeć na to, dlaczego Django działa tak, jak działa. Jeśli już od jakiegoś czasu tworzysz aplikacje internetowe, zapewne dobrze znasz problemy zaprezentowane we wcześniejszym przykładzie z CGI. Klasyczna ścieżka programowania witryny WWW przebiega mniej więcej następująco:
To właśnie w ten sposób powstało Django! Django powstawało w sposób organiczny na podstawie rzeczywistych aplikacji tworzonych przez zespół aplikacji internetowych w Lawrence w stanie Kansas (USA). Powstało pod koniec 2003 roku, gdy programiści witryn WWW w gazecie Lawrence Journal-World, Adrian Holovaty i Simon Willison rozpoczęli stosować język Python do budowania aplikacji. Zespół World Online, odpowiedzialny za tworzenie i utrzymanie kilku lokalnych witryn informacyjnych, rozwijał się w środowisku silnie związanym z terminami dziennikarskimi. Dla witryn — między innymi LJWorld.com, Lawrence.com i KUsports.com — dziennikarze (i zarząd) żądał wprowadzania nowych funkcji i dodawania nowych aplikacji w bardzo krótkich terminach. Często informacja o potrzebie wprowadzania funkcji pojawiała się tylko kilka dni lub godzin przez końcowym terminem. Z tego powodu Simon i Adrian z konieczności zaprojektowali framework aplikacji internetowych pozwalający zaoszczędzić jak najwięcej czasu — był to jedyny sposób, by mogli tworzyć łatwe z pielęgnacji aplikacji przy tak krótkich terminach realizacji. Latem 2005, po doprowadzeniu do sytuacji, w której większość witryn World Online działała na nowej platformie, zespół (który zawierał w tym czasie również Jacoba Kaplana-Mossa), zdecydował się opublikować framework jako oprogramowanie typu open source. Otwarcie kodu nastąpiło w lipcu 2005 roku. Frameworkowi nadano nazwę Django, po słynnym gitarzyście jazzowym, Django Reinhardtcie. Obecnie, czyli kilka lat później, Django to dobrze działający projekt open source z dziesiątkami tysięcy użytkowników i współtwórców rozsianych po całym globie. Oryginalni programiści z World Online (Adrian i Jacob, nazywani "Benevolent Dictators for Life"), nadal starają się stanowić główne źródło wskazówek co do dalszego rozwoju frameworka, ale obecnie jest to przede wszystkim zbiorowy wysiłek. Ta historią jest bardzo istotna, ponieważ pozwala wyjaśnić dwie kluczowe kwestie. Po pierwsze, Django to tzw. "słodki punkt". Ponieważ powstał w środowisku dziennikarskim, oferuje kilka funkcji (na przykład panel administracyjny opisany w rozdziale 6.) doskonale sprawdzających się na witrynach z centralnie zarządzaną zawartością — witrynach takich jak Amazon.com, craigslist.org i washingtonpost.com, które wykorzystują dynamiczną zawartość bazującą na danych z baz danych. Nie daj się jednak zwieść — choć Django jest szczególnie dobrym narzędziem przy tworzeniu tego rodzaju witryn, nie oznacza to, że nie może być efektywnym systemem do budowania dowolnego rodzaju dynamicznych witryn internetowych. Istnieje różnica między byciem szczególnie dobrym w pewnej rzeczy i byciem nieefektywnym w innych. Drugą istotną kwestią jest to, w jaki sposób pochodzenie Django ukształtowało kulturę jego społeczności open source. Ponieważ Django zostało wyodrębnione z produkcyjnego kodu, zamiast być ćwiczeniem akademickim lub produktem komercyjnym, w doskonały sposób skupiło się na rozwiązaniu problemów z aplikacjami internetowymi, z którymi mieli do czynienia autorzy Django. Ten trend nadal się utrzymuje. W wyniku tego Django poprawia się niemal każdego dnia. Osoby pielęgnujące kod mają swój własny interes w tym, by Django oszczędzało czas programistów, pozwalało tworzyć aplikacje łatwe w utrzymaniu i dobrze radzące sobie z dużym obciążeniem. Cóż innego może motywować programistów lepiej niż ich samolubna chęć zaoszczędzenia sobie czasu i zapewnienia większej przyjemności z pisania kodu? By ując to bardziej obrazowo, tak się wyśpią, jak sobie sami pościelą. Jak czytać tę książkę?Pisząc tę książkę, staraliśmy się zachować równowagę między łatwością czytania i zapewnieniem dobrego leksykonu, ale z większym naciskiem na czytelność. Celem niniejszej książki, jak wspomnieliśmy wcześniej, jest uczynić Cię ekspertem Django. Wierzymy, że najprościej uczynić to prozą i mnóstwem przykładów zamiast prezentować wyczerpujący, ale suchy materiał opisujący wszystkie funkcje Django. Jak mówi powiedzenie, nie można nauczyć kogoś mówić w danym języku, ucząc go jedynie alfabetu. Pamiętając o tym, zalecamy byś przeczytał rozdziały od 1. do 7. po kolei. Stanowią one podstawę użytkowana Django. Po ich przeczytaniu będziesz potrafił tworzyć w Django aplikacje internetowe. Pozostałe rozdziały skupiają się na poszczególnych elementach dodatkowych, więc można je czytać w dowolnej kolejności. Dodatki stanowią materiał leksykalny. W połączeniu z dokumentacją Django dostępną pod adresem http://www.djangoproject.com/, zapewne będziesz ich używał od czasu do czasu w celu przypomnienia sobie składni lub znaczenia poszczególnych części Django. Wymagana wiedza programistycznaCzytelnik powinien rozumieć podstawy programowania proceduralnego i obiektowego: struktury sterujące (np. if, while, for), struktury danych (listy, słowniki lub tablice mieszające), zmienne, klasy i obiekty. Doświadczenie w tworzeniu dynamicznych witryn internetowych będzie pomocne, ale nie jest wymagane do zrozumienia treści książki. Postaramy się zaprezentować jak najwięcej najlepszych praktyk programowania aplikacji internetowych dla tych osób, którym brakuje doświadczenia. Wymagana wiedza języka PythonDjango to tak naprawdę zbiór bibliotek napisanych w języku Python. Pisząc witrynę w Django, tak naprawdę pisze się kod Pythona wykorzystujący te biblioteki. Nauka Django jest więc nauką programowania w języku Python z jednoczesnym zrozumieniem sposobu funkcjonowania bibliotek Django. Jeśli masz doświadczenie z programowaniem w Pythonie, nie powinieneś mieć problemów z opanowaniem bibliotek Django. W zdecydowanej większości sytuacji kod Django nie używa dużej ilości "magii" (czyli sztuczek programistycznych, których implementacja jest trudna do zrozumienia i wyjaśnienia). Jeśli jesteś taką osobą, nauka Django powinna dotyczyć tylko poznania konwencji i odpowiednich API. Jeśli nie masz doświadczenia w programowaniu w języku Python, nie powinieneś się bać. Jest prosty do nauki i przyjemny w użyciu! Choć książka nie zawiera pełnego wprowadzenia do języka Python, wskazuje cechy i funkcjonalność języka, gdy wymaga tego sytuacja. Polecamy przeczytanie oficjalnego ćwiczenia wprowadzającego do Pythona dostępnego pod adresem http://docs.python.org/tut/. Zalecamy również zapoznanie się z dostępną bezpłatnie książką Marka Pilgrima Zanurkuj w Pythonie, dostępną w polskim tłumaczeniu pod adresem http://pl.wikibooks.org/wiki/Python i opublikowaną przez Apress. Wymagana wersja DjangoTa książka omawia serię wydań Django zaczynająca się od 1.x, czyli wersje 1.0, 1.02 lub 1.1 Programiści Django zachowują zgodność wstecz wewnątrz "głównych wydań". Oznacza to, że jeśli napiszesz aplikację dla Django 1.0, będzie ona nadal działała z wersjami 1.1, 1.2, 1.9 lub jakąkolwiek inną zaczynająca się od "1.". Gdy jednak pojawi się Django 2.0, aplikacja może wymagać przeróbek. Nie przejmuj się jednak, do wersji 2.0 jeszcze daleko. Przypomnijmy, że dojście do wydania wersji 1.0 trwało trzy lata. (Django stosuje politykę zgodności bardzo podobną do języka Python; kod napisany dla Pythona 2.0 działa w wersji 2.6, ale niekoniecznie w wersji 3.0). Ponieważ książka opisuje wersję 1.x, powinna Ci służyć przez dłuższy okres czasu. Uzyskanie pomocyJedną z największych zalet Django jest miła i pomocna społeczność użytkowników. Gdy szukasz pomocy w temacie instalacji, projektu aplikacji, projektu bazy danych lub wdrożenia, nie bój się zadawać pytań na:
Co dalej?W następnym rozdziale zaczniemy przygodę z Django od instalacji i początkowej konfiguracji. |