Denna uppgift bestod av att skapa en blogg med hjälp av ramverket Django. Följande krav fanns på funktionaliteten: Det ska gå att skapa nya blogginlägg via Djangos medföljande administrationsgränssnitt, allt innehåll i bloggen ska gå att nå via en gemensam index-sida (behöver inte vara direktlänkat) och det ska gå att kommentera enskilda inlägg.
Jag började med att följa instruktionsvideon för att installera de program jag behövde. Python 2.7 hade jag installerat sedan tidigare och behövde således bara installera Aptana och Django. Jag fortsatte sedan att följa instruktionsfilmerna och skapade ett projekt som jag döpte till django_project och importerade till Aptana. I filen settings.py ställde jag in databasen till sqlite3, ställde om språk och tidszon samt skapade en ny app. När jag sedan skulle starta utvecklingsservern fick jag ett felmeddelande i kommandoprompten "Errno 10013". Jag fick då hjälp i handledningsforumet där Peter tipsade mig att testa en annan port eftersom 8000 verkade vara upptagen med ett annat program. Jag angav då port 8008 istället och då fungerade det bra.
Både på föreläsningen om Django och i en av filmerna tog Simon upp MTV och visade en tydlig illustration av sambandet, jag valde att rita av den och ha med mig små anteckningar om de olika delarna under tiden som jag byggde bloggen, det underlättade för mig att förstå sambandet mellan de olika. Model kommunicerar med databasen, template tar hand om hur datan presenteras för användaren, i detta fall HTML. View hanterar förfrågningarna från användaren; antingen en sk. get-request, att hämta något ur databasen eller en post-request att lagra något i databasen.
I Views.py har jag importerat kommandot render från modulen shortcuts, klasserna BlogPost och BlogComment från models.py samt datetime. Här definerar jag två olika views, en blogIndex som hämtar alla BlogPosts samt BlogPost som returnerar en blogpost med ett specifikt id och dess tillhörande kommentarer. I min templatesmapp har jag skapat tre olika html-filer, en base som innehåller alla html-element som är gemensamma för samtliga sidor. Djangos syntax gör sidan dynamisk och med hjälp av exempelvis {{% block content %}} och {{% endblock %}} kan jag presentera det innehåll som är specifikt för de övriga sidornas content innanför de taggarna. De andra två html-sidorna är blog_post.html och index.html. I indexfilen har jag skrivit en forloop i blockcontent som skriver ut alla blogginlägg baklänges med titel, författarens namn och datum samt innehållet i inlägget. I blog_post är titeln dynamisk beroende på vilket inlägg som visas och förutom inlägget finns ett kommentarsformulär och inläggets kommentarer skrivs ut med hjälp av en forloop i bakvänd ordning, med nyast kommentar överst. I models.py har jag inporterat models från db och skapat två klasser. Den första klassen BlogPost ärver likt alla klasser i models från Djangos Model-klass, detta ger mig tillgång till de olika fälttyperna som finns i Django. Denna klass gör det möjligt att skapa inlägg med fält som datum och tid, rubrik, löpande text och författare. Den andra klassen gör det möjligt att kommentera inlägg i bloggen. Jag skapade en fil som heter admin.py för att kunna nå klassmodellerna från admingränssnittet. I urls.py har jag skapat url:er till indexsidan och blogpost-sidan.
När jag fått min dynamiska blogg att fungera stilsatte jag den med hjälp av css som jag sparade i min mapp static. när jag fått den att se ut som jag ville tyckte jag att något saknades och ville lägga in bilder i bloggens layout. Jag upptäckte snart att jag inte bara kunde lägga till dem "som vanligt" i min base.html. På Djangos dokumentationssida kunde jag läsa mig till hur jag skulle gå till väga. Jag sparade mina bilder i staticmappen, lade till static och djangos taggar i bildkällan och såg till att mina statiska filer laddas med hjälp av {{% load staticfiles %}}.
Jag valde att göra den här uppgiften eftersom jag tycker att Pythons användsningsområden kännts ganska diffusa ocg jag har haft svårt att se mig själv programmera med Python i framtiden. I kursen har vi lärt oss mycket och Javascript och vilka roliga saker man kan göra med hjälp av det. Därför tycker jag att uppgiften var nyttig och jag tycker att jag fick en inblick i vad man kan göra med Python och jag blev sugen på att lära mig mer.