Django Framework

In diesem Kapitel werden wir ausführlich auf das Django Framework eingehen.

Django ist ein MVT-Webframework, mit dem Webanwendungen erstellt werden. Das riesige Django-Webframework enthält so viele „Batterien“, dass Entwickler oft erstaunt sind, wie alles zusammenarbeitet. Das Prinzip beim Hinzufügen so vieler Batterien besteht darin, gemeinsame Webfunktionen im Framework selbst zu haben, anstatt diese als separate Bibliothek hinzuzufügen.

Einer der Hauptgründe für die Popularität des Django-Frameworks ist die riesige Django-Community. Die Community ist so groß, dass eine separate Website eingerichtet wurde, auf der Entwickler aus allen Bereichen Pakete von Drittanbietern entwickelten, darunter Authentifizierung, Autorisierung, vollwertige CMS-Systeme mit Django-Unterstützung, E-Commerce-Add-Ons usw. Es besteht eine hohe Wahrscheinlichkeit, dass das, was Sie entwickeln möchten, bereits von jemandem entwickelt wurde, und Sie müssen dies nur in Ihr Projekt einbeziehen.

Warum sollten Sie Django verwenden?

Django ist so konzipiert, dass Entwickler ermutigt werden, Websites schnell, sauber und mit praktischem Design zu entwickeln. Djangos praktischer Ansatz, Dinge zu erledigen, ist dort, wo er sich von der Masse abhebt.

Wenn Sie vorhaben, eine hochgradig anpassbare App wie eine Social-Media-Website zu erstellen, ist Django eines der besten Frameworks, die Sie in Betracht ziehen sollten. Die Stärke von Django liegt in der Interaktion zwischen Benutzern oder in der Fähigkeit, verschiedene Medientypen gemeinsam zu nutzen. Einer der großen Vorteile von Django ist die Möglichkeit, großen Community-basierten Support zu nutzen, der Ihnen hochgradig anpassbare Plugins von Drittanbietern zur Verwendung in Ihren Anwendungen bietet.

Im Folgenden sind die zehn wichtigsten Gründe aufgeführt, warum Sie sich für Django für die Webentwicklung entschieden haben:

Python

Python ist aufgrund seiner einfachen Sprachkonstruktionen, Flussstruktur und einfachen Syntax wohl eine der am einfachsten zu erlernenden Programmiersprachen. Es ist vielseitig und führt Websites, Desktop-Anwendungen und mobile Anwendungen aus, die in viele Geräte eingebettet sind, und wird in anderen Anwendungen als beliebte Skriptsprache verwendet.

Batterien enthalten

Django wird mit allgemeinen Bibliotheken geliefert, die für die Erstellung gemeinsamer Funktionen wie URL-Routing, Authentifizierung, einem objektrelationalen Mapper (ORM), einem Templating-System und DB-Schema-Migrationen unerlässlich sind.

Eingebauter Admin

Django verfügt über eine integrierte Verwaltungsoberfläche, mit der Sie Ihre Modelle, Benutzer- / Gruppenberechtigungen verwalten und Benutzer verwalten können. Mit der vorhandenen Modellschnittstelle ist kein separates Datenbankverwaltungsprogramm für alle außer erweiterten Datenbankfunktionen erforderlich.

Stört dich nicht

Durch das Erstellen einer Django-Anwendung werden keine Boilerplate und keine unnötigen Funktionen hinzugefügt. Es gibt keine obligatorischen Importe, Bibliotheken von Drittanbietern und keine XML-Konfigurationsdateien.

Skalierbar

Django basiert auf dem MVC-Entwurfsmuster. Dies bedeutet, dass alle Entitäten wie db (Datenbank), Back-End- und Front-End-Code einzelne Entitäten sind. Mit Django können wir Code von den statischen Medien trennen, einschließlich Bildern, Dateien, CSS und JavaScript, aus denen Ihre Website besteht.

Django unterstützt eine vollständige Liste von Bibliotheken von Drittanbietern für Webserver, Caching, Leistungsmanagement, Clustering und Balancing. Einer der Vorteile von Django ist die Unterstützung wichtiger E-Mail- und Messaging-Anwendungen und -Dienste wie ReST und OAuth.

