Creare un'App
In Django, un progetto è composto da una o piĂš app. Ogni app è un modulo Python autonomo che gestisce una funzionalitĂ specifica dellâapplicazione. Questa architettura modulare rende il codice organizzato, riutilizzabile e facile da testare.
Cosâè unâApp Django
Unâapp Django è un componente che svolge una funzione specifica. Ad esempio, un sito e-commerce potrebbe avere:
- Unâapp
prodottiper gestire il catalogo - Unâapp
ordiniper gestire gli acquisti - Unâapp
utentiper gestire i profili - Unâapp
blogper gli articoli
Ogni app può essere riutilizzata in progetti diversi.
Creare unâApp
Dalla directory del progetto, usa il comando startapp:
python manage.py startapp blog
Questo genera la seguente struttura:
blog/
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
migrations/
__init__.py
Struttura dei File dellâApp
Ogni file ha uno scopo preciso:
__init__.py: Rende la directory un pacchetto Python.admin.py: Configurazione del pannello di amministrazione per i modelli dellâapp.apps.py: Configurazione dellâapp (nome, etichetta, impostazioni).models.py: Definizione dei modelli del database.tests.py: Test unitari e di integrazione dellâapp.views.py: Logica delle views che gestiscono le richieste HTTP.migrations/: Directory che contiene le migrazioni del database generate automaticamente.
Registrare lâApp nel Progetto
Dopo aver creato lâapp, devi registrarla in INSTALLED_APPS nel file settings.py:
# miosito/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# App del progetto
'blog.apps.BlogConfig',
]
Puoi anche usare la forma abbreviata:
INSTALLED_APPS = [
# ...
'blog',
]
La forma completa con BlogConfig è preferibile perchÊ permette di sfruttare le configurazioni personalizzate in apps.py.
Il File apps.py
Il file apps.py contiene la classe di configurazione dellâapp:
from django.apps import AppConfig
class BlogConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'blog'
verbose_name = 'Gestione Blog'
Attributi utili della classe AppConfig:
name: Nome del pacchetto Python dellâapp (obbligatorio).verbose_name: Nome leggibile mostrato nel pannello admin.default_auto_field: Tipo di campo per le chiavi primarie auto-generate.
Puoi anche sovrascrivere il metodo ready() per eseguire codice allâavvio dellâapp:
class BlogConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'blog'
def ready(self):
import blog.signals # Registra i segnali all'avvio
Aggiungere File Comuni
Django genera solo i file essenziali. Per unâapp completa, aggiungi manualmente:
blog/
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
urls.py # Routing URL dell'app
forms.py # Form personalizzati
serializers.py # Per le API REST
signals.py # Segnali Django
migrations/
__init__.py
templates/
blog/ # Template specifici dell'app
lista.html
dettaglio.html
static/
blog/ # File statici dell'app
css/
js/
Creare il File urls.py dellâApp
Crea un file urls.py nellâapp per definire le URL specifiche:
# blog/urls.py
from django.urls import path
from . import views
app_name = 'blog'
urlpatterns = [
path('', views.lista_articoli, name='lista'),
path('<int:pk>/', views.dettaglio_articolo, name='dettaglio'),
]
Poi includi le URL dellâapp nel file urls.py del progetto:
# miosito/urls.py
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', include('blog.urls')),
]
Conclusione
Le app Django sono il mattone fondamentale per costruire applicazioni modulari e scalabili. Ogni app incapsula una funzionalità specifica con i propri modelli, views, template e URL. Registrare correttamente le app in INSTALLED_APPS e organizzare i file aggiuntivi secondo le convenzioni Django è essenziale per un progetto ben strutturato.