Django (veb frejmvork)

Django (/ˈæŋɡ/ JANG-goh)[1] je besplatan veb frejmvork otvorenog koda, napisanog u Pajtonu, koji prati MVC arhitekturu (MVC) arhitektonski obrazac.[2][3] Održavan je od strane Softverske Fondacije Django, nezavisne organizacije osnovane kao neprofitnu 501(c)(3).

Django
Logo
Logo
Django stranica
Django stranica
Programer(i)Softverska Fondacija Django
Prvo izdanje21.07.2005.
Repozitorijum Uredi na Vikipodacima
Napisan uPajton
TipFrejmvork Veb Aplikacije
Licenca3-clause BSD
Veb-sajtdjangoproject.com

Glavni cilj Django-a je da olakša pravljenje kompleksnih veb sajtova baziranih na bazama podataka. Django stavlja akcenat na ponovno korišćenje i "priključnost" komponenti, rapidno brz razvoj i princip "ne ponavljaj se". Pajton je korišćen sve vreme, čak i za podešavanja, fajlove, i modele podataka. Django takođe nudi opcioni administrativni create, read, update i delete interfejs koji je generisan dinamično kroz samoposmatranje i podešen kroz modele administratora.

Neki poznati sajtovi koji koriste Django uključuju Pinterest,[4] Instagram,[5] Mozilla,[6] The Washington Times,[7] Disqus,[8] Public Broadcasting Service,[9] i Bitbucket.[10]

Istorija uredi

Django  je rođen na jesen 2003, kada su veb programeri u Lawrence Journal-World novinama, Adrijan Holovati i Sajmon Vilison, počeli da koriste Pajton da prave aplikacije.[11] Izbačen je javno pod BSD licencom u julu 2005. Frejmvork je imenovan po gitaristi Džango Renart.[11]

U junu 2008, najavljeno je da će novoformirana Softverska Fondacija Django ubuduće održavati Django.[12]

Mogućnosti uredi

Komponente uredi

 
Skrinšot interfejsa administratora za podešavanje korisničkih naloga

Uprkos tome što je imao sopstvenu nomenklaturu, kao što je imenovanje opozivnih objekata koji generišu HTTP odgovore "pregleda",[2] glavni Django frejmvork može biti viđen kao MVC.[3] Sadrži objektno-relacioni maper (ORM) koji posreduje između modula podataka (definisanih kao Pajton klase) i relacionih baza podataka ("Model"); sistem za obradu HTTP zahteva sa sistemom veb šablona ("Pregled") i dispečera veb adrese regularnog izraza ("Kontrolor").

Takođe uključeni u frejmvork su:

  • lagani i samostalni veb server za razvoj i testiranje
  • forma serijalizacije i validacionog sistema koji može da prevodi između HTML formi i vrednosti pogodnih za skladište u bazi podataka
  • sistem šablona koji omogućava koncept nasleđa pozajmljenog od objektno-orgjenisanog programiranja
  • Frejmvork veb keša koji može da koristi bilo koji metod keširanja
  • podrška za klase posrednog softvera koja može da interveniše tokom raznih faza obrade zahteva i da izvrši ručno napravljene funkcije
  • unutrašnji dispečerski sistem koji dozvoljava komponentama aplikacija da komuniciraju između sebe o događajima preko prethodno definisanih signala
  • Sistem internacionalizacije i lokalizacije, uključujući prevode komponenti Django-a u razne jezike
  • Sistem serijalizacije koji može napraviti i čitati XML i/ili JSON reprezentacije instance modela Django-a
  • sistem za proširivanje mogućnosti šablona
  • interfejs do Pajtonovog ugrađenog frejmvorka za testiranje jedinice

Ugrađene aplikacije uredi

Glavna Django distribucija takođe dolazi sa mnogobrojnim ugrađenim aplikacijama u okviru svog paketa, uključujući:

  • sistem autentifikacije sa mogućnošću proširivanja
  • administrativni dinamični interfejs
  • alatke za generisanje RSS i Atom priliva informacija
  • frejmvork sajta koji dozvoljava jednu Django instalaciju da bude pokrenuta na više sajtova, pri čemu svaki ima svoj sadržaj i aplikacije
  • alatke za generisanje Google Sitemaps
  • ugrađeno smanjenje kros-sajtovskih zahteva falsifikata, cross-site scripting, SQL injekciju, razbijanje šifri i ostalih tipičnih napada na vebu, od kojih je najviše njih već uključeno[13][14]
  • frejmvork za pravljenje GIS aplikacija

Rastegljivost uredi

Django-ov konfiguracioni sistem dozvoljava kod trećih lica da bude uključen u regularni projekat, imajući u obzir da prati konvencije aplikacije koja je ponovo korišćena[15] #cite_note-18 . Više od 2500 paketa[16] je dostupno da proširi ponašanje originalnog frejmvorka, donoseći rešenja za probleme koju originalna alatka nije mogla: registracija, pretraga, API odredba i potrošnja, CMS, itd.

