Django-handledning: Funktioner, ArchiTecture & History

โšก Smart sammanfattning

Django รคr ett gratis, รถppen kรคllkodsprogram Python Webbramverk byggt pรฅ modell-vy-mall-mรถnstret, vilket mรถjliggรถr snabb utveckling av sรคkra, skalbara, databasdrivna webbplatser genom รฅteranvรคndbara komponenter, ett automatiskt administratรถrsgrรคnssnitt och batteridriven design.

  • ๐Ÿ”˜ Ramverk: Django รคr en hรถgkvalificerad Python ramverk fรถr att snabbt bygga komplexa, databasdrivna webbapplikationer.
  • โ˜‘๏ธ Architecture: MVT-mรถnstret (model-view-template) lรฅter Django hantera kontrollenheten och separera data, logik och presentation.
  • โœ… Batterier ingรฅr: Inbyggd administration, autentisering, formulรคr och internationalisering eliminerar det mesta repetitiva installationsarbetet.
  • ๐Ÿ› ๏ธ Sรคkerhet: Standardskydd blockerar CSRF, skriptning รถver flera webbplatser, SQL-injektion och clickjacking-attacker.
  • ๐Ÿงช Skala: Instagram, Pinterest, Mozilla och Disqus fรถrlitar sig pรฅ Django fรถr att generera mycket hรถg trafik.
  • ๐Ÿค– AI: Django anvรคnder maskininlรคrningsmodeller som API:er, och assistenter som GitHub Copilot snabbar upp backend-kodning.

Django-handledning fรถr nybรถrjare

Django driver nรฅgra av de stรถrsta webbplatserna pรฅ webben medan keeping daglig utveckling snabb och organiserad. Innan vi utforskar dess funktioner, arkitektur och historia bรถrjar avsnitten nedan med grunderna i webbramverk och vad som gรถr Django unikt.

Sammanfattning av Django handledning

Den hรคr Django-handledningen tรคcker alla grundlรคggande รคmnen frรฅn grunden. I handledningen lรคr du dig koncept som vad Django รคr, dess historia, dess funktioner, Django-ramverkets egenskaper, Djangos komponenter, dess fรถrdelar och nackdelar och mycket mer.

Innan vi lรคr oss Django, lรฅt oss fรถrstรฅ:

Vad รคr ett webbramverk?

Ett webbramverk รคr ett kodbibliotek som hjรคlper dig att bygga en flexibel, skalbar och underhรฅllbar dynamisk webbplats, webbapp eller webbtjรคnst. Olika webbramverk inkluderar Zend fรถr PHP, Ruby on Rails fรถr Ruby och andra.

Vad รคr Django?

Django รคr ett webbutvecklingsramverk fรถr Python vilket erbjuder standardmetoder fรถr snabb och effektiv webbutveckling. Det primรคra mรฅlet med detta webbramverk pรฅ hรถg nivรฅ รคr att skapa komplexa databasdrivna webbplatser. Det hjรคlper dig att bygga och underhรฅlla webbapplikationer av hรถg kvalitet. Det gรถr att du kan gรถra utvecklingsprocessen smidig och tidsbesparande fรถr snabb utveckling.

Varfรถr Django? Viktiga fรถrdelar med Django

Hรคr รคr de viktigaste fรถrdelarna med Django:

  • Django รคr enkelt att installera och kรถra. Det erbjuder en mรคngd olika alternativ fรถr att komma igรฅng.
  • Den tillhandahรฅller ett fรคrdigt anvรคndargrรคnssnitt fรถr administrativa aktiviteter.
  • Den mรถjliggรถr flersprรฅkiga webbplatser genom att anvรคnda sitt inbyggda internationaliseringssystem.
  • Det hjรคlper dig att snabbt mรถta massiva trafikbehov.
  • Django anvรคnds fรถr att bygga alla typer av innehรฅllshanteringssystem, sociala nรคtverk samt vetenskapliga berรคkningsplattformar.
  • Django hjรคlper dig att tillhandahรฅlla heltรคckande applikationstestning.
  • Det hjรคlper dig att dokumentera ditt API med HTML-utdata.
  • REST-ramverket har rikt stรถd fรถr flera autentiseringsprotokoll.
  • Den erbjuder behรถrigheter och strypningspolicyer.
  • Det anvรคnds ofta fรถr hastighetsbegrรคnsande API-fรถrfrรฅgningar frรฅn en enskild anvรคndare.

Djangos historia

ร…r Milestone
2003 Projektet startades av Adrian Holovaty och Simon Willison som ett internt projekt pรฅ tidningen Lawrence Journal-World.
juli 2005 Den slรคpptes i juli 2005 som "Django", uppkallad efter jazzgitarristen Django Reinhardt.
juni 2008 Det fรถrklarades att en Django-programvara Foundation (DSF) skulle behรฅlla Django.
29 July 2009 Django 1.1 slรคpptes med funktioner som aggregeringar och transaktionsbaserade tester.
17 May 2010 Django 1.2 slรคpptes. Uppdateringen erbjรถd funktioner som flera databaser och ett e-postbackend, och fรถrbรคttringar gjordes fรถr sessioner och cookies.
Mars 23 2011 Version 1.3 introducerade funktioner som klassbaserade vyer och statiska filer.
Mars 23 2012 Version 1.4 lanserades med nya funktioner som tidszoner och testning i webblรคsaren.
Februari 26 2013 1.5-versionen kom med Python 3 stรถd och konfigurerbara anvรคndarmodellfunktioner.
November 6 2013 1.6-versionen kom med funktioner fรถr hantering av databastransaktioner och anslutningspooler.
2 September 2014 Version 1.7 hade nya funktioner som laddning av applikationer, migreringar och konfiguration.
April 1 2015 Inbyggt stรถd tillhandahรถlls fรถr flera mallmotorer.
1 Dec 2015 I version 1.9 introducerades en automatisk lรถsenordsvalideringsfunktion.
Augusti 1 2016 I version 1.10, fulltextsรถkning efter PostgreSQL lanserades.
April 4 2017 Version 1.11 blev den sista versionen som stรถdde Python 2.7.
2 Dec 2017 Version 2.0 blev den fรถrsta Python Endast 3-version.
Augusti 1 2018 Version 2.1 kom med stรถd fรถr modellbehรถrighet fรถr "visning".
2021 Tog bort stรถd fรถr Django 3.0 och lade till stรถd fรถr Django 3.2.

I den hรคr handledningen om Django fรถr nybรถrjare ska vi nu lรคra oss om funktionerna i Django.

Funktioner hos Django

Nedan รคr funktionerna i Django:

  • Hjรคlper dig att definiera mรถnster fรถr URLs i din ansรถkan.
  • Enkelt men kraftfullt URL systemet.
  • Inbyggt autentiseringssystem.
  • En objektorienterad programmeringsdatabas som erbjuder datalagring och hรคmtning i toppklass.
  • Det automatiska administratรถrsgrรคnssnittet gรถr det mรถjligt att lรคgga till, redigera och ta bort objekt. Du kan anpassa administratรถrspanelen efter dina behov.
  • Cache-ramverket levereras med flera cachemekanismer.

I den hรคr handledningen fรถr Django-ramverket kommer vi nu att lรคra oss om Djangos egenskaper.

Egenskaper hos Django

Hรคr รคr de viktigaste egenskaperna hos Django:

  • Lรถst kopplade โ€“ Django hjรคlper dig att gรถra varje element i sin stack oberoende av de andra.
  • Less koda โ€“ Sรคkerstรคller effektiv utveckling.
  • Inte upprepad โ€“ Allting bรถr utvecklas pรฅ exakt ett stรคlle istรคllet fรถr att upprepas om och om igen.
  • Snabb utveckling โ€“ Django erbjuder snabb och pรฅlitlig applikationsutveckling.
  • Konsekvent design โ€“ Django har en ren design och gรถr det enkelt att fรถlja de bรคsta webbutvecklingsmetoderna.

Nรคsta i denna Django nybรถrjarhandledning kommer vi att lรคra oss om Djangos arkitektur.

Django Architecture: MVC och MVT

Nedan รคr en detaljerad arkitektur av Django:

Django Architecture

Django Architecture

MVC-mรถnster

Nรคr vi pratar om applikationer som tillhandahรฅller ett anvรคndargrรคnssnitt (webb eller skrivbord) brukar vi prata om MVC-arkitektur. MVC-mรถnstret รคr baserat pรฅ modell, vy och kontroller.

Ocuco-landskapet Modell definierar datastrukturen och tar hand om att frรฅga databasen.

Ocuco-landskapet Visa definierar vilken data som ska presenteras och returnerar ett HTTP-svar.

Ocuco-landskapet Regulator รคr den del av applikationen som hanterar anvรคndarinteraktionen.

Django MVC-MVT mรถnster

Model-View-Template (MVT) รคr ett annat koncept jรคmfรถrt med MVC. Den stรถrsta skillnaden mellan dessa tvรฅ arkitekturmรถnster รคr att Django sjรคlv hanterar Controller-delen (programvarukoden som styr interaktionerna mellan modellen och vyn). Mallen รคr en HTML-fil som blandas med en Django Template Language-fil, รคven kallad DTL.

Diagrammet nedan visar hur alla komponenter i MVT-mรถnstret interagerar med varandra fรถr att tillgodose en specifik anvรคndarfรถrfrรฅgan.

