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 »
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
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
22
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Anonymous upubliczniają 1,7 GB danych wykradzionych Departamentowi Sprawiedliwości USA
11
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Zostań webmasterem polskiego rządu, zarobisz na komfortowe życie dla siebie i swojej rodziny
33
Społeczność
Dave Smith Jestem Pastor Dave Smith prywatny pożyczkodawca pieniądze, z czego ponad...
marcusm Fajna reklama produktu za 500 zł
rza a to starsze aplikacje nie będą działać i kompilacja pod Windows SDK 7.1...
Krzaczor @Jakub Szymański: Możesz zalinkować do opisów jakichś polskich przypadków...
Krzaczor Ale oprogramowanie skompilowane dla Windows 7 ruszy przecież na ósemce...
ankaa Ja to czytam "plejsnow", a nie placek nał :) Nie wiem, co macie z tym...
veramird Są jeszcze studenci i msdaa co pozwoli dużej grupie używać pisać dalej za...
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- 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)
Polecane książki
Praca
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