Ova rastegljivost je, međutim, smanjena internim zavisnostima komponenti. Dok Django filozofija implicira labave veze,[17] filteri šablona i tagova smatraju jednu implementaciju, i oba auth i admin ugrađene aplikacije zahtevaju korišćenje ORM-a. Nijedan od ovih filtera ili ugrađenih aplikacija su obavezne za pokretanje Django projekta, ali obnovljive aplikacije su sklone da od njih zavise, ohrabrujući programere da nastave sa korišćenjem zvaničnih stekova u redu da bi imali pune beneficije od ekosistema aplikacija.

Serverski aranžmani uredi

Django može biti pokrenut u vezniku sa Apache, NGINX korišćenjem WSGI, Gunicorn, ili Cherokee korišćenjem (modul Pajtona).[18] Django takođe uključuje mogućnost pokretanja FastCGI servera, omogućavajući korišćenje van bilo kog veb servera koji podržava FastCGI, kao što je Lighttpd ili Hiawatha. Takođe je moguće koristiti druge WSGI-kompatibilne veb servere.[19] Django zvanično podržava četiri bek-end baze podataka: PostgreSQL, MySQL, SQLite, i Oracle. Microsoft SQL Server može biti korišćen sa django-mssql na Majkrosoft operativnim sistemima,[20] dok slični spoljni bek-endovi postoje za IBM DB2,[21] SQL Anywhere[22] i Firebird.[23] Postoji fork nazvan django-nonrel, koji podržava NoSQL baze podataka, kao što su MongoDB i Google App Engine prodavnica podataka.[24]

Django takođe može biti pokrenut u vezi sa Jython-om na bilo kom Java EE aplikacionom serveru kao što je GlassFish ili JBoss. U ovom slučaju django-jython mora biti instaliran da bi omogućio JDBC drajvere za povezivanje baze podataka, koji takođe omogućava funkcionalnost da se Django kompajluje u odgovarajući .war za razvoj .[25]

Google App Engine uključuje podršku za Django verziju 1.x.x[26] kao jednu od ugrađenih frejmvorkova.

Zajednica uredi

DjangoCon uredi

Postoji semi-godišnja konferencija za Django programere i korisnike, nazvana "DjangoCon", koja se održava od septembra 2008. DjangoCon se održava godišnje u Evropi, u maju ili junu;[27] dok druga se održava u SAD u septembru, obično u Portlandu.[28] 2012 DjangoCon se održao u Vašingtonu od 3. do 8. septembra. 2013 DjangoCon se održao u Čikagu u Hyatt Regency hotelu.[29]

Django mini-konferencije su održane u Hobartu, Australiji u julu 2013. i u Brisbejnu, Australiji u avgustu 2014.[30]

Drugi jezici uredi

Django-ov šablonski dizajn je prebačen na druge jezike pored Pajtona, pružajući dobru kros-platformsku podršku. Neke od ovih opcija su više direktni portovi, dok su drugi inspirisani Django-om, zadržavajući svoje koncepte pri čemu se više trudi u odstupanju od dizajna Django-a.

Integrisana okruženja programiranja za Pajton uredi

Dok većina Django programera koristi uređivač teksta kao što su Vim, Emacs, TextMate ili Sublime sa Django Bundle za njihove projekte, ostali preferiraju pajton-specifične alatke koje doprinose debagovanju, prepravljanju, testiranju jedinica, itd.[31]

Istorija verzija uredi

Značenje
Red Nepodržano
Yellow Podržano
Green Trenutna verzija
Version Date Notes
0.90[33] 16. nov. 2005.
0.91[34] 11. jan. 2006. "novi-admin"
0.95[35] 29. jul. 2006. "magično brisanje"
0.96[36] 23. mar. 2007. "newforms", alatke za testiranje
1.0[37] 3. sep. 2008. API stabilnost, odvojen admin, unicode
1.1[38] 29. jul. 2009. Agregati, testovi transakcija
1.2[39] 17. maj. 2010. Višestruke konekcije baze podataka, CSRF, validacija modela
1.3[40] 23. mar. 2011. Pregled klasa, statični fajlovi
1.4[41] 23. mar. 2012. Vremenske zone, testiranje u pregledaču, šabloni aplikacija [42]
1.5[43] 26. feb. 2013. Pajton 3 podrška, podesiv model korisnika
1.6[44] 6. nov. 2013. Posvećeno Malkolmu Trediniku, baza podataka upravljanja transakcijom, connection pooling.
1.7[45] 2. sep. 2014. Migracije, učitavanje aplikacija i konfiguracije. Dobijaće sigurnosne ispravke bar do oktobra 2015.
1.8[46] 1. apr. 2015. Nativna podrška za višestruke šablone. Izdanje sa dugačkom podrškom, podržana bar do aprila 2018

Vidi još uredi

Bibliografija uredi

Ova lista je izvučena iz Current Django Books Arhivirano na sajtu Wayback Machine (14. novembar 2015)