Schlacht getestet

Django wurde 2005 zum ersten Mal als Open-Source-Unternehmen gegründet. Nach 12 Jahren Wachstum betreibt Django nun nicht nur Websites für Nachrichtenveröffentlichungen, sondern auch alle oder einen Teil eines großen globalen Unternehmens wie Pinterest, Instagram, Disqus, Bitbucket, EventBrite und Zapier. Dies macht es zu einem robusten und zuverlässigen Webframework.

Riesige Paketunterstützung

Aufgrund der großen Community-Unterstützung und des riesigen Entwicklernetzwerks besteht eine hohe Wahrscheinlichkeit, dass alles, was Sie beabsichtigen, zuvor getan wurde. Eine große internationale Entwicklergemeinschaft trägt zur Community bei, indem sie ihre Projekte als Open-Source-Pakete veröffentlicht.

Ein solches Repository dieser Projekte ist die Django Package-Site. Derzeit sind in Django-Paketen über 3400 plus wiederverwendbare Django-Apps, Websites und Tools aufgeführt, die in unseren Django-Projekten verwendet werden können.

Aktiv entwickelt

Eines der größten Risiken im Zusammenhang mit Open Source-Projekten ist die Nachhaltigkeit. Wir können nicht sicher sein, ob es lange dauert.

Bei Django besteht kein solches Risiko, da es 12 Jahre alt ist. Die konsistenten Releases, neueren / besseren Versionen und die aktive Community wachsen täglich mit einem großen Kernteam freiwilliger Mitarbeiter, die die Codebasis täglich pflegen und verbessern.

Stabile Releases

Open-Source-Softwareprojekte wie Django sind in vielen Fällen aktiv entwickelt und sicherer als konkurrierende proprietäre Software, da viele Entwickler sie täglich entwickeln und testen. Der Nachteil eines Open-Source-Softwareprojekts ist jedoch das Fehlen einer stabilen Codebasis für eine wirtschaftlich tragfähige Entwicklung.

In Django haben wir LTS-Versionen (Long Term Support) der Software und einen definierten Release-Prozess, wie im folgenden Bild gezeigt.

Erstklassige Dokumentation

Von der ersten Version an haben die Django-Entwickler dafür gesorgt, dass ausreichend umfassende Dokumente verfügbar sind und die Tutorials leicht verständlich sind.

Wer benutzt Django?

Aufgrund der einzigartigen Stärke des Django gibt es mehrere beliebte Websites, die mit Python auf dem Django-Framework erstellt werden. Im Folgenden sind einige der wichtigsten Standorte aufgeführt, die ganz oder teilweise auf Django basieren.

Disqus

Es ist eine der weltweit am meisten bevorzugten Websites zum Hosten von Blog-Kommentaren. Die Integration in die gängigsten CMS (Content Management Systeme) wie WordPress und viele andere über Disqus ist einfach. Mit einer Nutzerbasis von über 50 Millionen ist Django in der Lage, die Websitebesitzer zufrieden zu stellen, um ihre Communitys zu erreichen.

Die Zwiebel

Die Onion-Website, die einen Online-Veranstaltungsort für ihre satirische Zeitung bietet, bietet Django den Rahmen dafür.

Bit Bucket

Bitbucket ist wie GitHub, ein Versionskontroll-Repository-Hosting-Service. Der einzige Unterschied zwischen Bitbucket und GitHub besteht darin, dass Bitbucket Quecksilber-Repositorys hostet, während GitHub Git-Repositorys hostet. Da Millionen von Benutzern mit Bitbucket verbunden sind und alle von Bitbucket bereitgestellten Dienste (wie das Erstellen eines Repos, das Verschieben Ihres Codes, das Hinzufügen von Mitarbeitern, Commits, das Abrufen von Anforderungen usw.) stabil sein müssen. Django ist für den Betrieb der Bitbucket-Site verantwortlich.

Instagram

Instagram ist eine Social-Networking-App, die speziell für diejenigen entwickelt wurde, die gerne Fotos und Videos an alle ihre Freunde weitergeben. Derzeit gibt es viele Prominente auf Instagram, um näher an ihren Fans zu bleiben. Das Django-Framework führt auch Instagram aus.

