Django (raamwerk)
| django | ||
|---|---|---|
|
| ||
|
| ||
| 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 ] | 16 november 2005 | |
| 0,91 [ 3 ] | 11 januari 2006 | "nieuwe beheerder" |
| 0,95 [ 4 ] | 29 juli 2006 | "magische verwijdering" |
| 0,96 [ 5 ] | 23 maart 2007 | "newforms", testtools |
| 1,0 [ 6 ] | 03 september 2008 | API-stabiliteit, ontkoppelde manager, Unicode |
| 1.1 [ 7 ] | 29 juli 2009 | Aggregaten, op transacties gebaseerde tests |
| 1.2 [ 8 ] | 17 mei 2010 | meerdere db-verbindingen, CSRF , modelvalidatie |
| 1.3 [ 9 ] | 23 maart 2011 | Op klassen gebaseerde weergaven, statische bestanden |
| 1.4 LTS [ 10 ] | 23 maart 2012 | Tijdzones, browsertests, applicatiesjablonen. [ 11 ] |
| 1.5 [ 12 ] | 26 februari 2013 | Python 3-ondersteuning, configureerbaar gebruikersmodel |
| 1.6 [ 13 ] | 06 november 2013 | Opgedragen aan Malcolm Tredinnick, DB Transaction Management, Connection Pooling. |
| 1,7 [ 14 ] | 02 september 2014 | Migraties, applicatiebelasting en configuratie. |
| 1.8 LTS [ 15 ] | 01 april 2015 | Native ondersteuning voor meerdere template-engines. release voor langdurige ondersteuning, ondersteund tot ten minste april 2018 |
| 1.9 [ 16 ] | 01 december 2015 | Automatische wachtwoordvalidatie. Nieuwe stijlen voor de beheerdersinterface. |
| 1.10 [ 17 ] | 17 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 ] | 1 april 2017 | Nieuwste versie met ondersteuning voor Python 2.7. Versie april 2020 |
| 2.0 [ 19 ] | 1 december 2017 | Eerste versie met alleen ondersteuning voor Python 3. |
| 2.1 [ 19 ] | 1 augustus 2018 | Toestemming "Bekijken" op model |
| 2.2LTS [ 20 ] | 1 april 2019 | beveiligingsversie. Ondersteund tot minimaal april 2022 |
| 3,0 [ 21 ] | 2 december 2019 | ASGI-ondersteuning |
| 3.1 [ 22 ] | 4 augustus 2020 | Asynchrone weergaven en middleware |
| 3.2LTS [ 23 ] | april 2021 | Verlengde ondersteuning tot april 2024 |
| 4,0 [ 24 ] | december 2021 | Verlengde ondersteuning tot april 2023 |
| 4.1 [ 24 ] | augustus 2022 | Verlengde ondersteuning tot december 2023 |
| 4.2 LTS [ 24 ] | april 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
- Pinterest [ 25 ]
- http://www.lawrence.com/ [ 26 ]
- https://web.archive.org/web/20070609122443/http://www.chicagocrime.org/ [ 27 ]
- http://www.ljworld.com/
- http://projects.washingtonpost.com/congress/
- http://www.torontolife.com/
- http://www.lawrencechamber.com/
Referenties
- ↑ "Bestandsmethoden in Python: tekstbestanden maken en manipuleren" . Ontvangen 19 februari 2017 .
- ↑ "Introductie van Django 0.90" . Django-webblog. Ontvangen 2 februari 2013.
- ↑ "Django 0.91 vrijgegeven" . Django-webblog. Ontvangen 2 februari 2013.
- ↑ "Introductie van Django 0,95" . Django-webblog. Ontvangen 2 februari 2013.
- ↑ "Aankondiging van Django 0,96!" . Django-webblog. Ontvangen 2 februari 2013.
- ↑ "Django 1.0 uitgebracht!" . Django-webblog. Ontvangen 2 februari 2013.
- ↑ "Django 1.1 vrijgegeven" . Django-webblog. Ontvangen 2 februari 2013.
- ↑ "Django 1.2 vrijgegeven" . Django-webblog. Ontvangen 2 februari 2013.
- ↑ "Django 1.3 vrijgegeven" . Django-webblog. Ontvangen 2 februari 2013.
- ↑ "Django 1.4 uitgebracht" . Django-webblog. Ontvangen 2 februari 2013.
- ^ "Django's releaseproces - Django-documentatie - Django" . Gearchiveerd van het origineel op 6 maart 2016 . Ontvangen 30 april 2016 .
- ↑ "Django 1.5 vrijgegeven" Django weblog. Geëxtraheerd op 27 februari 2013.
- ↑ "Django 1.6 vrijgegeven" Django weblog. Geëxtraheerd op 6 november 2013.
- ↑ "Django 1.7 vrijgegeven" Django weblog. Geëxtraheerd op 4 september 2014.
- ↑ "Django 1.8 vrijgegeven" Django weblog. Geëxtraheerd op 2 april 2015.
- ↑ "Django 1.9 vrijgegeven" Django weblog. Geëxtraheerd op 1 december 2015.
- ↑ "Django 1.10 vrijgegeven" Django weblog. Geëxtraheerd op 17 januari 2017.
- ↑ "Download Django" Download Django. Geëxtraheerd op 9 december 2016.
- ↑ a b "Download Django" Download Django. Ontvangen 9 december 2016.
- ↑ "Django 2.2.3 release-opmerkingen | Djangodocumentatie | Django» . docs.djangoproject.com . Ontvangen 19 november 2020 .
- ↑ "Django 3.0 release-opmerkingen | Djangodocumentatie | Django» . docs.djangoproject.com . Ontvangen 19 november 2020 .
- ↑ "Django 3.1 release-opmerkingen | Djangodocumentatie | Django» . docs.djangoproject.com . Ontvangen 19 november 2020 .
- ↑ "Django 3.2 release-opmerkingen - IN ONTWIKKELING | Djangodocumentatie | Django» . docs.djangoproject.com . Ontvangen 19 november 2020 .
- ↑ a b c "Download Django | Django» . www.djangoproject.com . Ontvangen 19 november 2020 .
- ↑ "Mede-oprichter Paul Sciarra antwoordt dat ze Django uitgebreid gebruiken" .
- ↑ "Vacature waarin staat dat ze Django actief onderhouden, promoten en gebruiken als ontwikkelplatform voor hun applicaties" .
- ↑ «In de FAQ-sectie beantwoordt Django de vraag "Welke technologieën gebruiken ze? " » .
Externe links
- Django-project
- Django-installatieprogramma
- LinkedIn Django Group in Latijns-Amerika
- Django-communitywiki en coderepository
- Django Spaanse gemeenschap Gearchiveerd 2008-12-19 op de Wayback Machine
- Django's Planet in het Spaans Gearchiveerd 21-07-2009 bij de Wayback Machine
- Django Software Foundation
- Boeken over Django Gearchiveerd 19/12/2008 bij de Wayback Machine
- Django-zoekmachine
- Over de architectuur van Django
- Biografie van Django Reinhardt, naar wie het raamwerk is vernoemd
- Het Django-boek
- github
- Dashboards beheren vanuit Django Plotly Dash