Django, perfect fit

Posted by Kenny Eliasson | Posted in , , , | Posted on 12:20

Har under min vintersemester haft möjligheten att fördjupa mig i Django.

Det enda jag gjort i Django tidigare är ett par väldigt lätta exempel som jag visat upp för kompisar men nu skulle jag göra ett riktigt projekt, om än väldigt litet.

Sidan jag skapar är en personlig hemsida till en släkting och det enda som behövs är ett nyhetsarkiv och ett bildgalleri, allt annat kan vara statiskt till en början då hemsidan inte är tänkt att uppdateras allt för ofta.

Så jag satte igång med att generera mina modeller, admin-gränssnittet ändrade inställningar för språk och databaser tills jag stötte på mitt första problem, inlänkning av stylesheets, javascript och bilder.

Först trodde jag att det hade med mina urls, att jag skulle mappa "media"-filer rätt, men det funkade inte! Efter att ha gjort en snabb google-sökning så visade det sig att man skulle använda sig av en inställning som heter MEDIA-ROOT.
Som tur är har vi ett Django projekt på jobbet, så jag drog helt sonika hem det för att se hur dom hade löst det.

if LIVE:
SITE_URL = 'http://www.skarp_hemsida.se'
else:
SITE_URL = 'http://localhost:8000'

DJANGO_ROOT = os.path.dirname(os.path.realpath(django.__file__)).replace("\\", "/")
SITE_ROOT = os.path.dirname(os.path.realpath(__file__)).replace("\\", "/")
MEDIA_ROOT = SITE_ROOT + '/m/'
MEDIA_URL = SITE_URL + '/m/'
ADMIN_MEDIA_PREFIX = '/media/'

En alldeles utmärkt lösning som funkar live och lokalt. Nu var det bara att länka in stylesheetsen med "/m/css/xxx.css"

Andra problem som jag stötte på är att alltid glömma ":" efter class och for-loop deklarationer (class MyClass: resp. for i in ints:).
Att kopiera kod från andra dokument eller ifrån webben förstör verkligen tab-indentering och får Python att fräsa ur sig felmeddelanden.

Saker som jag verkligen avundar folk som sitter och jobbar med Django är template-systemet. Jag som kommer ifrån .NET med sina fula <% %> taggar och for/if-satser avundas verkligen {% %} syntaxen och alla hjälp-metoder som finns.

ActiveRecord, dvs databashantering, spara, querya etc är nåt som funkar out-of-the-box och inget man tänker över. Skönt att slippa behöva skriva kod för att få detta att funka.

PIL, Python Image Library, har jag jobbat en del med för att förminska bilder. Av det lilla jag jobbat med det har det varit helt underbart, man märker att utvecklarna bakom har tagit ett steg till och tänkt till hur vi som utnyttjar API:et vill använda det, inte hur man proppar det med fullt "low-level" funktioner som t.ex. .NET's System.Drawing.

Det har varit mycket lärorikt att sitta och jobba med ett helt annat språk ett tag, ett dynamiskt språk har verkligen sina fördelar men även nackdelar, men mycket av nackdelarna just nu är antagligen för att jag inte har 100% koll på Python.

Någon av er andra som testat ett par andra språk? Ruby har det ju varit mycket snack om men jag har inte riktigt gillat syntaxen. Kanske nåt funktionellt, F#, Lisp, Haskell? Skriv gärna en kommentar :)

Comments (0)

Skicka en kommentar