Rozdział 1: Wprowadzenie do Django
go-previous.png

Poprzednia strona: Spis treści

go-next.png

Następna strona: Rozpoczęcie zabawy

dialog-information.png

Ten rozdział jest aktualnie dopracowywany w celu podniesieniu jakości.

Gdy odwiedzisz stronę djangoproject.com używając swojej przeglądarki Internetowej - lub, w zależności w jakiej dekadzie czytasz nasze ponadczasowe dzieło - swojego telefonu komórkowego, elektronicznego zeszytu, buta czy jakiegokolwiek innego urządzenia z dostępem do Sieci - znajdziesz to wyjaśnienie:

"Django to framework wysokiego poziomu dla Pythona umożliwiający szybkie i proste tworzenie stron internetowych."

Wyjaśnienie to może pozostać niezrozumiałe dla części z was, więc postaram się je wytłumaczyć.

Django to framework wysokiego poziomu dla Pythona…

Framework wysokiego poziomu to oprogramowanie ułatwiające w znacznym stopniu pisanie dynamicznych witryn internetowych. Sam zajmuje się najczęstszymi problemami związanymi z tworzeniem stron i zapewnia skróty do najczęściej używanych funkcji.

A samo słowo "framework" to, według Wikipedii:

Framework (rama projektowa, szkielet) to w programowaniu struktura wspomagająca tworzenie, rozwój i testowanie powstającej aplikacji. Z reguły na framework składają się programy wspomagające, biblioteki kodu źródłowego i inne podobne narzędzia.

Aby wszystko było jasne: dynamiczna strona internetowa to nie sam HTML znajdujący się na jakimś tam serwerze. Dynamiczne witryny są generowane przez programy zwane "aplikacjami internetowymi", które ty tworzysz. Aplikacja może, na przykład, pobrać wpisy z bazy danych albo wykonać jakąś akcję zależną od tego, co użytkownik wpisze lub wciśnie.

Dobry framework sieciowy rozwiązuje najczęściej spotykane problemy, m.in.:

  • Umożliwia przypisywanie konkretnych URLi do kodu, który obsługuje żądania. Innymi słowy, daje ci możliwość wskazania, który kod powinien wykonać się dla którego URLa. Na przykład, mógłbyś powiedzieć frameworkowi: "Dla URLa który wygląda jak /uzytkownicy/marek/, wykonaj kod który wyświetli profil użytkownika o takiej nazwie".
  • Ułatwia wyświetlanie, weryfikowanie i ponowne wyświetlanie formularzy HTML. Formularze te są podstawowym sposobem na pobieranie danych od użytkownika, więc frameworki musiały ułatwić wyświetlanie ich, oraz zająć się nudnym kodem wyświetlania formularza oraz ponownego wyświetlania (z wyróżnionymi błędami).
  • Konwertuje dane wejściowe od użytkownika do struktur danych, którymi można wygodnie manipulować. Na przykład, framework mógłby konwertować dane z formularzy HTML do natywnych typów danych języka programowania którego używasz.
  • Pomaga oddzielić treść od prezentacji poprzez system szablonów, abyś mógł zmienić wygląd strony bez wpływania na treść, i vice versa.
  • Wygodnie integruje się z warstwami przechowywania danych - takich jak bazy danych - ale nie wymaga ściśle użycia bazy danych.
  • Pozwala ci pracować bardziej produktywnie, na wyższym poziomie abstrakcji, niż byś pisał bezpośrednio pod, powiedzmy, HTTP. Ale nie zabrania ci zejść o jeden poziom abstrakcji "niżej", gdy jest to potrzebne.
  • Ułatwia pracę, nie pozwalając na pozostawienie "brzydkich" URLi zawierających np. ".aspx" czy ".php".

Django wykonuje wszystkie powyższe bardzo dobrze - oraz wprowadza wiele nowych cech, podnosząc poprzeczkę dla innych sieciowych frameworków.

Framework ten został napisany w Pythonie - pięknym, zwięzłym, potężnym języku programowania wysokiego poziomu. Aby stworzyć stronę internetową używając Django, musisz napisać kod Pythona, który korzysta z bibliotek Django. I chociaż niniejsza książka nie zawiera kursu Pythona (który możecie znaleźć tutaj), zaznacza ona ważne dla zrozumienia kodu cechy i funkcje Pythona.

…umożliwiający szybkie i proste…

Jeśli framework sieciowy ma olbrzymią ilość funkcji, ale nie oszczędza twojego czasu, jest bezużyteczny. Filozofia Django to "zrób wszystko co się da, byle tylko strona powstałą w jak najkrótszym czasie". Z Django zbudowania rozbudowanej witryny to kwestia godzin - nie dni, tygodni ani lat.

