Pro Django
Author: Marty Alchin
Review created: 2014-06-29
Pro Django är är en bok som riktar sig till den vane Django-användaren. Meningen är att man skall kunna så mycket om Django och Python så att man klarar sig utan beskrivningar av grundläggande koncept. Bokens vill lära ut hur man kan utöka Django med egen kod för att på så sätt implementera den funktionalitet man behöver.
Boken börjar lite allmänt med att gå igenom lite om filosofin bakom Django samt kortfattat beskriva de viktigaste begreppen (models, views, templates, URL configuration). I kapitel två forsätter den med att dyka djupt in i några av de Python-features som ligger till grund för Django nämligen hur Python skapar klasser samt hur metaklasser fungerar. Kapitlet innehåller även beskrivningar av hur decorators och descriptors fungerar samt lite om andra vanliga Python-konstruktioner som t.ex. docstrings och default-värden på parametrar.
I kapitel tre återvänder boken till att behandla Django och då mer specifikt Django-modeller. Man får lära sig vilka options man kan sätta på modellklasser, vilka options man kan sätta på modellfält (model fields) samt hur man kan subklassa modeller och vilka metoder man då har möjlighet att överrida och/eller använda. Så långt innehåller kapitlet väldigt mycket listningar och är nästan mer av referenskaraktär. Kapitlet avslutas dock med ett avsnitt som heter "Applied Techniques" i vilket ett mer praktiskt exempel gås igenom: hur en modellfältklass som kan innehålla ett serializerat (pickeld) python-objekt.
I de nästkommande kapitlen behandlas Views, Forms och Templates och dessa kapitel är uppbyggda på samma sätt: mycket listningar av API-metoder i börjar och ett "Applied Techniques"-avsnitt i slutet som ger ett eller fler exempel på hur man kan utöka systemet genom att ärva från en eller flera av de Django-klasser som kapitlet behandlar.
Nästa kapitel behandlar hur Django hanterar HTTP-requests och responses. Man lär sig hur man kan skriva så kallade "middleware-klasser", dvs klasser som anropas när ett request kommer in och/eller när ett svar skall skickas tillbaka, och plugga in dessa i ramverket. De kan sägas vara ett slags motsvarighet till servlet-filter i Java-världen.
Kapitlet därefter beskriver hur man kan utvidga eller ersätta de delar av Django som till exempel sköter om åtkomsten till database, autentisering, uppladdning av filer, laddande av templates mm. Sådana delar kallas för "backends" och det verkar som om man kan anpassa nästan varje del av Django genom att byta ut en eller flera sådana.
Boken fortsätter därefter med ett kapitel om gemensamma verktyg. I det beskrivs bland annat exceptions som används i Django, utility-metoder och utily-datastrukturer samt hur signaler kan skickas mellan olika delar i en applikation.
De två avslutande kapitlen i boken behandlar hur en site kan byggas ihop av olika applikationer samt hur ett API för att returnera modellobjekt i JSON-format kan konstrueras.
Vad är då mina intryck av boken? Till att börja med skall det sägas att den var på tok för svår för mig. Jag trodde att jag tillhörde målgruppen för boken i och med att jag skrivit ihop en site (om än liten) med Django samt hållt på en hel det med Pyhton, men det visade sig att det inte var tillräckligt. För att få nytta av boken tror jag dels det är viktigt att ha jobbat mycket med Django samt ha ett problem som inte går att lösa genom att bara använda Django utan som kräver att man utökar ramverket. I sådana fall så är boken säkert alldeles utmärkt. Mitt problem var att jag inte arbetat tillräckligt mycket med Django samt att jag inte hade ett konkret problem jag ville lösa utan bara ville lära mig mer om Django i största allmänhet. Detta i kombination med att boken, som nämnts ovan, ofta innehåller långa avsnitt med upprapningar av API-metoder gjorde att det var svårt att ta sig igenom den. Dessutom är jag inte förtjust i bokens format. Sidorna är ganska breda, har små marginaler och är tämligen fullpackade av text.
Det som gav mig mest med boken var egentligen beskrivningen av klasser och metaklasser i Python i kapitel två. Lite tråkigt i och med att boken handlar om Django och inte Python i allmänhet.
Angående betyg så skulle jag egentligen vilja sätta ett klart mycket lägre betyg än vad jag gör på grund av att boken inte gav mig så mycket, men med tanke på att den antagligen skulle vara bra mycket bättre för en person som tillhör bokens faktiska målgrupp får det ändå bli ett betyg i mitten av skalan.
Betyg 3 av 5.