Mozilla Firefox

Der zweithäufigste Browser der Welt nach Google Chrome ist der Mozilla-Browser. Jetzt wird die Hilfeseite von Mozilla mit dem Django-Framework erstellt.

Pinterest

Millionen von Nutzern auf der ganzen Welt entdecken ihre neuen Ideen und Inspirationen von Pinterest. Pinterest verwendet das Django-Framework (vorgenommene Änderung gemäß den Anforderungen), um es auszuführen.

NASA

Auf der offiziellen Website der National Aeronautics and Space Administration können Millionen von Nutzern die Nachrichten, Bilder, Videos und Podcasts der Premiere-Agentur besuchen und ansehen. Django entwickelt einige spezifische Teile der offiziellen NASA-Website.

Die Washington Post

Wenn es eine einflussreiche Zeitung auf der Welt gibt, ist es sicherlich die Washington Post. Die Website der Washington Post ist eine äußerst beliebte Online-Nachrichtenquelle, die ihre Tageszeitung begleitet. Die enorme Menge an Ansichten und Datenverkehr wurde vom Django-Webframework problemlos verarbeitet.

Reddit Geschenke

Die äußerst beliebte Reddit-Website hat eine anonyme Online-Plattform für den Austausch von Geschenken und Meetups namens Reddit Gifts gestartet. Die Website verbindet Benutzer aus der ganzen Welt und erleichtert den Austausch von Geschenken zwischen ihnen. Das Django-Webframework unterstützt seine Funktionen.

Prezi

Prezi ist eine Cloud-basierte Alternative zu Microsoft PowerPoint, die auf dem Django-Framework basiert. Die Site bietet eine virtuelle Leinwand, die bearbeitet und vergrößert und verkleinert werden kann. Dies bietet die gesamte Ansicht der Präsentation und nicht einzelne Folien.

Installieren und Erstellen eines Django-Projekts und einer App

Vor der Installation von Django müssen wir sicherstellen, dass Python installiert ist. Angenommen, Sie verwenden virtualenv, sollte eine einfache Pip-Installation von Django ausreichen.

Installation der virtuellen Umgebung und von Django

Im Folgenden wird beschrieben, wie Sie die virtuelle Umgebung und Django in Ihrer Windows-Umgebung installieren.

Geben Sie den folgenden Code ein, um zu überprüfen, ob der Django ordnungsgemäß installiert ist.

Django-Projekt erstellen

Sobald die Installation abgeschlossen ist, müssen wir ein Django-Projekt erstellen.

Wenn Sie den folgenden Befehl auf Ihrem Windows-Computer ausführen, wird das folgende Django-Projekt erstellt:

django-admin startproject my_project_name

Wenn Sie dir eingeben, werden eine neue Datei und ein neues Verzeichnis angezeigt, wie oben gezeigt.

manage.py- manage.py ist eine befehlszeilenausführbare Python-Datei, die nur ein Wrapper um django-admin ist. Es hilft uns bei der Verwaltung unseres Projekts, das auch in seinem Namen enthalten ist.

Damit wurde ein Verzeichnis mit dem Namen erstellt. myFirstDjangoProjectin myFirstDjangoProject, das den Konfigurationsstamm für unser Projekt darstellt. Lassen Sie uns viel tiefer in das Thema eintauchen.

Django konfigurieren

Wenn Sie das myFirstDjangoProject-Verzeichnis als "Konfigurationsstamm" bezeichnen, bedeutet dies, dass dieses Verzeichnis die Dateien enthält, die für die allgemeine Konfiguration unseres Django-Projekts erforderlich sind. Nahezu alles außerhalb dieses Verzeichnisses konzentriert sich ausschließlich auf die „Geschäftslogik“, die mit den Modellen, Ansichten, Routen usw. des Projekts verbunden ist. Alle Punkte, die das Projekt miteinander verbinden, führen hierher.

  • __init__.py - Dies ist leer und ändert das Verzeichnis in ein importierbares Python-Paket.

  • settings.py - Wie der Name schon sagt, werden hier die meisten Konfigurationselemente festgelegt.

  • urls.py - Die URLs werden mit urls.py festgelegt. Damit müssen wir nicht jede URL für das Projekt explizit in diese Datei schreiben. Wir müssen Django jedoch mitteilen, wo die URLs deklariert wurden (dh wir müssen andere URLs in urls.py verknüpfen).

  • Wsgi.py - Dies dient zur Unterstützung der Anwendung in der Produktion und ähnelt anderen Anwendungen wie Flask, Tornado, Pyramid, die ein App-Objekt verfügbar machen.

Einstellungen vornehmen

Ein Blick in settings.py zeigt die beachtliche Größe - und dies sind nur die Standardeinstellungen. Andere Dinge, die wir beachten müssen, sind die statischen Dateien, Datenbanken, Mediendateien, die Cloud-Integration oder andere Dutzende von Möglichkeiten, wie ein Django-Projekt konfiguriert werden kann. Lassen Sie uns einige Punkte verstehen, die in der Datei settings.py erwähnt werden -

  • BASE_DIR- Dies ist hilfreich beim Auffinden von Dateien. In der Datei settings.py legt der Parameter BASE_DIR den absoluten Pfad zum Basisverzeichnis fest.

  • SECRET_KEY- Es wird zur Herstellung von Hashes verwendet. Im Allgemeinen haben wir secret_key für Cookies, Sitzungen, CSF-Schutz und Authentifizierungstoken verwendet.

  • DEBUG - Wir können festlegen, dass das Projekt entweder im Entwicklungs- oder im Produktionsmodus ausgeführt wird.

  • ALLOWED_HOSTS- Wir stellen die Liste der Hostnamen bereit, über die unsere Anwendung bereitgestellt wird. Im Entwicklungsmodus ist die Einstellung optional. In der Produktionsmaschine müssen wir jedoch unser Django-Projekt festlegen.

  • INSTALLED_APPS- Dies ist die Liste der Django-Apps, die derzeit in unserem Django-Projekt installiert sind und ausgeführt werden. Der integrierte Django bietet sechs installierte Apps wie folgt:

    • 'django.contrib.admin'

    • 'django.contrib.auth'

    • django.contrib.

    • django.contrib.sessions

    • django.contrib.messages

    • django.contrib.staticfiles

  • MIDDLEWARE- Es hilft unserem Django-Projekt zu laufen. Es ist eine Python-Klasse, die sich in die Django-Anforderungs- / Antwortverarbeitung einfügt.

  • TEMPLATES- Es definiert, wie das Dokument im Frontend angezeigt werden soll. Django-Vorlagen werden zum Erstellen eines beliebigen textbasierten Formats verwendet.

  • WSGI_APPLICATION- Jeder von uns eingerichtete Server muss wissen, wo sich die WSGI-Datei befindet. Wenn Sie einen externen Server verwenden, wird dieser in seinen eigenen Einstellungen angezeigt. Standardmäßig zeigt es auf Objekte in wsgi.py.

  • DATABASES- Es werden die Datenbanken festgelegt, auf die unser Django-Projekt derzeit zugreift. Es ist obligatorisch, die Standarddatenbank festzulegen. Wenn wir die Datenbank unserer Wahl festlegen, müssen wir einige Dinge erwähnen, die mit der Datenbank zusammenhängen, wie z. B. HOST, USER, PASSWORD, PORT, Datenbankname und den entsprechenden ENGINE.

  • STATIC_URL- Dies ist die URL, die verwendet wird, wenn auf statische Dateien in STATIC_ROOT verwiesen wird. Standardmäßig ist es Keine.

Möglicherweise müssen wir jedoch einen Pfad für statische Dateien hinzufügen. Gehen Sie zum Ende der Datei und fügen Sie direkt unter dem Eintrag STATIC_URL einen neuen hinzu, der STATIC_ROOT heißt (siehe unten).

myFirstDjangoProject/settings.py

STATIC_URL = '/ static /'

STATIC_ROOT = os.path.join (BASE_DIR, 'statisch')

Einrichten einer Datenbank

Es gibt viele verschiedene Datenbanksoftware, die das Datum für Ihre Site speichern können. Wir verwenden die Standardeinstellung sqlite3.