Możliwe jest to dzięki Pythonowi samemu w sobie. Oto jego najważniejsze cechy:

  • Python jest językiem interpretowanym, co znaczy że nie musisz kompilować jego kodu. Po prostu napisz program i go uruchom. W przypadku tworzenia stron WWW znaczy to, że możesz zmienić kod i zobaczyć wyniki po wciśnięciu jedynie "odśwież" w przeglądarce.
  • Python dynamicznie przyznaje zmiennym typy, więc nie musisz się już o to martwić.
  • Składnia Pythona jest zwięzła, ale ekspresywna, co oznacza, że pisząc mniej kodu niż w innych językach (takich jak np. Java), można uzyskać te same efekty. Jedna linia kodu Pythona zazwyczaj równa jest 10 liniom w Javie (ma to dodatkową zaletę: mniej linii kodu - mniej błędów).
  • Python oferuję potężną introspekcję i cechy meta-programowania, co pozwala mu na nadzorowanie i dodawania zachowań obiektów podczas działania programu.

Oprócz zalet "odziedziczonych" po Pythonie, Django również stara się robić wszystko, by pisanie stron było łatwiejsze i szybsze. Każda część frameworka pisana była z uwzględnieniem jak największej wydajności. Dowody na to znajdziesz w każdym rozdziale tej książki.

…tworzenie stron internetowych.

Django umożliwia tworzenie przejrzystego i czystego kodu stron WWW zgodnych z najnowszymi standardami Sieci.

Czyli, jeśli Django byłoby samochodem, zapewne byłby to elegancki sportowy wóz, nie tylko osiągający wysokie prędkości i idealnie sterowny, ale również ograniczający emisję spalin do minimum przy maksymalnym wykorzystaniu silnika i dużym przebiegu.

Cała filozofia to: Django ułatwia pisanie "dobrych" stron.

Django umożliwia również "luźne powiązania": filozofię programowania, która zakłada, że różne części aplikacji powinny być wymienne i komunikować się ze sobą z użyciem czystego, zwięzłego API.

Na przykład, system szablonów nie wie nic o systemie łączności z bazą danych, który nie wie nic o systemie żądań/odpowiedzi HTTP, który z kolei nie wie nic o pamięci podręcznej. Każdy z tych systemów jest inny od reszty i luźno powiązany z innymi. W praktyce oznacza to, że możesz łączyć i wiązać w/w systemy tylko wtedy, gdy jest ci to potrzebne.

Django korzysta z architektury MVC (ang. model-view-controller, model-widok-kontroler). Prościej: w tym sposobie tworzenia stron kod odpowiedzialny za definiowanie i dostęp do danych (model) jest oddzielny od logiki biznesowej (kontrolera) oraz od interfejsu użytkownika (widoku).

Najlepszym wyjaśnieniem czym jest MVC jest przykład - czego nie robić. Popatrz na poniższy kod PHP, który pobiera listę użytkowników z bazy MySQL i wyświetla ją w formie HTML:

<html>
<head><title>Członkowie klubu "Pegaz"</title></head>
<body>
 
<h1>Członkowie klubu "Pegaz"</h1>
 
<ul>
 
<?php
$polaczenie = @mysql_connect("localhost", "uzytkownik", "haslo");
mysql_select_db("baza_danych");
$czlonkowie = mysql_query("SELECT imie, wiek FROM czlonkowie");
while ( $czlonek = mysql_fetch_array($czlonkowie, MYSQL_ASSOC) ) {
?>
<li>
<?php echo $czlonek['imie'] ?> ma <?php echo $czlonek['wiek'] ?> lat.
</li>
<?php } ?>
 
</ul>
 
</body>
</html>

Kod ten jest prosty dla początkujących - bo wszystko jest w jednym pliku - ale w praktyce jest zły, ponieważ:

1. Warstwa prezentacyjna jest przywiązana do kodu. Jeśli projektant chciałby zmienić kod HTML strony, musiałby edytować ten plik, gdyż HTML i PHP są w tym przypadku połączone.

W przeciwieństwie do powyższego wypadku, Django/MVC zachęca do oddzielenia kodu i prezentacji, tak by prezentacja była zarządzana przez szablony, a logika biznesowa "żyła" w modułach Pythona. Programiści piszą kod, projektanci tworzą design.

2. Kod obsługujący bazę danych jest przywiązany do warstwy logiki biznesowej. To przysparza kłopotów: Jeśli zmienisz nazwę tabel, lub kolumn, będziesz musiał przepisać kod SQL.

