Tri stvari koje život djangonauta čine lakšim

django

Django sadrži cijeli niz malih stvari i rješenja koje razvoj čine daleko lakšim nego što bi to bio slučaj s nekim drugim okruženjem. U naslovu stoji tri stvari, ali vrlo lako bi se nabrojalo 13, a uz malo više truda i 33 stvari koje olakšavaju život developera. U ovom članku ću se ograničiti na tri stvari, kasnije mogu krenuti s dodatnim nastavcima, a do trilogije ne bi ni prste pošteno razgibao. Ali krenimo po redu...


virtualenv


virtualenv nije vezan samo uz Django već pomaže da se složi izolirano Python okruženje. To izolirano okruženje može se nalaziti u bilo kojem direktoriju što znači da bilo koji korisnik može u njega instalirati dodatne Python pakete bez da oni zagađuju globalno okruženje. Idealno je za slučaj kad želite isprobavati različite biblioteke ili ako želite provjeriti kako se vaša aplikacija ponaša s različitim inačicama Djanga. Razvoj bilo kojeg projekta sada započinjem stvaranjem izolacije i instaliranje željene inačice Djanga u nju. Na taj način mogu na istom računalu razvijati i testirati aplikacije i svaka od njih može koristiti različitu inačicu Djanga i različiti postav dodatnih biblioteka.


virtualenv je idealan i za hostanje projekata, ne morate čekati milost administratora i globalnu instalaciju nekog paketa, to radite sami. I možete si posložiti okolinu po mjeri.


South


Promjena strukture baze i njezina migracija mogu prouzročiti puno muke i posla ukoliko taj proces nije automatiziran već se radi ručno. U početku svoje Django avanture koristio sam django-evolution. Ako niste previše zahtjevni onda s njime možete obaviti posao. Ako nemate ništa drugo. Dovoljno je jedno polje koje može imati NULL vrijednosti pa da se zbuni.


South je daleko bolje rješenje. Nije toliko jednostavno kao django-evolution, ali se ne spotiče na NULL poljima, omogućava pisanje dodatnog koda za pojedine korake migracije i možete migrirati bazu prema naprijed i prema nazad. South nije savršeno rješenje, ali je trenutno najbolje što se nudi za Django.


Sentry


Jedna od korisnih stvari u Djangu je da u postavkama možete navesti e-mail adresu na koju vam onda stižu greške (uglavnom exceptioni) koje se pojavljuju u aplikaciji. To je izuzetno korisna stvar ukoliko imate male projekte s malim brojem linija koda i manje mogućnosti da nešto krene po zlu. Ako imate veliki projekt i jako posjećene stranice, gdje je mogućnost greške veća, onda bi vam vaš mail klijent mogao postati vrlo veliko ograničenje. Naročito ako se striček Murphy stvarno zaigra pa vam dođe nekoliko stotina ili čak tisuće poruka.


Sentry olakšava tu vrstu problema. On hvata iznimke, sprema ih u bazu i omogućava pregledan uvid u njih. Iste iznimke grupira i pokazuje kao jednu stavku s brojem pojavljivanja. Omogućuje i njihovo filtriranje prema vrsti ili prema aplikaciji/računalu gdje je iznimka nastala. Idealno je da na produkciji imate samo Sentry klijenta, a da se poslužitelj nalazi na nekom drugom računalu (ili na više njih ukoliko je riječ o kritičkom servisu) jer ako imate sve na istom mjestu moglo bi vam se dogoditi da ostanete bez popisa iznimki (npr. u slučaju nemogućnosti pristupa database poslužitelju).



Komentari

21. siječnja 2011. 13:40

Super popis, taman sam neki sličan mislio slijedeći tjedan staviti :-)

Još bih dodao par stvari:

  • Django Debug Toolbar zgodan za pregled što se točno događa, od SQL upita do templateova.

  • Pip za instaliravanje paketa, ima integraciju s virtualenvom, i čini se da je trenutno ljubitelj Django korisnika (a i developera)

  • Još se nisam igrao s njim, ali ekipa sve čepće spominje gunicorn kao server umjesto mod_wsgi

21. siječnja 2011. 13:59

@Senko: Je, debug toolbar je odličan, a može prikazivati i podatke iz aplikacije na drugom računalu.

Pip mi dolazi u kompletu s virtualenv instalacijom pa ga nisam izdvajao.

gunicorn mi je na todo listi za test. :-)

3. veljače 2011. 15:05

+1 za south i debug-toolbar. Gunicorn isto obećava. Ako je baš potrebno, ima i dosta kvalitetnih reusable appova: pagination, registration, tagging. django-extensions je isto cool. Iako nije samo za django - selenium za gui testiranje u paru sa djangovim unit testovima je dosta zgodna igračka.