Django Architecture: MVC och MVT

MVT Architecture

Som framgรฅr av diagrammet ovan begรคr en anvรคndare en resurs frรฅn Django. Django fungerar som en kontrollant och kontrollerar om det finns en tillgรคnglig resurs i URL.

Om URL kartor anropas en vy som interagerar med modellen och mallen. Django svarar sedan anvรคndaren och skickar en mall som svar.

I den hรคr serien med Django-handledningar fรถr nybรถrjare ska vi lรคra oss om komponenterna i Django.

Komponenter av Django

Form

Django har ett kraftfullt formulรคrbibliotek som hanterar rendering av formulรคr som HTML. Biblioteket hjรคlper till att validera inlรคmnade data och konvertera dem till Python typer.

Autentisering

Den hanterar anvรคndarkonton, grupper, cookie-baserade anvรคndarsessioner och mer.

Administration

Den lรคser metadata i dina modeller fรถr att ge ett robust grรคnssnitt som kan anvรคndas fรถr att hantera innehรฅll pรฅ din webbplats.

internationalisering

Django erbjuder stรถd fรถr att รถversรคtta text till olika sprรฅk och lokalspecifik formatering av datum, tider, siffror och tidszoner.

Sรคkerhet

Django erbjuder skydd mot fรถljande attacker:

  • Cross-Site Request Forgery (CSRF)
  • Cross-site scripting
  • SQL-injektion
  • Clickjacking
  • Fjรคrrkรถrning av kod

Kรคnda fรถretag som anvรคnder Django

Hรคr รคr fรถretag som anvรคnder Django:

  • Bitbucket
  • Disqus
  • NASA
  • PBS (Public Broadcasting Service)
  • Pinterest
  • Instagram
  • Mozilla
  • The Washington Post
  • The New York Times
  • Los Angeles Times
  • The Guardian
  • nationella geografiska
  • Discovery Channel

Nackdelar med att anvรคnda Django

Hรคr รคr nรฅgra nackdelar med att anvรคnda Django:

  • En enda process kan inte hantera flera fรถrfrรฅgningar samtidigt.
  • Django รคr ett mycket monolitiskt verktyg.
  • Komponenter distribueras tillsammans, vilket kan skapa fรถrvirring.
  • Kunskap om hela systemet krรคvs fรถr att arbeta med Django.
  • Det gรถr webbapplikationskomponenter tรคtt sammankopplade.
  • Du behรถver gรถra lรฅngvarig programmering fรถr mindre uppgifter.

Vanliga frรฅgor

Django รคr frรคmst ett backend-ramverk, รคven om det ofta beskrivs som fullstack eftersom dess malllager renderar HTML. Det hanterar serversideslogik, databaser, routing och sรคkerhet, medan mallar hanterar presentation fรถr webblรคsaren.

Django รคr ett batteridrivet fullstack-ramverk med inbyggd ORM, administratรถrspanel och autentisering. Flask รคr ett lรคttviktigt mikroramverk som รคr minimalistiskt och anvรคnder tillรคgg fรถr samma funktioner, vilket ger utvecklare mer manuell kontroll.

Django ORM, eller objektrelationsmappare, lรฅter dig definiera databastabeller som Python klasser och frรฅga dem med Python kod istรคllet fรถr rรฅ SQL. Den stรถder databaser som PostgreSQL, MySQL, SQLiteoch Oracle.

Kรถr python -m django โ€“version pรฅ kommandoraden, eller รถppna en Python `shell` och `run` import django fรถljt av `print(django.get_version()`. Bรฅda visar det installerade Django-versionnumret.

Middleware รคr en serie hooks som bearbetar varje fรถrfrรฅgan och svar globalt. Django anvรคnder middleware fรถr sessioner, autentisering, CSRF-skydd och sรคkerhetsrubriker, dรคr varje hook kรถrs i ordning fรถre och efter att din vy exekveras.

En fungerande kunskap om Python och grundlรคggande webbkoncept som HTTP, HTML och databaser krรคvs. Att fรถrstรฅ objektorienterad programmering gรถr Django-modeller och klassbaserade vyer mycket lรคttare att lรคra sig.

Ja. Django hanterar ofta maskininlรคrningsmodeller via vyer eller Django REST Framework, och exponerar fรถrutsรคgelser som API-slutpunkter. En trรคnad modell laddas en gรฅng vid start och returnerar inferensresultat till webb- eller mobilklienter.

GitHub Copilot och liknande AI-assistenter autokompletterar Django-modeller, vyer, URL mรถnster och tester, och kan bygga upp repetitiva standardscheman. De pรฅskyndar utvecklingen, men genererad kod bรถr alltid granskas fรถr sรคkerhet och korrekthet.

Sammanfatta detta inlรคgg med: