close

Django (raamwerk)

Ga naar navigatie Ga naar zoeken
django
Django logo.svg
Django 2.1 bestemmingspagina.png
Algemene informatie
programmatype: web -framework
Auteur Adrian Holovaty, Simon Willison
ontwikkelaar Django Software Foundation
Eerste uitgave juli 2005
Licentie BSD-licentie
Technische informatie
gepland in Python
standaard grafische interface webgebruikersinterface
versies
Laatste stabiele versie 3.2 ( info ) (6 april 2021 (1 jaar, 6 maanden en 11 dagen))
Links

Django is een open source framework voor webontwikkeling , geschreven in Python , dat zich houdt aan het ontwerppatroon van model-view-controller (MVC). Het werd oorspronkelijk ontwikkeld om op nieuws georiënteerde webpagina's te draaien voor de World Company of Lawrence, Kansas, en werd in juli 2005 vrijgegeven voor het publiek onder een BSD-licentie ; het raamwerk is vernoemd naar zigeunerjazzgitarist Django Reinhardt .

In juni 2008 werd bekend dat de nieuw gevormde Django Software Foundation Django in de toekomst zou overnemen.

Het fundamentele doel van Django is om het eenvoudig maken van complexe websites te maken. Django legt de nadruk op hergebruik, connectiviteit en uitbreidbaarheid van componenten, snelle ontwikkeling en het "DRY" -principe ( Do n't Repeat Yourself ) . De Python-taal wordt gebruikt in alle componenten van het framework, inclusief configuraties, bestanden, [ 1 ]​ en zijn datamodellen.

Overzicht en functies

Net als Ruby on Rails , een ander populair open source-framework, werd Django een tijdje in productie gebruikt voordat het voor het publiek werd vrijgegeven; het werd ontwikkeld door Adrian Holovaty, Simon Willison , Jacob Kaplan-Moss en Wilson Miner terwijl ze aan World Online werkten, en werd oorspronkelijk gebruikt om drie nieuwswebsites te beheren: The Lawrence Journal-World , lawrence.com en KUsports.com .

Django's oorsprong in het beheren van nieuwspagina's blijkt duidelijk uit het ontwerp, omdat het een aantal functies biedt die het gemakkelijk maken om snel inhoudgestuurde pagina's te ontwikkelen. In plaats van ontwikkelaars te verplichten om controllers en views te schrijven voor paginabeheergebieden, biedt Django bijvoorbeeld een ingebouwde toepassing voor inhoudbeheer die kan worden opgenomen als onderdeel van elke Django-pagina en die meerdere pagina's kan beheren vanuit dezelfde installatie; de administratieve toepassing maakt het mogelijk om inhoudsobjecten aan te maken, bij te werken en te verwijderen, een logboek bij te houden van alle acties die op elk object zijn uitgevoerd, en biedt een interface voor het beheren van gebruikers en gebruikersgroepen (inclusief gedetailleerde toewijzing van machtigingen).

De kerndistributie van Django bundelt ook toepassingen die een commentaarsysteem bieden, tools voor het syndiceren van inhoud via RSS en/of Atom , "platte pagina's" waarmee u pagina's met inhoud kunt beheren zonder controllers of views voor die pagina's te schrijven, en een URL-omleiding.

Andere kenmerken van Django zijn:

  • Een object-relationele mapper .
  • Pluggable applicaties die kunnen worden geïnstalleerd op elke pagina die wordt beheerd door Django.
  • Een robuuste database -API .
  • Een ingebouwd "generieke weergaven"-systeem zorgt ervoor dat u geen logica hoeft te schrijven voor bepaalde veelvoorkomende taken.
  • Een uitbreidbaar op tags gebaseerd sjabloonsysteem , met overerving van sjablonen.
  • Een op reguliere expressies gebaseerde URL -dispatcher .
  • Een "middleware"-systeem voor het ontwikkelen van extra functies; de belangrijkste Django-distributie omvat bijvoorbeeld middleware-componenten die caching , uitvoercompressie, URL- normalisatie , CSRF-bescherming en sessie-ondersteuning bieden.
  • Internationaliseringsondersteuning, inclusief ingebouwde vertalingen van de administratie-interface.
  • Ingebouwde documentatie toegankelijk via de beheertoepassing (inclusief automatisch gegenereerde documentatie van modellen en sjabloonbibliotheken die door toepassingen zijn toegevoegd).

Django is ook een algemeen platform dat meerdere tools biedt

Architectuur

Hoewel Django sterk geïnspireerd is door de ontwikkelingsfilosofie van Model View Controller , verklaren de ontwikkelaars publiekelijk dat ze zich niet speciaal gebonden voelen door zich strikt aan een bepaald paradigma te houden, maar in plaats daarvan de voorkeur te geven aan "wat goed voelt voor hen". Als gevolg hiervan wordt bijvoorbeeld wat een "controller" zou worden genoemd in een "echt" MVC-framework een "view" genoemd in Django, en wat een "view" zou worden genoemd, wordt een "sjabloon" genoemd.

Door gebruik te maken van de kracht van de bemiddelaar en funderingslagen , laat Django ontwikkelaars zich concentreren op het bouwen van de Entity-objecten en de presentatie- en besturingslogica voor hen.

Presentatie

Hier wordt de interactie tussen de gebruiker en de computer verzorgd. In Django wordt deze taak uitgevoerd door de template engine en template loader die de informatie opnemen en presenteren aan de gebruiker (bijvoorbeeld via HTML). Het URL-configuratiesysteem maakt ook deel uit van de presentatielaag.

Besturing

In deze laag bevindt zich de programma- of applicatielogica zelf. In Django worden ze vertegenwoordigd door views en handlers. De presentatielaag is hiervan afhankelijk en dit is weer afhankelijk van de domeinlaag.

Bemiddelaar

Het is verantwoordelijk voor het afhandelen van de interactie tussen het subsysteem Entiteit en fundering. Hier wordt de object-relationele mapping gedaan door de Django-engine.

entiteit

Het entiteitssubsysteem verwerkt bedrijfsobjecten. Django's object-relationele mapping maakt het schrijven van objecten van het type entiteit op een gemakkelijke en standaard manier mogelijk.

Stichting

De hoofdtaak van het funderingssubsysteem is om het werk met de database op een laag niveau af te handelen. Ondersteuning op basisniveau wordt geboden voor verschillende databases en andere bevinden zich in de testfase.

Versiegeschiedenis

Betekenis
Niet ondersteund
ondersteund
Huidige versie
toekomstige versie
Versie Datum Cijfers
0,90 [ 2 ] 02005-11-1616 november 2005
0,91 [ 3 ] 02006-01-1111 januari 2006 "nieuwe beheerder"
0,95 [ 4 ] 02006-07-2929 juli 2006 "magische verwijdering"
0,96 [ 5 ] 02007-03-2323 maart 2007 "newforms", testtools
1,0 [ 6 ] 02008-09-0303 september 2008 API-stabiliteit, ontkoppelde manager, Unicode
1.1 [ 7 ] 02009-07-2929 juli 2009 Aggregaten, op transacties gebaseerde tests
1.2 [ 8 ] 02010-05-1717 mei 2010 meerdere db-verbindingen, CSRF , modelvalidatie
1.3 [ 9 ] 02011-03-2323 maart 2011 Op klassen gebaseerde weergaven, statische bestanden
1.4 LTS [ 10 ] 02012-03-2323 maart 2012 Tijdzones, browsertests, applicatiesjablonen. [ 11 ]
1.5 [ 12 ] 02013-02-2626 februari 2013 Python 3-ondersteuning, configureerbaar gebruikersmodel
1.6 [ 13 ] 02013-11-0606 november 2013 Opgedragen aan Malcolm Tredinnick, DB Transaction Management, Connection Pooling.
1,7 [ 14 ] 02014-09-0202 september 2014 Migraties, applicatiebelasting en configuratie.
1.8 LTS [ 15 ] 02015-04-0101 april 2015 Native ondersteuning voor meerdere template-engines. release voor langdurige ondersteuning, ondersteund tot ten minste april 2018
1.9 [ 16 ] 02015-12-0101 december 2015 Automatische wachtwoordvalidatie. Nieuwe stijlen voor de beheerdersinterface.
1.10 [ 17 ] 02017-01-1717 januari 2017 Zoeken in volledige tekst voor PostgreSQL. Nieuwe stijl middleware om het gebrek aan strikte request/response gelaagdheid van de oude stijl middleware op te lossen. Officiële ondersteuning voor Unicode-gebruikersnamen.
1.11 [ 18 ] 02017-04-011 april 2017 Nieuwste versie met ondersteuning voor Python 2.7. Versie april 2020
2.0 [ 19 ] 02017-12-011 december 2017 Eerste versie met alleen ondersteuning voor Python 3.
2.1 [ 19 ] 02018-08-011 augustus 2018 Toestemming "Bekijken" op model
2.2LTS [ 20 ] 02019-04-011 april 2019 beveiligingsversie. Ondersteund tot minimaal april 2022
3,0 [ 21 ] 02019-12-022 december 2019 ASGI-ondersteuning
3.1 [ 22 ] 02020-08-044 augustus 2020 Asynchrone weergaven en middleware
3.2LTS [ 23 ] 02021-04april 2021 Verlengde ondersteuning tot april 2024
4,0 [ 24 ] 02021-12december 2021 Verlengde ondersteuning tot april 2023
4.1 [ 24 ] 02022-08augustus 2022 Verlengde ondersteuning tot december 2023
4.2 LTS [ 24 ] 02023-04april 2023 Verlengde ondersteuning tot april 2026

Database-ondersteuning

Wat de database betreft, wordt aanbevolen PostgreSQL , maar MySQL en SQLite 3 worden ook ondersteund . Een adapter voor Microsoft SQL Server is in ontwikkeling. Zodra de datamodellen zijn gemaakt, biedt Django een database-abstractie via zijn API waarmee objecten kunnen worden gemaakt, opgehaald, bijgewerkt en verwijderd. Het is ook mogelijk voor de gebruiker om zijn eigen SQL-query's rechtstreeks uit te voeren. In het datamodel van Django vertegenwoordigt een klasse een record van een tabel in de database, en instanties ervan zullen de tuples in de tabel zijn.

Ondersteuning webserver

Zoals we in de vereisten vermeldden, bevat Django een lichtgewicht webserver voor test- en ontwikkelingswerk. In de productiefase wordt Apache 2 met mod_python echter aanbevolen . Hoewel Django de WSGI- specificatie ondersteunt , kan het op een groot aantal verschillende servers draaien, zoals FastCGI of SCGI op Apache of andere servers (met name Lighttpd ).

Vereisten

Django vereist Python 2.5 of hoger. Er zijn geen andere Python-bibliotheken nodig om basisfunctionaliteit te krijgen. In een ontwikkelomgeving, vooral als je met Django wilt experimenteren, heb je geen webserver nodig, omdat Django voor dit doel een eigen lichtgewicht server heeft, met de beperking dat er maar één gebruiker tegelijk is.

PostgreSQL- , MySQL- , Oracle- of SQLite- database .

aspecten

tussen Django-nomenclatuur en het MVC

Django lijkt het MVC-patroon te implementeren, maar het patroon wordt MTV genoemd: model, template, view.

Ten eerste moeten we verduidelijken dat we bij het ontwerpen van Django niet hebben geprobeerd vast te houden aan iets in het bijzonder, maar om een ​​tool te ontwikkelen die zo goed mogelijk werkt.

Hoewel het waar is dat het erg lijkt op de implementatie van het MVC -patroon , beschrijft de weergave voor Django "welke" gegevens zullen worden gepresenteerd en niet "hoe" het eruit zal zien. Dit is waar sjablonen in het spel komen, die beschrijven "hoe de gegevens worden gepresenteerd".

De 'controller' van een klassieke MVC wordt vertegenwoordigd door het framework zelf. Dat wil zeggen, het systeem dat een verzoek naar de overeenkomstige weergave stuurt, volgens de URL-configuratie van Django (configuratiebestand).

Verwerking van een HTTP - verzoek

Rekening houdend met de architectuur zullen we zien hoe een aanvraag globaal wordt verwerkt.

Wanneer Django een HTTP-verzoek ontvangt, is het eerste wat het doet een instantie van de HttpRequest-klasse maken die alle eigenschappen van het verzoek en verschillende nuttige methoden bevat.

Vervolgens wordt de URL- resolutie uitgevoerd . Dit bestaat uit het selecteren van de functie van de weergave (van de URL die is opgegeven in het HTTP-verzoek) die zal deelnemen aan het maken van het antwoord van de toepassing.

Zodra we hebben vastgesteld welke functie de opgegeven URL zal oplossen, wordt de view-functie aangeroepen met de **request**-instantie van het HTTP-verzoek als de eerste parameter, de view-methode bevat over het algemeen al het logische werk, bewerkingen zoals het verkrijgen van objecten uit de database door middel van modellen, berekeningen, transformaties en tenslotte de constructie van de representatie van het uiteindelijke antwoord aan de gebruiker.

Middleware

Django biedt drie verschillende punten waarop u middleware-klassen kunt uitvoeren, die eerder in het configuratiebestand zijn gedefinieerd. Dezelfde klasse kan op meer dan één punt worden uitgevoerd, dit zijn de opties:

middleware aanvragen
Het wordt uitgevoerd nadat het HttpRequest-object is gemaakt, maar voordat de URL is opgelost, zodat u het aanvraagobject kunt wijzigen of uw eigen antwoord kunt retourneren voordat de rest van de toepassing wordt uitgevoerd.
Bekijk middleware
Het wordt uitgevoerd na de resolutie van de URL, maar voordat de bijbehorende weergave wordt uitgevoerd. Hiermee kunnen bewerkingen worden uitgevoerd voor en na de uitvoering van de weergave. Het uitzicht wordt mogelijk helemaal niet weergegeven.
antwoord-middleware
Het wordt als laatste uitgevoerd, nadat het responsobject is gemaakt en voordat het wordt afgeleverd bij de klant. Gebruikt om de laatste wijzigingen aan te brengen.

Django op het web

Dit zijn slechts enkele van de sites die Django gebruiken, hier is een meer complete lijst

Referenties

  1. "Bestandsmethoden in Python: tekstbestanden maken en manipuleren" . Ontvangen 19 februari 2017 . 
  2. "Introductie van Django 0.90" . Django-webblog. Ontvangen 2 februari 2013.
  3. "Django 0.91 vrijgegeven" . Django-webblog. Ontvangen 2 februari 2013.
  4. "Introductie van Django 0,95" . Django-webblog. Ontvangen 2 februari 2013.
  5. "Aankondiging van Django 0,96!" . Django-webblog. Ontvangen 2 februari 2013.
  6. "Django 1.0 uitgebracht!" . Django-webblog. Ontvangen 2 februari 2013.
  7. "Django 1.1 vrijgegeven" . Django-webblog. Ontvangen 2 februari 2013.
  8. "Django 1.2 vrijgegeven" . Django-webblog. Ontvangen 2 februari 2013.
  9. "Django 1.3 vrijgegeven" . Django-webblog. Ontvangen 2 februari 2013.
  10. "Django 1.4 uitgebracht" . Django-webblog. Ontvangen 2 februari 2013.
  11. ^ "Django's releaseproces - Django-documentatie - Django" . Gearchiveerd van het origineel op 6 maart 2016 . Ontvangen 30 april 2016 . 
  12. "Django 1.5 vrijgegeven" Django weblog. Geëxtraheerd op 27 februari 2013.
  13. "Django 1.6 vrijgegeven" Django weblog. Geëxtraheerd op 6 november 2013.
  14. "Django 1.7 vrijgegeven" Django weblog. Geëxtraheerd op 4 september 2014.
  15. "Django 1.8 vrijgegeven" Django weblog. Geëxtraheerd op 2 april 2015.
  16. "Django 1.9 vrijgegeven" Django weblog. Geëxtraheerd op 1 december 2015.
  17. "Django 1.10 vrijgegeven" Django weblog. Geëxtraheerd op 17 januari 2017.
  18. "Download Django" Download Django. Geëxtraheerd op 9 december 2016.
  19. a b "Download Django" Download Django. Ontvangen 9 december 2016.
  20. "Django 2.2.3 release-opmerkingen | Djangodocumentatie | Django» . docs.djangoproject.com . Ontvangen 19 november 2020 . 
  21. "Django 3.0 release-opmerkingen | Djangodocumentatie | Django» . docs.djangoproject.com . Ontvangen 19 november 2020 . 
  22. "Django 3.1 release-opmerkingen | Djangodocumentatie | Django» . docs.djangoproject.com . Ontvangen 19 november 2020 . 
  23. "Django 3.2 release-opmerkingen - IN ONTWIKKELING | Djangodocumentatie | Django» . docs.djangoproject.com . Ontvangen 19 november 2020 . 
  24. a b c "Download Django | Django» . www.djangoproject.com . Ontvangen 19 november 2020 . 
  25. "Mede-oprichter Paul Sciarra antwoordt dat ze Django uitgebreid gebruiken" . 
  26. "Vacature waarin staat dat ze Django actief onderhouden, promoten en gebruiken als ontwikkelplatform voor hun applicaties" . 
  27. «In de FAQ-sectie beantwoordt Django de vraag "Welke technologieën gebruiken ze? " » . 

Externe links