Dies ist bereits im unten angegebenen Teil von Ihnen eingerichtet myFirstDjangoProject/settings.py - -

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.sqlite3',
      'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
   }
}

Um eine Datenbank für unser Blog zu erstellen, führen Sie Folgendes in der Konsole aus: python manage.py migrate (Wir müssen uns im Verzeichnis myFirstDjangoProject befinden, das die Datei manage.py enthält.

Sie erhalten die folgende Ausgabe, wenn alles gut geht -

Starten des Webservers

Sie müssen sich in dem Verzeichnis befinden, das die Datei manage.py enthält. In der Konsole können wir den Webserver starten, indem wir python manage.py runserver wie folgt ausführen:

Jetzt müssen Sie nur noch überprüfen, ob Ihre Website ausgeführt wird. Öffnen Sie Ihren Browser (Firefox, Chrome, Safari, Internet Explorer oder was auch immer Sie verwenden) und geben Sie diese Adresse ein -

http://127.0.0.1:8000/

oder

http://localhost:8000/ # Da unser Webserver nur auf unserem lokalen Computer ausgeführt wird.

Herzliche Glückwünsche! Sie haben gerade Ihre erste Website erstellt und auf einem Webserver ausgeführt!

Während der Webserver ausgeführt wird, wird keine neue Eingabeaufforderung zur Eingabe zusätzlicher Befehle angezeigt. Das Terminal akzeptiert den nächsten Text, führt jedoch keine neuen Befehle aus. Dies liegt daran, dass der Webserver kontinuierlich ausgeführt wird, um eingehende Anforderungen abzuhören.

Django Modelle

Wir versuchen, ein Django-Modell zu erstellen, in dem alle Beiträge in unserem Blog gespeichert werden. Aber um sicherzustellen, dass es funktioniert, müssen wir etwas über Objekte lernen.

Objekte

Objekte ist eine Sammlung von Eigenschaften und Aktionen. Lassen Sie uns dies anhand eines Beispiels verstehen. Angenommen, wir möchten eine Katze modellieren, dann erstellen wir ein Objekt namens Katze, das Eigenschaften wie Farbe, Alter, Stimmung (gut / schlecht / schläfrig) und Besitzer aufweist.

Dann hat die Katze einige Aktionen: Schnurren, Kratzen oder Füttern.

Cat 
-------- 
color 
age 
mood 
owner 
purr() 
scratch() 
feed(cat_food) 
CatFood 
-------- 
taste

Im Grunde versuchen wir also, reale Dinge im Code mit Eigenschaften (als Objekteigenschaften bezeichnet) und Aktionen (als Methoden bezeichnet) zu beschreiben.

Während wir ein Blog erstellen, benötigen wir Textinhalte und einen Titel. Es ist auch erforderlich, den Namen des Autors, das Erstellungsdatum und das Veröffentlichungsdatum anzugeben.

Unser Blog wird also die folgenden Objekte haben -

Post 
-------- 
title 
text 
author 
created_date 
published_date

Außerdem benötigen wir eine Methode, mit der dieser Beitrag veröffentlicht wird. Da wir jetzt wissen, was ein Objekt ist, können wir ein Django-Modell für unseren Blog-Beitrag erstellen.

Ein Modell ist eine spezielle Art von Objekt in Django und wird in der Datenbank gespeichert. Wir werden unsere Daten in der SQLite-Datenbank speichern.

Eine Anwendung erstellen

Um alles klar zu halten, erstellen wir innerhalb unseres Projekts eine separate Anwendung. Im Folgenden versuchen wir, eine Blog-Webanwendung zu erstellen, indem wir den unten genannten einfachen Befehl ausführen.

Jetzt werden wir feststellen, dass ein neues myBlog-Verzeichnis erstellt wird, das jetzt eine Reihe von Dateien enthält. Die Verzeichnisse und Dateien in unserem Projekt sollten wie folgt aussehen:

Nach dem Erstellen einer Anwendung müssen wir Django auch anweisen, sie zu verwenden. Das machen wir in der Datei myFirstDjangoProject / settings.py.

INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'myBlog',
]

Erstellen eines Blogpost-Modells

