Django (web euskarria)

**Django** Python lengoaia bidez idatzitako web garapenerako *framework* irekia eta librea da. Hasieran Kansas estatuko Lawrence hiriko World Company enpresarentzat garatu zen, albisteetarako web orriak kudeatzeko helburuarekin. 2005eko uztailean kaleratu zen jendaurrean, BSD lizentziapean. Izena Django Reinhardt jazz gitarristatik hartu zuen.

Django-k *Model–Template–View* ( euskaraz,  Txantiloi-bistako eredua) arkitektura-eredua jarraitzen du, *Model–View–Controller* (euskaraz, Kontrolatzaile-bistako eredua) ereduaren antzekoa. 2008ko ekainean, Django Software Foundation (DSF) izeneko fundazio berriak hartu zuen proiektuaren ardura, irabazi-asmorik gabeko erakunde independente gisa.

Djangoren helburu nagusia da webgune konplexuak sortzea erraztea. Horretarako, berrerabilgarritasuna, osagaien konektagarritasuna eta hedagarritasuna sustatzen ditu, baita garapen azkarra eta «ez errepikatu zeure burua» (''Don't Repeat Yourself'', DRY) printzipioa ere. Python programazio lengoaia erabiltzen da framework osoan —konfigurazioetan, fitxategietan eta datu-ereduetan barne—, horrek koherentzia eta sinpletasuna eskaintzen ditu garapenean.

## Historia 
Django 2003ko udazkenean sortu zen, Lawrence Journal-World egunkariko web programatzaileak, Adrian Holovaty eta Simon Willison, Python erabiltzen hasi zirenean aplikazioak garatzeko. Jacob Kaplan-Moss Djangoren garapenean goiz kontratatu zuten, Willisonen praktikak amaitu baino laster. 2005eko uztailean BSD lizentziapean publikoki argitaratu zen. Frameworkari Django Reinhardt gitarra-jotzailearen izena jarri zioten. Holovaty erromani jazz gitarra-jotzailea da, eta Reinhardten musikak inspiratuta konposatzen du neurri batean. 2008ko ekainean, Django Software Foundation (DSF) izeneko fundazio berri bat sortuko zela iragarri zen, etorkizunean Django mantenduko zuena.

## Ezaugarriak 
### Osagaiak 
Bere nomenklatura propioa izan arren, hala nola, HTTP erantzunak sortzen dituzten objektu deigarriei "views" (euskaraz, bistak) izena jartzea, Django framework nagusia MVC arkitektura gisa ikus daiteke. Honako hauek osatzen dute: mapaketa objektu-erlazional bat (ORM, ingelesez) datu-ereduen (Python klase gisa definituta) eta datu-base erlazional baten artean bitartekotza egiten duena ("Model"); HTTP eskaerak prozesatzeko sistema batek, web txantiloi sistema batekin ("View"); eta adierazpen erregularretan oinarritutako URL banatzaile batek ("Controller"). 

Framework nagusian honako hauek ere sartzen dira:

* Web-zerbitzari arin eta autonomo bat garapenerako eta probarako.
* Formularioen serializazio eta balidazio sistema bat, HTML formularioen eta datu-basean gordetzeko egokiak diren balioen artean itzuli dezakeena.
* Txantiloi sistema bat, programazio objektu-orientatutik mailegutako herentzia kontzeptua erabiltzen duena.
* Cache framework bat, hainbat cache metodoetako edozein erabil dezakeena.
* Middleware klaseen laguntza, eskaeren prozesamenduaren hainbat fasetan esku hartu eta funtzio pertsonalizatuak gauzatu ditzaketenak.
* Barne banatzaile sistema bat, aplikazio baten osagaiek aurrez definitutako seinalearen bidez elkarri gertaerak jakinaraztea ahalbidetzen duena.
* Internazionalizazio sistema bat, Djangoren osagaien itzulpenak hainbat hizkuntzatara barne.
* Serializazio sistema bat, Django eredu instantzien XML eta/edo JSON irudikapenak ekoizteko eta irakurtzeko gai dena.
* Txantiloi motorraren gaitasunak zabaltzeko sistema bat.
* Pythonen integratutako unitate proba frameworkerako interfaze bat.

### Aplikazio paketeak 
Django banaketa nagusiak aplikazio kopuru bat ere biltzen ditu bere "contrib" paketean, besteak beste:

* Autentifikazio-sistema hedagarri bat.
* Administrazio-interfaze dinamikoa.
* RSS eta Atom sindikazio-jarioak sortzeko tresnak.
* "Sites" framework bat, Django instalazio bakar batek hainbat webgune exekutatzea ahalbidetzen duena, bakoitza bere eduki eta aplikazioekin.
* Webgune-mapak (ingelesez, sitemap) sortzeko tresnak.
* Integratutako arintzea cross-site request forgery, cross-site scripting, SQL injekzioa, pasahitzen haustura eta beste web eraso tipikoentzat, gehienak lehenespenez aktibatuta.
* Informazio geografiko sistemen (GIS) aplikazioak sortzeko framework bat.

### Hedagarritasuna 
Djangoren konfigurazio-sistemak hirugarrenen kodea proiektu arrunt batean konektatzea ahalbidetzen du, aplikazio berrerabilgarriaren konbentzioei jarraitzen badie. 5.000 pakete baino gehiago daude eskuragarri frameworkaren jatorrizko portaera zabaltzeko, jatorrizko tresnak jorratu ez zituen arazoetarako irtenbideak eskainiz: erregistroa, bilaketa, APIaren hornidura eta kontsumoa, CMS (euskaraz, Eduki-kudeaketako Sistema), etab.

Hedagarritasun hori, hala ere, barne osagaien mendekotasunek arintzen dute. Django filosofiak akoplamendu askea inplikatzen duen bitartean, txantiloi iragazkiak eta etiketak motor-inplementazio bat suposatzen dute, eta, auth eta admin aplikazio paketedunek barne, ORM erabiltzea eskatzen dute. Filtro edo aplikazio paketatu horiek ez dira derrigorrezkoak Django proiektu bat martxan jartzeko; hala ere, aplikazio berrerabilgarriek askotan horiek behar izaten dituzte. Horrek garatzaileak Django bere ekosistema estandarraren parte gisa gomendatzen eta mantentzen dituen osagai, liburutegi eta konfigurazioen multzoa erabiltzen jarraitzera bultzatzen ditu, ekosistemako aplikazioek eskaintzen dituzten onura guztiak baliatu ahal izateko.

### Zerbitzariaren antolakuntza 
Django ASGI edo WSGI bateragarriak diren web-zerbitzarietan exekutatu daiteke. Djangok ofizialki bost datu-base backend onartzen ditu: PostgreSQL, MySQL, MariaDB, SQLite, eta Oracle. Microsoft SQL Server mssql-djangorekin erabil daiteke.

## Bertsioen historia 
Django taldeak noizbehinka zenbait argitalpen "epe luzerako laguntza" (LTS, ingelesez) argitalpen gisa izendatuko ditu. LTS argitalpenek segurtasun eta datu-galera konponketak jasotzen dituzte denbora jakin batean, normalean 3 urte edo gehiago. Ondorengo argitalpenen erritmoa edozein dela ere, LTS bertsioek konponketak jasotzen jarraitzen dute.

## Komunitatea 
### DjangoCon 
Django garatzaile eta erabiltzaileentzako urteroko konferentzia bat dago, "DjangoCon" izenekoa, 2008ko irailetik aurrera egiten dena. DjangoCon urtero egiten da Europan, maiatzean edo ekainean; beste bat Estatu Batuetan egiten da abuztuaren edo irailean, hiri desberdinetan.

### Estatu Batuak 
* 2012ko DjangoCon Washington, D.C.-n egin zen, irailaren 3tik 8ra.
* 2013ko DjangoCon Chicagon egin zen Hyatt Regency Hotel-ean eta konferentzia osteko Sprint-ak Digital Bootcamp-en, ordenagailu prestakuntza zentroan, antolatu ziren.
* 2014ko DjangoCon US Portlandera itzuli zen, OR, abuztuaren 30etik irailaren 6ra.
* 2015eko DjangoCon US Austin-en egin zen, TX, irailaren 6tik 11ra AT&T Executive Center-en.
* 2016ko DjangoCon US Philadelphian egin zen, PA, Pennsylvania Unibertsitateko Wharton School-en, uztailaren 17tik 22ra.
* 2017ko DjangoCon US Spokane-n egin zen, WA; 2018an DjangoCon US San Diegon egin zen, CA. DjangoCon US 2019 berriro San Diegon egin zen, CA, irailaren 22tik 27ra.
* DjangoCon 2021 birtualki egin zen eta 2022an, DjangoCon US San Diegora itzuli zen urriaren 16tik 21era. DjangoCon US 2023 urriaren 16tik 20ra egin zen Durham, NC kongresu zentroan eta DjangoCon US 2024 Durhamen ere egin zen irailaren 22tik 27ra.
* DjangoCon US 2025 irailaren 8tik 12ra egitea programatuta dago Chicagon, Illinois.

### Europa 
* DjangoCon Europa 2012 Zurichen antolatu zen, Suitzan.
* 2017ko konferentzia Florentzian bildu zen, Italian.
* 2018an, ekitaldia Heidelbergen egin zen, Alemanian.
* DjangoCon Europa 2019 Kopenhagen egin zen, Danimarkan.
* 2020ko edizioa ekitaldi birtual gisa egin zen.
* 2021ean, DjangoCon Europa birtualki egin zen COVID-19 pandemiagatik.
* 2022ko konferentzia Porton antolatu zen, Portugalen.
* 2023an, Edinburgh izan zen DjangoCon Europaren egoitza, Eskozian.
* 2024an, konferentzia Vigon antolatu zen, Espainian.
* DjangoCon Europaren 2025eko edizioa Dublinen egin zen, Irlandan, apirilaren 23tik 27ra.

### Australia 
Django mini-konferentziak normalean urtero egiten dira Australian Python Conference 'PyCon AU'-ren parte gisa. Lehenago, mini-konferentzia hauek hemen egin dira:

* Hobart, Australia, 2013ko uztailan.
* Brisbane, Australia, 2014 eta 2015eko abuztuan.
* Melbourne, Australia 2016 eta 2017ko abuztuan.
* Sydney, Australia, 2018 eta 2019ko abuztuan.

### Afrika 
Afrikan egindako lehen DjangoCon konferentzia Tanzanian, Zanzibarren egin zen 2023ko azaroaren 6tik 11ra. Ekitaldiak 22 herrialdeetako 200 parte-hartzaile inguru jaso zituen, 103 emakume barne. Konferentziak 26 hitzaldi izan zituen software-garapena, hezkuntza, ibilbideak, irisgarritasuna eta nekazaritza bezalako gaiei buruz, maiz Afrika kontinenteko ikuspegiak nabarmenduz. Konferentziaren etorkizuneko edizioak planifikatuta daude, xehetasunak webgune ofizialean eskuragarri daudelarik.

### Komunitate taldeak eta programak 
Djangok erabiltzaile-taldeak eta topaketak sortu ditu mundu osoan. Talde aipagarri bat Django Girls erakundea da, Polonian hasi zena baina orain 91 herrialdetakoak dituena.

Beste ekimen bat Djangonaut Space da, Django ekosistemako kolaboratzaile berriei laguntza emateko mentoretza programa bat. Programak mentor esperimentatuak garatzaileekin parekatzen ditu Django eta bere komunitateari ekarpenik esanguratsuak egiten gidatzeko. Epe luzerako inplikazioa, inklusioita eta kode irekiko garapen kolaboratzailea azpimarratzen du.

## Beste hizkuntzekiko loturak 
Programatzaileek Djangoren txantiloi-motorraren diseinua Pythonetik beste hizkuntzetara igaro dute, plataforma anitzeko laguntza egokia eskainiz. Aukera horietako batzuk portu zuzenagoak dira; beste batzuek, Djangok inspiratuta eta haren kontzeptuak mantenduz, askatasuna hartzen dute Djangoren diseinutik aldentzeko, hala nola:

* Liquid Ruby-rako
* Template::Swig Perl-erako
* Twig PHP eta JavaScript-erako
* Jinja Python-erako
* ErlyDTL Erlang-erako

## Django web-euskarrian oinarritutako eduki-kudeketa sistemak 
Django framework gisa CMS edo eduki-kudeaketa sistema osoa eraikitzeko gai da. Hurrengo sistemak Djangon oinarritzen dira:

* Django CMS
* Wagtail
* Mezzanine
## Bibliografia 
* 
* 
* 
* 
* 

## Erreferentziak 
## Kanpo estekak 
*  Django Proiektua
*  Django instalatzailea 
*  Django komunitateko wiki eta kode biltegia
*  Django Software Foundation