Applicazioni Django: tutto ciò che devi sapere nel 2022
Pubblicato: 2021-01-04Django è uno dei migliori framework Python creati da professionisti che incoraggia la progettazione pragmatica e lo sviluppo rapido per gli sviluppatori web. È veloce, sicuro e uno dei preferiti dagli sviluppatori web. Django ha già installato un registro delle applicazioni che memorizza la configurazione e aiuta a fornire l'introspezione. Mantiene un elenco completo dei modelli disponibili. Il registro si chiama app. Le applicazioni Django sono disponibili in 'django.apps'
>>> da django.apps importa app
>>> apps.get_app_config('admin').verbose_name
'Amministrazione'
Sommario
Progetti Django
Qualsiasi applicazione Django può essere definita un progetto. È definito da un modulo delle impostazioni. Tuttavia, contiene anche molte altre cose. Ad esempio, se esegui django-admin startproject mysite, otterrai una directory del progetto mysite. Questo conterrà un pacchetto Python del mio sito con setting.py, urls.py, asgi.py e wsgi.py. Il pacchetto può spesso essere esteso in modo da includere CSS, fixture e altri modelli non associati ad alcuna applicazione specifica.
La directory principale del progetto o quella che ha manage.py di solito contiene tutte le applicazioni del progetto che non sono installate separatamente.

Applicazioni Django
Applicazione indica un pacchetto di Python che ha alcune funzionalità. Può essere riutilizzato in diversi progetti. Le applicazioni possono essere combinazioni di viste, modelli, URL di modelli, file statici, ecc. Sono spesso cablate in progetti con l'impostazione APP INSTALLATE . Spesso può essere cablato con altri meccanismi opzionalmente come URLconfs che è l' impostazione MIDDLEWARE .
Leggi: Stipendio per sviluppatori Django in India
L'applicazione Django è un set di codice che crea interazioni con diverse parti di un framework specifico. Non ha un oggetto Application. A volte, Django potrebbe dover interagire con determinate applicazioni per l'introspezione o la configurazione. Pertanto, in AppConfig sono presenti metadati per le applicazioni installate. Un pacchetto di progetto può anche essere considerato come un'applicazione e può avere anche dei modelli.
Configurazione delle applicazioni Django
Se vuoi configurare un'applicazione, devi sottoclassare AppConfig e quindi aggiungere una linea tratteggiata a quella in INSTALLED_Apps. Quando ottiene la linea tratteggiata, Django inizia a controllare la variabile default_app_config . Una volta definita, diventa la sottoclasse AppConfig per quella specifica applicazione. Se non viene creato alcun default_app_config , Django utilizzerà la classe AppConfig di base .
Leggi anche: Differenza tra stack completo e stack medio
Per gli autori di applicazioni Django
Supponiamo che tu stia sviluppando un'app collegabile "Rock 'n' roll". Quindi, puoi sviluppare un nome nel modo seguente:
# rock_n_roll/apps.py
da django.apps importa AppConfig
classe RockNRollConfig(AppConfig):
nome = 'rock_n_roll'
verbose_name = “Rock 'n' roll”
Sarai anche in grado di caricarlo come una sottoclasse AppConfig usando:
# rock_n_roll/__init__.py
default_app_config = 'rock_n_roll.apps.RockNRollConfig'
Pertanto, RockNRollConfig può essere utilizzato quando 'rock_n_roll' è presente nelle app installate. Ti aiuterà a utilizzare le funzionalità di AppConfig senza che gli utenti debbano eseguire l'aggiornamento in INSTALLED_APPS.
Per gli utenti dell'applicazione
Diciamo che stai usando l'applicazione Rock 'n' roll in un progetto chiamato antologia. Ora, vuoi che venga fuori come Jazz Manouche prima di allora. Quindi, puoi seguire questi passaggi:
# antologia/apps.py
da rock_n_roll.apps importa RockNRollConfig
classe JazzManoucheConfig(RockNRollConfig):
verbose_name = “Jazz Manouche”
# antologia/impostazioni.py
APP_INSTALLATE = [
'anthology.apps.JazzManoucheConfig',
# …
]
classe AppConfig
I metadati per un'applicazione vengono archiviati negli oggetti di configurazione dell'applicazione. Alcuni di questi attributi sono configurati nelle sottoclassi di AppConfig e sono impostati come di sola lettura o da Django.
Attributi configurabili
AppConfig.name
Percorso: django.contrib.admin
Aiuta a definire l'applicazione in cui viene applicata la configurazione. È impostato nelle sottoclassi di AppConfig. Unico in un progetto Django.
AppConfig.etichetta
Nome: amministratore

Aiuta a rietichettare un'applicazione soprattutto se due di esse hanno etichette in conflitto. Diventa l'ultimo componente di un nome per impostazione predefinita. Deve essere un identificatore valido di Python. Unico nei progetti Django.
AppConfig.nome_verboso
Nome: Amministrazione
Il valore predefinito è: label.title()
AppConfig.percorso
Esempio di directory dell'applicazione: '/usr/lib/pythonX.Y/dist-packages/django/contrib/admin'
In molti casi, Django può rilevarlo e impostarlo automaticamente, ma puoi sovrascrivere l'attributo class in modo esplicito tramite la sottoclasse AppConfig.
Attributi di sola lettura
AppConfig.module
Esempio di modulo radice: <module 'django.contrib.admin' da 'django/contrib/admin/__init__.py'>
AppConfig.models_module
Esempio di modulo con modelli: <modulo 'django.contrib.admin.models' da 'django/contrib/admin/models.py'>
Può anche essere Nessuno se non contiene modelli.
Metodi
AppConfig.get_models()
Aiuterà a restituire una classe Model iterabile per l'applicazione. Richiederà che il registro dell'app sia completamente popolato.
AppConfig.get_model
Restituisce il modello specifico senza distinzione tra maiuscole e minuscole: nome_modello. Nome del modello
Aiuta a generare un LookupError se non esiste un modello specifico. Richiederà che il registro dell'app sia completamente popolato.
AppConfig.ready()
Può aiutare a sovrascrivere il metodo e quindi eseguire attività di inizializzazione come la registrazione dei segnali. Può essere chiamato una volta che il registro è completamente popolato. Tuttavia, non è possibile importare modelli a livello di modulo in cui sono definite le classi di AppConfig. Puoi importarli, tuttavia, in ready(), che usa get_model() o import .
Pacchetti dello spazio dei nomi utilizzati come app
Quando un pacchetto Python non ha __init__.py, sono conosciuti come pacchetti dello spazio dei nomi. Possono essere distribuiti in diverse directory e posizioni su sys.path. L'applicazione Django avrà bisogno di un file system di base dei segni in cui Django in base alla configurazione cercherà risorse statiche, modelli, ecc. Quindi, l'applicazione Django può essere utilizzata solo se uno di questi è vero:
- Il pacchetto namespace ha un'unica posizione.
- La classe AppConfig utilizzata per la configurazione dell'applicazione ha un attributo di classe del percorso.
Se nessuna delle condizioni è soddisfatta, Django mostrerà ImproperlyConfigured.
Registro delle applicazioni Django
Alcune API pubbliche sono fornite dal registro dell'applicazione. Questi sono alcuni dei metodi, anche se possono cambiare:
app.ready
Quando l'attributo booleano è impostato su True e il registro è completamente popolato e tutti i metodi AppConfig.ready() vengono quindi chiamati.
apps.get_app_configs()
Restituirà un iterabile di istanze di AppConfig.
apps.get_app_config(app_label)
Restituirà un AppConfig per l'applicazione che ha una determinata app_label. Se non esiste alcuna applicazione, genererà un LookupError.
apps.is_installed( Verificherà se esiste un nome dell'applicazione specificata nel registro attuale. app_name sarà un nome completo dell'app, ad esempio: django.contrib.admin
apps.get_model( Restituirà il modello con il nome_modello e l'etichetta_app specificati. Se non esiste alcuna applicazione, genererà un LookupError.
Processo di inizializzazione
Quindi, ora la domanda è come caricare le applicazioni django. Quando Django viene avviato, django.setup() popolerà il registro.
setup( set_prefix=True )
Le configurazioni di Django si verificano:
- Al primo caricamento delle impostazioni
- Registrazione impostata
- Se set_prefix è true, il prefisso dello script revolver URL diventa FORCE_SCRIPT_NAME se definito o meno.
- Il registro dell'applicazione viene inizializzato.
Il richiamo automatico della funzione avviene:

- Quando il server HTTP è in esecuzione tramite un supporto WSGI di Django
- Quando viene richiamato il comando di gestione.
Risoluzione dei problemi
Alcuni problemi comuni che si potrebbero incontrare sono:
- AppRegistryNotReady: si verifica durante l'importazione di una configurazione dell'applicazione o di un modulo di modelli che attiva un codice che non dipende dal registro dell'app. Se si eseguono query di database con ORM, questo problema potrebbe verificarsi.
- ImportError: impossibile importare il nome… – Avviene quando le sequenze di importazione terminano in un ciclo. È possibile eliminare il processo riducendo al minimo le dipendenze tra i moduli dei modelli.
- Django.contrib.admin determina il rilevamento automatico dei moduli di amministrazione. Modifica INSTALLED_APPS da django.contrib.admin a django.contrib.admin.apps.SimpleAdminConfig per impedirlo.
Si spera che ora tu possa integrare facilmente le applicazioni Django nel tuo sviluppo web.
Ottieni il corso di sviluppo software dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.
Conclusione
Se sei interessato a saperne di più su Django e altri linguaggi e strumenti per sviluppatori full stack, dai un'occhiata al programma Executive PG di upGrad e IIIT-B in Full-stack Software Development, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa, Oltre 9 progetti e incarichi, stato di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.
