Django – framework dla zapracowanych programistów. Wprowadzenie
Przy coraz krótszych terminach realizacji projektów i coraz większej ich złożoności, deweloperzy aplikacji sieciowych potrzebują systemów, które zapewnią sprawną realizację celów. Bazujący na Pythonie Django jest właśnie jednym z takich rozwiązań. Spośród innych frameworków wyróżniają go: przejrzysty schemat danych, precyzyjne dopasowanie komponentów standardowych i łatwość ich rozbudowy, a także bogata dokumentacja oraz wygodny system administracyjny. Jeśli więc w trakcie procesu projektowania zdarza się nam przekraczać kolejne terminy, a zamiast podążać prostą drogą do celu grzęźniemy w tworzeniu standardowych rozwiązań, warto przyjrzeć się bliżej metodom pracy z Django. Rozwiązanie wszystkich naszych problemów może być bowiem bardzo blisko.
Django w wielu materiałach wymieniany jest obok najpopularniejszego w ostatnich latach frameworka – Ruby on Rails. Choć różni je język (Django – Python, Rails – Ruby), podejście do niektórych zagadnień i sposób rozbudowy, to na podstawowym poziomie oba programy starają się wypełnić to samo zadanie – dać deweloperowi narzędzie elastyczne, wygodne, szybkie i łatwe do opanowania.
Django bazuje na Pythonie – języku ogólnego stosowania, który istnieje tak długo jak Java i jest bardziej elastyczny niż PHP. To właśnie tej podstawie zawdzięcza framework przejrzystość i prostotę, pozwalającą generować kod krótki i łatwy do późniejszej analizy. Co równie istotne, Python doczekał się wielu bibliotek dodatkowych związanych nie tylko z Internetem, ale także innymi działami informatyki – obliczeniami matematycznymi czy grafiką komputerową. Znacznemu skróceniu ulega dzięki temu czas tworzenia nietypowych aplikacji – wystarczy dobrze poszukać, by stwierdzić, że rozwiązaniem naszego problemu może być stworzona już wcześniej biblioteka.
Opisując zalety tandemu tandem Python-Django, warto także wspomnieć, że stał on się standardową platformą w systemie Google App Engine, pozwalającym na tworzenie witryn internetowych bazujących na infrastrukturze Google. W Polsce Django docenił między innymi serwis społecznościowy Grono.net oraz gazeta Super Express.
Historia
Framework Django narodził się w 2003 roku w USA, gdy w internetowym dziale jednej z lokalnych gazet programiści stwierdzili, że chcą przenieść istniejące, napisane w PHP witryny na platformę języka Python. Dostępne w tym czasie frameworki, były dla nich albo zbyt rozbudowane (Zope), albo nie spełniały specyficznych potrzeb serwisu. Ponieważ dziennikarstwo to dziedzina wymagająca natychmiastowej reakcji na zmieniające się wydarzenia, nowy system musiał zapewniać tworzenie kolejnych elementów składowych nie w tygodnie czy miesiące, ale w dni i godziny. Od pomysłu do realizacji i udostępnienia użytkownikom nowego działu mijał bowiem częstokroć tylko jeden dzień.
Django nie powstawało więc jako niezależny framework – między 2003 a 2005 rokiem stanowiło część większego systemu trzech portali. Dzięki temu jego użytkownicy także obecnie mogą mieć pewność, że wszystkie proponowane rozwiązania sprawdziły się w praktyce i to w bardzo wymagającym środowisku. W 2005 roku nastąpiło wyodrębnienie rdzenia systemu i udostępnienie go na zasadach Open Source pod nazwą Django. Przez kolejne trzy lata system ulegał metamorfozie i wielu udoskonaleniom, by w 2008 roku osiągnąć status 1.0. Obecnie najnowszą wersją jest wydanie 1.1.
Elastyczny wzorzec MVC, czyli MTV
W trakcie projektowania zrębów prostej aplikacji internetowej, najczęściej nie przejmujemy się faktem, że w tym samym pliku mieszają się ze sobą dane, logika biznesowa, logika prezentacji i kod HTML. Kiedy program zaczyna się rozrastać, taki zlepek utrudnia nie tylko dalszą rozbudowę, ale także wielokrotne wykorzystanie podobnych fragmentów kodu.
Pomoc w rozwiązaniu przedstawionego problemu zapewnia podział aplikacji na logiczne elementy – nazywany skrótowo wzorcem MVC (Model-View-Controller). Ponieważ skrót MVC nie brzmiał zbyt chwytliwie, autorzy Django użyli „odmiany” o nazwie MTV (Model-Template-View). Różnice między wzorcami dotyczą z pozoru tylko szczegółów, te drobne modyfikacje mogą jednak stanowić o elastyczności całego systemu. Niezależnie jednak od nazwy, zastosowanie separacji poszczególnych warstw aplikacji ułatwia wielokrotne wykorzystanie podobnych elementów (zasada DRY), zmniejsza złożoność i upraszcza poszukiwanie kodu realizującego daną funkcjonalność (zasada KISS).
MVC, MTV, DRY i KISS, czyli... |
|---|
|
Warto przyjrzeć się bliżej, jak Django wciela w życie opisane wyżej zasady. Pierwszy komponent – modele – to klasy definiowane w języku Python, określające w czytelny sposób strukturę tabel, na podstawie której Django automatycznie generuje zapytania SQL. Te ostatnie dotyczą między innymi tworzenia samych tabel, ich edycji oraz pobierania danych. W wielu sytuacjach nie trzeba zatem w ogóle używać języka SQL, co zapewnia lepszą kompatybilność kodu (obsługę wielu systemów bazodanowych) i sprzyja zachowaniu zasady DRY.
Widoki są z kolei standardowymi funkcjami Pythona, których jedynym zadaniem jest pobieranie obiektu żądania i zwracanie obiektu odpowiedzi lub zgłaszanie wyjątku. Nie musimy więc tworzyć specjalnych klas kontrolerów (jak w modelu MVC), zastanawiać się, co ze sobą połączyć i po jakich klasach bazowych dziedziczyć. Takie podejście sprzyja więc bezpośrednio realizacji zasady KISS. Warto w tym miejscu zaznaczyć, że jeśli zajdzie potrzeba, możemy oczywiście tworzyć także odpowiednie klasy kontrolerów.
Ostatnim elementem opisanej struktury są szablony służące do generowania końcowych wyników. Zbudowano je według możliwie uproszczonego, niebazującego na języku XML schematu. Dzięki temu cała struktura jest zrozumiała zarówno dla projektantów jak i grafików oraz innych osób standardowo niezajmujących się programowaniem (zasada KISS). Jednocześnie obsługuje ona system dziedziczenia przypominający dziedziczenie klas, co minimalizuje powtórzenia kodu HTML i pomaga zastosować się do wskazówki wyrażonej akronimem DRY.
«poprzednia 1 2 3 4 ... 5 następna »
Polecamy
Reklama
Komentarze
Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka
(słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.
Popularne
MSWiA zamówiło narzędzia do „złamania” Tora i podsłuchiwania internautów. Czy złamało przy tym prawo?
89
Korea Północna: korzystasz z telefonu komórkowego? Jesteś więc zbrodniarzem wojennym
5
Nowa polityka prywatności Google'a już za miesiąc wejdzie w życie. Mamy się czego bać?
16
Firefox 10 już jest. Wiele atrakcji dla programistów, użytkownicy raczej nic nie zauważą
9
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1451
Linux wypiera z korporacyjnych serwerów już nie tylko Uniksy, ale i Windows
11
Źle się dzieje z Chrome, ze stabilnością coraz gorzej. Gdzie się podziała słynna izolacja procesów?
23
MSWiA zamówiło narzędzia do „złamania” Tora i podsłuchiwania internautów. Czy złamało przy tym prawo?
89
[Aktualizacja] Facebook zablokował Demotywatory.pl. W czym zawiniły?
36
FBI zamknęło Megaupload. Anonimowi dali się sprowokować. Teraz ich akcja uzasadni potrzebę SOPA?
17
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1451
Rząd Tuska zablokował dostęp do tańszych leków z internetowych aptek
61
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
15
„Donald matole, twój rząd dopadną kibole” – hakerska elita przyłącza się do walki z ACTA
23
Społeczność
matrixik A ja już długi czas temu przesiadłem się z Konnecta na Mirandę i jestem...
hipertracker @slawek22, ORM wcale nie musi tworzyć nieoptymalnych kwerend. Poza tym...
Rumcajs Kolejna PRowska ściema Donka. Już mnie krew zalewa.
Artykuł 41...
zalesz o Pan Sławek :)
Patrzę nic się nie zmieniło, w sumie to nic się nie...
slawek22 Jeszcze taka dygresja na poparcie tezy, akurat sobie czytałem o node...
slawek22 Tylko po co mi 5, 10 albo nawet 15 razy szybszy JRuby skoro całą "moc...
pobieraczek.pl zapłacicie wszyscy ;D
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
- Marek: problem z menu (2)
- Marek: Własne checkboxy w HTML,CSS (1)
Polecane książki
Praca
Obsługa księgowa z językiem niemieckim
Tech Support Engineer with fluent English and German, French, Italian or Spanish
Młodszy Specjalista w Dziale Należności ze znajomością języka francuskiego
Analityk Baz Danych i Systemów Monitorowania
Menedżer ds. Klienta Biznesowego
Starszy Programista Aplikacji Internetowych/Team Leader
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |









#1 pats 2009-05-11 10:47:22 1
IP: 95.41.85.[...] Opera/9.64 (Windows NT 5.1; U; pl) Presto/2.1.1
#2 gość 2009-05-11 12:20:03 0
IP: 83.8.130.[...] Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.10) Gecko/2009042523 Ubuntu/8.10 (intrepid) Firefox/3.0.10
#3 snf 2009-05-11 12:21:25 0
IP: 213.227.93.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4
#4 Secator 2009-05-11 13:28:45 0
IP: 213.134.186.[...] Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10
#5 -ja- 2009-05-11 13:47:44 0
IP: 217.113.228.[...] Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10
#6 dAREuS® 2009-05-11 14:07:57 0
IP: 79.186.3.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)
#7 Jan Koprowski® 2009-05-11 19:19:06 0
IP: 89.77.96.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.8 (KHTML, like Gecko) Chrome/2.0.177.1 Safari/530.8
#8 pako® 2009-05-12 20:13:39 0
IP: 213.156.104.[...] Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030814 Iceweasel/3.0.7 (Debian-3.0.7-1)
#9 -ja- 2009-05-13 10:31:35 0
IP: 217.113.228.[...] Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10
#10 Restless 2009-05-13 10:36:16 0
IP: 89.248.165.[...] Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.10) Gecko/2009042523 Ubuntu/8.10 (intrepid) Firefox/3.0.10 X-FirePython/0.1
#11 bx2 2009-05-13 11:35:24 0
IP: 83.13.5.[...] Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; pl; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10
#12 -ja- 2009-05-13 12:43:19 0
IP: 217.113.228.[...] Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10
#13 pbjk 2009-05-13 13:56:10 0
IP: 83.238.22.[...] Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.04 (hardy) Firefox/3.0.7
#14 dAREuS® 2009-05-13 14:26:45 0
IP: 83.27.151.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)
#15 bx2 2009-05-13 14:55:48 0
IP: 83.13.5.[...] Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; pl; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10
#16 Jan Koprowski® 2009-05-13 18:29:18 0
IP: 89.77.96.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.9 (KHTML, like Gecko) Chrome/2.0.180.0 Safari/530.9
#17 pako® 2009-05-13 20:51:29 0
IP: 213.156.104.[...] Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030814 Iceweasel/3.0.9 (Debian-3.0.9-1)
#18 Rafał Jońca 2009-05-13 21:15:18 0
IP: 88.156.98.[...] Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10
#19 x_O 2009-06-03 19:47:41 0
IP: 195.150.77.[...] Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10