Reference uredi

  1. ^ „What does "Django" mean, and how do you pronounce it?”. Docs.djangoproject.com. Pristupljeno 5. 1. 2016. 
  2. ^ a b „Django FAQ about MVC in Django”. Docs.djangoproject.com. Pristupljeno 5. 1. 2016. 
  3. ^ a b Adrian Holovaty, Jacob Kaplan-Moss; et al.
  4. ^ „Pinterest: What technologies were used to make Pinterest?”. Quora.com. Pristupljeno 5. 1. 2016. 
  5. ^ "What Powers Instagram: Hundreds of Instances, Dozens of Technologies". 
  6. ^ „Python | MDN”. Developer.mozilla.org. 9. 1. 2014. Arhivirano iz originala 08. 02. 2012. g. Pristupljeno 5. 1. 2016. 
  7. ^ Opensource.washingtontimes.com.
  8. ^ "Scaling Django to 8 Billion Page Views". 
  9. ^ "20 Creative Websites Running Django" Arhivirano na sajtu Wayback Machine (14. jun 2013). 
  10. ^ „DjangoSuccessStoryBitbucket – Django”. Code.djangoproject.com. Arhivirano iz originala 20. 04. 2016. g. Pristupljeno 5. 1. 2016. 
  11. ^ a b "Django's History" Arhivirano na sajtu Wayback Machine (2. jul 2015).
  12. ^ „Announcing the Django Software Foundation”. Djangoproject.com. 17. 6. 2008. Pristupljeno 5. 1. 2016. 
  13. ^ "Security in Django".
  14. ^ Socol, James (2012).
  15. ^ „What is a reusable app?”. Django-reusable-app-docs.readthedocs.org. Pristupljeno 5. 1. 2016. 
  16. ^ » more grids... „djangopackages.com, an open source package repository for the Django framework”. Djangopackages.com. Pristupljeno 5. 1. 2016. 
  17. ^ „Django design philosophies”. Docs.djangoproject.com. Arhivirano iz originala 04. 03. 2016. g. Pristupljeno 5. 1. 2016. 
  18. ^ „Cookbook: Setting up Django”. Cherokee-project.com. Pristupljeno 5. 1. 2016. 
  19. ^ How to use Django with Apache and mod_wsgi Arhivirano na sajtu Wayback Machine (8. mart 2013).
  20. ^ „Manfre / django-mssql / source / — Bitbucket”. Bitbucket.org. Pristupljeno 5. 1. 2016. 
  21. ^ „ibmdb/python-ibmdb ¡ GitHub”. Code.google.com. Pristupljeno 5. 1. 2016. 
  22. ^ „sqlany-django - SQL Anywhere Database Backend for Django - Google Project Hosting”. Code.google.com. Pristupljeno 5. 1. 2016. 
  23. ^ „maxirobaina/django-firebird ¡ GitHub”. Github.com. Pristupljeno 5. 1. 2016. 
  24. ^ „Django non-rel”. Django non-rel. Pristupljeno 5. 1. 2016. 
  25. ^ „beachmachine/django-jython · GitHub”. Code.google.com. Pristupljeno 5. 1. 2016. 
  26. ^ Running Pure Django Projects on Google App Engine.
  27. ^ DjangoCon EU series Arhivirano na sajtu Wayback Machine (4. mart 2016), Lanyrd.com
  28. ^ DjangoCon US series Arhivirano na sajtu Wayback Machine (2. april 2016), Lanyrd.com
  29. ^ "DjangoCon".
  30. ^ DjangoCon AU 2013 Arhivirano na sajtu Wayback Machine (11. januar 2016).
  31. ^ „Django development IDEs discussion at Stackoverflow”. Stackoverflow.com. 29. 4. 2011. Pristupljeno 5. 1. 2016. 
  32. ^ „NetBeans Django Plugin”. Code.google.com. Pristupljeno 5. 1. 2016. 
  33. ^ "Introducing Django 0.90". Django weblog. Pristupljeno 2 February 2013.
  34. ^ "Django 0.91 released". Django weblog. Pristupljeno 2 February 2013.
  35. ^ "Introducing Django 0.95". Django weblog. Pristupljeno 2 February 2013.
  36. ^ "Announcing Django 0.96!". Django weblog. Pristupljeno 2 February 2013.
  37. ^ "Django 1.0 released!". Django weblog. Pristupljeno 2 February 2013.
  38. ^ "Django 1.1 released". Django weblog. Pristupljeno 2 February 2013.
  39. ^ "Django 1.2 released". Django weblog. Pristupljeno 2 February 2013.
  40. ^ "Django 1.3 released". Django weblog. Pristupljeno 2 February 2013.
  41. ^ "Django 1.4 released". Django weblog. Pristupljeno 2 February 2013.
  42. ^ „Django’s release process | Django documentation | Django”. Docs.djangoproject.com. Arhivirano iz originala 06. 03. 2016. g. Pristupljeno 5. 1. 2016. 
  43. ^ "Django 1.5 released" Django weblog. Pristupljeno 27 February 2013.
  44. ^ "Django 1.6 released" Django weblog. Pristupljeno 6 November 2013.
  45. ^ "Django 1.7 released" Django weblog. Pristupljeno 4 September 2014.
  46. ^ "Django 1.8 released" Django weblog. Pristupljeno 2 April 2015.

Spoljašnje veze uredi