Django-Anwendungen: Alles, was Sie 2022 wissen müssen
Veröffentlicht: 2021-01-04Django ist eines der Top-Python-Frameworks, das von Fachleuten entwickelt wurde und pragmatisches Design und schnelle Entwicklung für Webentwickler fördert. Es ist schnell, sicher und ein Favorit unter Webentwicklern. Django verfügt über eine Registrierung von bereits installierten Anwendungen, die die Konfiguration speichert und bei der Bereitstellung von Selbstbeobachtung hilft. Es unterhält eine umfassende Liste der verfügbaren Modelle. Die Registrierung heißt Apps. Django-Anwendungen sind in „django.apps“ verfügbar.
>>> von django.apps Apps importieren
>>> apps.get_app_config('admin').verbose_name
'Verwaltung'
Inhaltsverzeichnis
Django-Projekte
Alle Django-Anwendungen können als Projekt bezeichnet werden. Es wird durch ein Einstellungsmodul definiert. Es enthält jedoch auch einige andere Dinge. Wenn Sie beispielsweise django-admin startproject mysite ausführen, erhalten Sie ein mysite-Projektverzeichnis. Diese enthält ein mysite-Python-Paket mit setting.py, urls.py, asgi.py und wsgi.py. Das Paket kann oft so erweitert werden, dass es CSS, Vorrichtungen und andere Vorlagen enthält, die keiner bestimmten Anwendung zugeordnet sind.
Das Stammverzeichnis des Projekts oder das mit manage.py enthält normalerweise alle Anwendungen des Projekts, die nicht separat installiert werden.

Django-Anwendungen
Anwendung bedeutet ein Paket von Python, das einige Funktionen hat. Es kann in mehreren Projekten wiederverwendet werden. Die Anwendungen können Kombinationen aus Ansichten, Modellen, Vorlagen-URLs, statischen Dateien usw. sein. Sie sind häufig in Projekten mit der Einstellung INSTALLED-APPS eingebunden . Es kann oft optional mit anderen Mechanismen wie URLconfs verbunden werden, was die MIDDLEWARE- Einstellung ist.
Lesen Sie: Django-Entwicklergehalt in Indien
Die Django-Anwendung ist ein Codesatz, der Interaktionen mit mehreren Teilen eines bestimmten Frameworks erstellt. Es hat kein Anwendungsobjekt. Manchmal muss Django möglicherweise mit bestimmten Anwendungen zur Selbstprüfung oder Konfiguration interagieren. Daher gibt es in AppConfig Metadaten für installierte Anwendungen. Ein Projektpaket kann auch als Anwendung betrachtet werden und es kann auch Modelle enthalten.
Konfigurieren von Django-Anwendungen
Wenn Sie eine Anwendung konfigurieren möchten, müssen Sie AppConfig ableiten und dann in INSTALLED_Apps eine gepunktete Linie hinzufügen. Wenn die gepunktete Linie angezeigt wird, beginnt Django mit der Suche nach der Variable default_app_config . Nach der Definition wird es zur AppConfig- Unterklasse für diese spezifische Anwendung. Wenn keine default_app_config erstellt wird, verwendet Django die AppConfig -Basisklasse .
Lesen Sie auch: Unterschied zwischen Full Stack und Mean Stack
Für Autoren von Django-Anwendungen
Angenommen, Sie entwickeln eine Plug-in-App für den Rock 'n' Roll. Dann können Sie einen Namen auf folgende Weise entwickeln:
# rock_n_roll/apps.py
aus django.apps importieren Sie AppConfig
Klasse RockNRollConfig(AppConfig):
name = 'rock_n_roll'
verbose_name = „Rock 'n' Roll“
Sie können es auch als AppConfig-Unterklasse laden mit:
# rock_n_roll/__init__.py
default_app_config = 'rock_n_roll.apps.RockNRollConfig'
Daher kann RockNRollConfig verwendet werden, wenn „rock_n_roll“ in den installierten Apps vorhanden ist. Es wird Ihnen helfen, die Funktionen von AppConfig zu nutzen, ohne dass Benutzer das Update in INSTALLED_APPS vornehmen müssen.
Für Benutzer der Anwendung
Angenommen, Sie verwenden die Rock 'n' Roll-Anwendung in einem Projekt namens Anthology. Nun, Sie möchten, dass es vorher als Jazz Manouche erscheint. Sie können also diesen Schritten folgen:
# anthology/apps.py
aus rock_n_roll.apps importiere RockNRollConfig
Klasse JazzManoucheConfig(RockNRollConfig):
verbose_name = „Jazz Manouche“
# anthology/settings.py
INSTALLED_APPS = [
'anthology.apps.JazzManoucheConfig',
# …
]
Klasse AppConfig
Metadaten für eine Anwendung werden in Anwendungskonfigurationsobjekten gespeichert. Einige dieser Attribute werden in AppConfig-Unterklassen konfiguriert und als schreibgeschützt oder von Django festgelegt.
Konfigurierbare Attribute
AppConfig.name
Pfad: django.contrib.admin
Es hilft bei der Definition der Anwendung, in der die Konfiguration angewendet wird. Es wird in AppConfig-Unterklassen festgelegt. Einzigartig in einem Django-Projekt.
AppConfig.label
Name: Administrator
Hilft beim Umbenennen einer Anwendung, insbesondere wenn zwei von ihnen widersprüchliche Bezeichnungen haben. Es wird standardmäßig zum letzten Bestandteil eines Namens. Muss ein gültiger Bezeichner von Python sein. Einzigartig in Django-Projekten.

