Un semplice blog con Django - parte 1

Primo articolo di questa serie dedicata all'introspezione e in particolare alla realizzazione di questo blog da zero utilizzando Django.



Quando siamo di fronte alla realizzazione da zero di una applicazione web il primo passo è quello di definire quali sono i dati che occuperanno il flusso informativo: in parole più povere si tratta di iniziare lo sviluppo definendo quali sono i modelli che saranno gestiti dall'applicazione.
L'applicazione che andremo a realizzare è abbastanza semplice e non presenta particolarità dal punto di vista della complessità dei dati. Escludendo il concetto di commento che merita un discorso a se, soprattutto in Django, i modelli necessari sono principalmente 2: il post e la categoria.
Il più semplice è senza dubbio la categoria. Ciascuna di essere presenta infatti, tra le proprietà base, solo il nome e lo slug, da usare per gli url user-friendly (o si dovrebbe dire google-friendly??). Oltre a questi attributi ciascuna categoria presenta una relazione uno a molti con un altro oggetto della stessa classe: questo ci permette di creare una gerarchia di categorie come è possibile osservare nel menu sulla destra (per esempio la categoria JEE è "figlia" della categoria "Java"). Una modellazione di questo tipo è facilmente implementabile in django:

class Category(models.Model):
    name = models.CharField(max_length=50)
    slug = models.SlugField(prepopulate_from=["name"])
    parent = models.ForeignKey("Category", null=True, blank=True)

Il post non è da meno come semplicità. Esso presenta il titolo, la data di creazione, lo slug, l'abstract e il testo vero e proprio. Anche in questo caso è presente una relazione uno a molti: ciascun post infatti appartiene ad una determinata categoria. Vediamo nel dettaglio il codice:

class Post(models.Model):
    title = models.CharField(max_length=100)
    date = models.DateField()
    slug = models.SlugField(prepopulate_from=["title"])
    abstract = models.TextField()
    text = models.TextField()
    category = models.ForeignKey(Category)

Uno degli aspetti curiosi di Django che è emerso da questi due frammenti di codice riguarda la definizione delle chiavi esterne. Nel caso della relazione gerarchica presente nella categoria abbiamo inserito il nome dell'oggetto di riferimento tra doppi apici mentre così non è stato nel caso del post. La spiegazione è banale: nel primo caso non era possibile riferirsi direttamente all'oggetto Category in quanto non ancora definito.
Come detto in precedenza, i commenti non rientrano nei modelli definiti all'interno dell'applicazione. Questo perchè Django presenta al suo interno un piccolo framework per la gestione dei commenti in qualsiasi tipo di applicazione. Di questo argomento tratteremo in seguito, così come per la definizione delle viste.

Post: