00
:
00
:
00
:
00
•Corso SEO AI - Usa SEOEMAIL al checkout per il 30% di sconto

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 prodotti per gestire il catalogo
  • Un’app ordini per gestire gli acquisti
  • Un’app utenti per gestire i profili
  • Un’app blog per 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.