Creazione di modelli in Django: una guida passo passo (parte 1)

Building Models in Django: A Step-by-Step Guide (Part 1)

Table of Contents

    Quando ho iniziato a imparare Django, ricordo di essermi sentito sopraffatto dal gran numero di concetti (modelli, viste, template), era come cercare di bere da un idrante. Ma non appena ho capito come funzionano i modelli, il resto del framework ha iniziato a prendere forma. I modelli sono il fondamento di qualsiasi progetto Django e in questo tutorial voglio guidarti nella loro creazione, partendo dalle basi. Tratteremo tutto, dalla configurazione del tuo ambiente alla creazione di un modello Product funzionale. Alla fine, avrai una solida comprensione di come funzionano i modelli e di come usarli in modo efficace.

    Non iniziamo subito: procederemo passo dopo passo, in modo che nessun dettaglio resti inspiegato.

    Impostazione di Django: da zero

    Il primo passo in qualsiasi progetto Django è assicurarsi che il tuo ambiente sia impostato correttamente. Prima ancora di pensare ai modelli, dobbiamo preparare il nostro spazio di lavoro. Su Ubuntu, questo inizia assicurandoti di avere Python installato, insieme al suo gestore di pacchetti, pip. Puoi installare entrambi con un semplice comando:

     sudo apt update && sudo apt install python3 python3-pip

    Una volta fatto questo, conferma l'installazione eseguendo python3 --version e pip3 --version , che dovrebbe visualizzare le versioni installate di Python e pip. Questi strumenti sono essenziali per tutto ciò che faremo, quindi vale la pena di controllare due volte che funzionino.

    Ogni volta che inizio un nuovo progetto Django, prima imposto sempre un ambiente virtuale. Si tratta di un ambiente dedicato per le dipendenze del tuo progetto, che le mantiene isolate dall'installazione Python a livello di sistema. Consideralo come una bolla protettiva per il tuo progetto. Per crearne una, ti servirà il modulo venv , che è installato con Python per impostazione predefinita. Vai alla cartella del tuo progetto e crea un ambiente virtuale:

     python3 -m venv env

    Attivalo eseguendo:

     source env/bin/activate

    Noterai che il prompt del terminale cambia per includere (env) , indicandoti che l'ambiente virtuale è attivo.

    Con il nostro ambiente configurato, siamo pronti per installare Django stesso. Utilizzando pip, installalo con:

     pip install django

    Puoi controllare la versione per assicurarti che sia stata installata correttamente:

     python -m django --version

    Questo assicura che tutto sia aggiornato e pronto all'uso. Ora arriva la parte emozionante: avviare un nuovo progetto Django. Per questo tutorial, creeremo un progetto chiamato inventory_system . Esegui:

     django-admin startproject inventory_system .

    Il punto alla fine è fondamentale: dice a Django di creare il progetto nella directory corrente anziché in una cartella nidificata. Questo mantiene le cose ordinate e gestibili.

    Se dai un'occhiata, Django avrà creato diversi file e cartelle per te. C'è il file manage.py , che userai per interagire con il progetto, e una sottocartella chiamata come il tuo progetto che contiene file di configurazione come settings.py e urls.py . A questo punto, puoi già eseguire il server di sviluppo:

     python manage.py runserver

    Apri un browser, vai su http://127.0.0.1:8000 e vedrai la pagina di benvenuto di Django. È sempre un momento soddisfacente perché significa che tutto funziona come previsto.

    Creazione di un'app Django per i prodotti

    Un'app Django è un pezzo modulare del tuo progetto, che di solito rappresenta una funzionalità specifica. Per questo tutorial, creeremo un'app per gestire prodotti e recensioni. Per generare la struttura dell'app, esegui:

     python manage.py startapp products

    Una volta creata l'app, registrala nel tuo progetto. Apri settings.py e aggiungi 'products' , all'elenco INSTALLED_APPS :

     INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'products', # New app ]

    Questo passaggio dice a Django di includere l'app nel progetto. Con la nostra app a posto, siamo pronti per iniziare a costruire modelli.

    Introduzione al modello di prodotto

    I modelli in Django sono classi Python che dDefinisci la struttura delle tabelle del tuo database. Ogni attributo nel modello diventa una colonna e Django gestisce tutto il lavoro pesante di conversione di queste classi Python in istruzioni SQL effettive. Per il nostro esempio, inizieremo con un modello Product . Questo modello avrà campi per attributi comuni come nome del prodotto, descrizione, prezzo e stock. Inoltre, includeremo un campo slug per creare URL SEO-friendly, un BooleanField per contrassegnare se il prodotto è attivo e timestamp per quando il prodotto è stato creato e aggiornato.

    Ecco il codice per il modello Prodotto:

     from django.db import models from django.utils.text import slugify from django.urls import reverse class Product(models.Model): name = models.CharField(max_length=200) description = models.TextField() price = models.DecimalField(max_digits=10, decimal_places=2) stock = models.IntegerField() is_active = models.BooleanField(default=True) slug = models.SlugField(unique=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) release_date = models.DateField(null=True, blank=True) image = models.ImageField(upload_to='product_images/', null=True, blank=True) def __str__(self): return self.name def save(self, *args, **kwargs): if not self.slug: self.slug = slugify(self.name) super().save(*args, **kwargs) def get_absolute_url(self): return reverse('product_detail', kwargs={'slug': self.slug})

    Analizzandolo

    Il modello Product utilizza diversi tipi di campo per rappresentare diversi attributi di un prodotto. Ad esempio, il campo name è un CharField con una lunghezza massima di 200 caratteri, mentre il campo description è un TextField per testi più lunghi. Il campo price è un DecimalField , che ci consente di memorizzare valori monetari precisi specificando il numero totale di cifre ( max_digits=10 ) e il numero di cifre decimali ( decimal_places=2 ). Analogamente, stock è un IntegerField per rappresentare i conteggi di inventario e is_active è un BooleanField per indicare se il prodotto è attualmente disponibile.

    Il campo slug è particolarmente interessante. È uno SlugField , che viene utilizzato per memorizzare testo URL-friendly, spesso derivato dal nome del prodotto. Per garantire che ogni prodotto abbia uno slug univoco, impostiamo unique=True . Sovrascrivendo il metodo save , utilizziamo la funzione slugify di Django per generare automaticamente uno slug quando il prodotto viene salvato per la prima volta.

    Per tracciare i timestamp, abbiamo aggiunto i campi created_at e updated_at . Il campo created_at usa auto_now_add=True per impostare il timestamp quando il record viene creato per la prima volta, mentre updated_at usa auto_now=True per aggiornare il timestamp ogni volta che il record viene modificato. C'è anche un campo image per memorizzare le immagini dei prodotti. Questo richiede la libreria Pillow, che puoi installare con pip install pillow .

    Due metodi aggiuntivi migliorano l'usabilità di questo modello. Il metodo __str__ definisce come il prodotto apparirà nell'amministrazione di Django o quando verrà stampato. In questo caso, restituisce semplicemente il nome del prodotto. Il metodo get_absolute_url genera un URL per il prodotto, utilizzando il suo slug. Ciò mantiene centralizzata la logica dell'URL ed evita di codificare i percorsi in modo rigido altrove nel codice.


    Fare Migrazioni

    Per applicare questo modello al database, dobbiamo creare ed eseguire delle migrazioni. Ecco come Django traduce il nostro codice Python in modifiche allo schema del database. Per prima cosa, crea le migrazioni con:

     python manage.py makemigrations

    Quindi, applicali al database con:

     python manage.py migrate

    Se tutto ha funzionato, Django avrà creato una tabella products_product nel tuo database. Il tuo modello Product è ora attivo e pronto all'uso!


    Conclusione Parte 1

    Finora, noiabbiamo impostato Django, creato un progetto e un'app e costruito un modello Product funzionale. Nella parte successiva, creeremo un modello Review , stabiliremo relazioni tra i modelli e ci immergeremo nell'interrogazione del database con l'ORM di Django. Se hai seguito, prenditi del tempo per esplorare il tuo nuovo modello: esegui il server di sviluppo, sperimenta con l'amministratore di Django e guardalo in azione. Resta sintonizzato per la parte 2!

    Published: 1 month, 2 weeks ago.