AppConfig.verbose_name
Name: Verwaltung
Standardmäßig: label.title()
AppConfig.Pfad
Beispiel für ein Anwendungsverzeichnis: '/usr/lib/pythonX.Y/dist-packages/django/contrib/admin'
In vielen Fällen kann Django es automatisch erkennen und festlegen, aber Sie können das Klassenattribut explizit durch die AppConfig-Unterklasse überschreiben.
Schreibgeschützte Attribute
AppConfig.module
Beispiel für ein Stammmodul: <module 'django.contrib.admin' from 'django/contrib/admin/__init__.py'>
AppConfig.models_module
Beispiel für ein Modul mit Modellen: <module 'django.contrib.admin.models' from 'django/contrib/admin/models.py'>
Es kann auch None sein, wenn es keine Modelle enthält.
Methoden
AppConfig.get_models()
Es ist hilfreich, eine iterierbare Model-Klasse zur Anwendung zurückzugeben. Die App-Registrierung muss vollständig ausgefüllt sein.
AppConfig.get_model
Gibt das spezifische Modell ohne Berücksichtigung der Groß-/Kleinschreibung zurück: model_name. Modellname
Es hilft, einen LookupError auszulösen, wenn kein bestimmtes Modell vorhanden ist. Die App-Registrierung muss vollständig ausgefüllt sein.
AppConfig.ready()
Es kann hilfreich sein, die Methode zu überschreiben und somit Initialisierungsaufgaben wie das Registrieren von Signalen durchzuführen. Kann aufgerufen werden, sobald die Registrierung vollständig gefüllt ist. Sie können jedoch keine Modelle auf Modulebene importieren, auf denen Klassen von AppConfig definiert sind. Sie können sie jedoch in ready() importieren, das get_model() oder die import-Anweisung verwendet.
Als Apps verwendete Namespace-Pakete
Wenn ein Python-Paket nicht über __init__.py verfügt, werden sie als Namespace-Pakete bezeichnet. Sie können über mehrere Verzeichnisse und Speicherorte auf sys.path verteilt sein. Die Django-Anwendung benötigt ein zeichenbasiertes Dateisystem, in dem Django basierend auf der Konfiguration nach statischen Assets, Vorlagen usw. sucht. Daher kann die Django-Anwendung nur verwendet werden, wenn einer der folgenden Punkte zutrifft:
- Namespace-Paket hat einen einzigen Speicherort.
- Die AppConfig-Klasse, die zum Konfigurieren der Anwendung verwendet wird, hat ein Pfadklassenattribut.
Wenn keine der Bedingungen erfüllt ist, zeigt Django ImproperlyConfigured an.
Django-Anwendungsregistrierung
Bestimmte öffentliche APIs werden von der Anwendungsregistrierung bereitgestellt. Dies sind einige der Methoden, obwohl sie sich ändern können:
apps.bereit
Wenn das Boolesche Attribut auf True gesetzt ist und die Registrierung vollständig ausgefüllt ist und alle AppConfig.ready()-Methoden daher aufgerufen werden.
apps.get_app_configs()
Es wird eine Iterable von AppConfig-Instanzen zurückgeben.
apps.get_app_config(app_label)
Es wird eine AppConfig für die Anwendung zurückgegeben, die ein bestimmtes app_label hat. Wenn keine Anwendung vorhanden ist, wird ein LookupError ausgelöst.
apps.ist_installiert( Es wird überprüft, ob ein Name der angegebenen Anwendung in der aktuellen Registrierung vorhanden ist. app_name wird ein vollständiger Name der App sein, Beispiel: django.contrib.admin
apps.get_model( Es gibt das Modell mit dem angegebenen model_name und app_label zurück. Wenn keine Anwendung vorhanden ist, wird ein LookupError ausgelöst.
Initialisierungsprozess
Nun stellt sich also die Frage, wie man Django-Anwendungen lädt. Wenn Django gestartet wird, füllt django.setup() die Registrierung.
setup( set_prefix=True )
Django-Konfigurationen treten auf:
- Durch erstmaliges Laden der Einstellungen
- Protokollierung eingerichtet
- Wenn set_prefix wahr ist, wird das Präfix des URL-Revolverskripts zu FORCE_SCRIPT_NAME, falls definiert oder anderweitig.
- Die Anwendungsregistrierung wird initialisiert.
Automatischer Funktionsaufruf erfolgt:

- Wenn der HTTP-Server über eine WSGI-Unterstützung von Django läuft
- Wenn der Verwaltungsbefehl aufgerufen wird.
Fehlerbehebung
Einige häufige Probleme, mit denen man konfrontiert werden könnte, sind:
- AppRegistryNotReady: Beim Importieren einer Anwendungskonfiguration oder eines Modellmoduls wird Code ausgelöst, der nicht von der App-Registrierung abhängt. Wenn Sie Datenbankabfragen mit ORM ausführen, kann dieses Problem auftreten.
- ImportError: name kann nicht importiert werden … – Tritt auf, wenn Importsequenzen in einer Schleife enden. Sie können den Prozess eliminieren, indem Sie Abhängigkeiten zwischen Modellmodulen minimieren.
- Django.contrib.admin bewirkt eine automatische Erkennung von Admin-Modulen. Ändern Sie INSTALLED_APPS von django.contrib.admin in django.contrib.admin.apps.SimpleAdminConfig, um dies zu verhindern.
Hoffentlich können Sie jetzt Django-Anwendungen problemlos in Ihre Webentwicklung integrieren.
Holen Sie sich einen Softwareentwicklungskurs von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.
Fazit
Wenn Sie mehr über Django und andere Full-Stack-Entwicklersprachen und -Tools erfahren möchten, besuchen Sie das Executive PG-Programm in Full-Stack-Softwareentwicklung von upGrad & IIIT-B, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenge Schulungen bietet. Über 9 Projekte und Aufgaben, IIIT-B-Alumni-Status, praktische praktische Abschlussprojekte und Arbeitsunterstützung bei Top-Unternehmen.