In dem myBlog/models.py Datei definieren wir alle Objekte namens Modelle - dies ist ein Ort, an dem wir unseren Blog-Beitrag definieren werden.

Öffnen wir myBlog / models.py, entfernen Sie alles daraus und schreiben Sie den Code wie folgt:

Zunächst importieren wir einige Funktionen aus anderen Dateien, indem wir sie aufrufen oder importieren. Anstatt die gleichen Dinge in jede Datei zu kopieren und einzufügen, können wir damit einige Teile einfügenfrom and import.

class Post(models.Model) - Diese Linie definiert unser Modell (es ist ein Objekt).

  • Klasse ist ein spezielles Schlüsselwort, das angibt, dass wir ein Objekt definieren.

  • Post ist der Name unseres Modells. Beginnen Sie einen Klassennamen immer mit einem Großbuchstaben.

  • models.Model bedeutet, dass der Beitrag ein Django-Modell ist, sodass Django weiß, dass er in der Datenbank gespeichert werden sollte.

Lassen Sie uns nun die oben definierten Eigenschaften diskutieren: Titel, Text, Erstellungsdatum, Veröffentlichungsdatum und Autor. Dazu müssen wir den Typ jedes Feldes definieren.

  • models.CharField - So definieren Sie Text mit einer begrenzten Anzahl von Zeichen.

  • Models.TextField - Dies ist für Langtext ohne Einschränkung.

  • Models.DateTimeField - Dies ist für Datum und Uhrzeit.

  • Models.ForeignKey - Dies ist ein Link zu einem anderen Modell.

Wir definieren eine Funktion / Methode mit def und veröffentlichen ist der Name der Methode.

Methoden geben oft etwas zurück. Wenn wir hier __str __ () aufrufen, erhalten wir einen Text (String) mit einem Post-Titel.

Erstellen von Tabellen für Modelle in Ihrer Datenbank

Der letzte Schritt ist das Hinzufügen eines neuen Modells zu unserer Datenbank. Zuerst müssen wir Django verstehen lassen, dass wir einige Änderungen an unserem Modell vorgenommen haben. Lassen Sie uns dasselbe in unserem Konsolenfenster mit Befehl tunpython manage.py make migrations myBlog wie unten gezeigt -

Anschließend bereitet Django eine Migrationsdatei vor, die wir nun auf unsere Datenbank anwenden müssen. In unserer Konsole können wir Folgendes eingeben:python manage.py migrate myBlog und die Ausgabe sollte wie folgt sein -

Unser Post-Modell befindet sich jetzt in unserer Datenbank.

Django Admin

Zum Hinzufügen, Bearbeiten und Löschen der gerade modellierten Beiträge verwenden wir den Django-Administrator.

Also lasst uns das öffnen myBlog/admin.py file und setzen Sie unten Inhalt in diese -

Zunächst importieren (schließen) wir das im vorherigen Kapitel definierte Post-Modell ein. Um unser Modell auf der Admin-Seite sichtbar zu machen, müssen wir das Modell bei admin.site.register (Post) registrieren.

Um sich bei einer Admin-Site anzumelden, müssen Sie einen Superuser erstellen - ein Benutzerkonto, das die Kontrolle über alles auf der Site hat. Stoppen Sie also den Webserver und geben Sie die Befehlszeilenpython einmanage.py createsuperuserund drücken Sie die Eingabetaste.

Ok, es ist Zeit, sich unser Post-Modell anzusehen. Denken Sie daran, python manage.py run server in der Konsole auszuführen, um den Webserver auszuführen. Gehen Sie zu Ihrem Browser und geben Sie die Adresse einhttps://127.0.0.1:8000/admin/.Melden Sie sich mit den soeben ausgewählten Anmeldeinformationen an. Dann sollte das Django-Administrator-Dashboard wie folgt angezeigt werden:

Gehen Sie zu Beiträge und experimentieren Sie ein wenig damit. Sie können von überall aus viele Blog-Beiträge und Inhalte hinzufügen. Ihr Blog wird ungefähr so ​​aussehen -

Dies ist nur eine Übersicht über Django und wir können ein Blog mit nur wenigen Codezeilen erstellen.