W przeciwieństwie do powyższego wypadku, podejście Django/MVC namawia do stosowania pojedyńczej, abstrakcyjnej warstwy dostępu do danych, która jest odpowiedzialna za wszystkie operacje na danych. W przypadku Django, ta warstwa zna twoją tabelę bazy danych oraz nazwy kolumn i pozwala ci wykonywać zapytania SQL poprzez składnię Pythona, zwalniając cię z pisania kodu SQL. To znaczy, że gdy zmieni się nazwa tabeli, wystarczy, że zmienisz ją w jednym miejscu - definicji modelu danych - zamiast w każdym zapytaniu SQL rozrzuconym po całym kodzie twojej aplikacji.

3. URL jest połączony z kodem. Jeśli ten plik PHP leży w katalogu /foo/, jako /foo/index.php, zostanie wykonany dla wszystkich żądań tego adresu. Ale co jeśli chcesz wykonać ten sam kod dla żądań adresów /bar/ i /baz/? Musiałbyś ustawiać pewnego rodzaju dołączenia lub zasady przepisywania URLi, a te szybko stają się krnąbrne.

W przeciwieństwie do powyższego wypadku, Django oddziela URLe od kodu wykonującego, więc możesz zmienić URLe dla danego kawałka kodu.

4. Parametry połączenia i używany typ bazy danych jest zakodowany na stałe. Bałaganem jest mus wymienienia tych informacji w kodzie, ponieważ jest to część konfiguracji, nie logiki programowania. Ponadto, w tym przykładzie sami definiujemy, że używaną bazą danych jest MySQL.

W przeciwieństwie do powyższego wypadku, Django posiada jedno miejsce do przechowywania konfiguracji, a warstwa dostępu do bazy danych jest abstrakcyjna, więc zmiana bazy na inną (np. z MySQL na PostgreSQL) jest proste.

Czego Django nie robi

Oczywiście chcemy, żeby ta książka była obiektywna i wyważona. Powinniśmy więc być szczerzy i wymienić czego Django nie potrafi:

  • Nie nakarmi twojego kota.
  • Nie wyczyta z twoich myśli założeń projektu i nie zaimplementuje ich w starannie dobranym czasie, żeby zmylić twojego szefa, że nie zostajesz w domu, by oglądać telewizję.

A bardziej poważnie, Django nie potrafi jeszcze odwrócić efektów globalnego ocieplenia.

Dlaczego napisano Django?

Autorzy Django również żyją w Prawdziwym Świecie, przez co znają jego problemy i ich rozwiązania. Framework ten nie został napisany by być sprzedanym developerom, ani nie jest też żadnym zadaniem na III roku informatyki. Został zbudowany, by ułatwiać pracę zwykłym ludziom, takim jak ty, oraz profesjonalnym twórcom stron WWW.

Prace nad Django rozpoczęły się jesienią 2003 roku, w - uwaga - gazecie z małego miasteczka Lawrence w stanie Kansas.

Z różnych powodów, gazeta Lawrence Journal-World zdołało zebrać grupę utalentowanych designerów i developerów sieciowych na początku XXI wieku. Internetowa akcja gazety, World Online (ang. Świat Online), szybko stała się jedną z najbardziej innowacyjnych sieciowych akcji organizowanych przez jakąkolwiek gazetę na świecie. Trzy główne strony gazety, LJWorld.com (wiadomości), Lawrence.com (rozrywka/muzyka) i KUsports (sport), zaczęły wygrywać nagrody w dziedzinach internetowej publicystyki. Innowacji było wiele, m.in.:

  • Strona rozrywkowa Lawrence.com łącząca bazy danych z informacjami o lokalnych wydarzeniach muzycznych, kapelach, restauracjach, czy nawet drinkach, oraz możliwość ściągnięcia piosenek i przeczytania wiadomości w tradycyjnym formacie.
  • Letni dział LJWorld.com, który opisywał graczy lokalnej Little League (ang. Mała Liga), jakby ich klubem był New York Yankees - każdy klub miał swoją własną stronę umożliwiającą np. sprawdzenie prognozy pogody na najbliższe rozgrywki, obejrzenie 360-stopniowej panoramy każdego stadionu, czy informowanie rodziców przez SMS, jeśli mecz został odwołany.
  • Informacje na SMS o grach w koszykówkę i football w University of Kansas (ang. Uniwersytet Kansas) , które pozwalały fanom na otrzymywanie świeżych informacji o wynikach i statystykach gier, albo inny system umożliwiający wysyłanie prostych wiadomości tekstowych, które były wykonywane jako zapytania dw bazie danych (np. "ile punktów mają giddensi" albo "pkt giddensi")
  • Olbrzymia baza danych o wszystkich statystykach college'owych gier w football i koszykówkę, umożliwiający nawet porównanie dwóch zawodników czy drużyn.
  • Darmowe blogi dla społeczności portalu i promowanie pisania - zanim blogi stały się popularne.

Światowi mędrcy publicystyczni wskazywali World Online jako przykład na przyszłość dziennikarstwa.
New York Times poświęcił firmie artykuł na pierwszej stronie sekcji biznesowej; National Public Radio nadało dwudniową serię jej poświęconą. Naczelny redaktor World Online, Rob Curley, przemawiał, niemal co tydzień, na konferencjach poświęconych publicystyce na całym świecie, przedstawiając innowacyjne pomysły World Online i aspekty strony.
W konserwatywnym przemyśle, opornym na zmiany, World Online był rzadkim wyjątkiem.

World Online zawdzięcza wiele swojego sukcesu technologii stojącej za jego stronami, i filozofii mówiącej, że programiści są równie ważni w tworzeniu wysokiej jakości XXII-wiecznej publicystyki, co sami dziennikarze.

Dlatego też zostało napisane Django: developerzy World Online potrzebowali frameworka do prostej i szybkiej budowy złożonych, bazodanowych witryn WWW, łatwo i na czas.

Jesienią 2003, programiści World Online, Adrian Holovaty i Simon Willson, zabrali się za tego oto frameworka. Zdecydowali użyć Pythona, języka w którym niedawno się zakochali. Po przejrzeniu (i rozczarowaniu nimi) dostępnych bibliotek zorientowanych na tworzenie aplikacji WWW, zaczęli tworzyć Django.

Dwa lata później, latem 2005 roku, po doprowadzeniu projektu Django do punktu w którym efektywnie napędzał większość stron World Online, jego zespół, w którym teraz znajdował się także Jacob Kaplan-Moss, zdecydował, że dobrym pomysłem będzie otwarcie kodu frameworka. Dzięki temu, mogli dać coś społeczności open-source, otrzymać darmowe poprawki od zewnętrznych programistów i wygenerować nieco zainteresowania ich komercyjnym, opartym na Django systemie zarządzania treścią, Ellington (http://www.ellingtoncms.com/). Django został otworzony w lipcu 2005 i szybko stał się popularny.

Pomimo tego, że framework jest teraz projektem open-source, w którym udzielają się osoby z całego świata, programiści World Online nadal sprawują pieczę rozwojem frameworka i wciąż udzielają wsparcia w ważnych aspektach, takich jak czas pracowników, materiały marketingowe czy hosting strony głównej projektu (http://www.djangopowered.com/).

Kto używa Django?

Używają go programiści z całego świata. Niektóre konkretne przykłady:

  • Oczywiście, World Online, nadal używa Django dla wszystkich swoich stron, tak wewnętrznych jak i tych dla komercyjnych klientów. Niektóre strony oparte na Django:
  • Strona The Washington Post (washingtonpost.com) używa Django do projektów bazodanowych i przeróżnych aspektów całej strony, na przykład:
  • Chicagocrime.org, baza danych przestępstw zgłoszonych w Chicago, została napisana w Django.
  • Tabblo.com, innowacyjna strona służąca wymianie zdjęć,używa Django. Pozwala na gromadzenie swoich zdjęć i tworzenie stron ze zdjęciami.
  • Texasgigs.com, lokalna strona muzyczna w Dallas, została napisana w Django.
  • Grono.net, polska sieć społecznościowa, rozpoczęła migrację z Javy na Django. Odkryła, że Django nie tylko pozwala szybciej pisać - sprawiało się lepiej niż Java i miało mniejsze wymagania.
  • Traincheck.com został napisany w Django. Strona pozwala ci wysyłać wiadomości tekstowe z twojego telefonu komórkowego, aby otrzymać rozkłady jazdy metra w twojej okolicy.

Aktualna lista stron używających Django jest dostępna pod adresem:
http://code.djangoproject.com/wiki/DjangoPoweredSites

O tej książce

Celem tej książki jest wyjaśnienie wszystkich aspektów Django - i sprawienie, że staniesz się ekspertem w posługiwaniu się niniejszym frameworkiem.

Czytając tą książkę, nabędziesz umiejętności potrzebne do szybkiego pisania potężnych aplikacji WWW, których kod jest czysty i łatwy w utrzymaniu.

Cieszymy się, że tu jesteś!

wersja strony: 14, ostatnia edycja: 1172070153|%e %b %Y, %H:%M %Z (%O temu)
Jeśli nie zaznaczono inaczej, Zawartość tej strony dostępna jest na licencji GNU Free Documentation License.