Django (web framework)

Το **Django** (προφέρεται: ˈdʒæŋɡoʊ) είναι ένας ελεύθερος και ανοικτού κώδικα (web framework), βασισμένος στη γλώσσα Python, ο οποίος εκτελείται σε (web server). Ακολουθεί το αρχιτεκτονικό πρότυπο **model–template–views** (MTV). Συντηρείται από το Django Software Foundation (DSF), έναν ανεξάρτητο μη κερδοσκοπικό οργανισμό που εδρεύει στις ΗΠΑ.

Ο πρωταρχικός στόχος του Django είναι να διευκολύνει τη δημιουργία σύνθετων ιστοτόπων που βασίζονται σε βάσεις δεδομένων. Ο σκελετός δίνει έμφαση στην επαναχρησιμοποιησιμότητα και τη δυνατότητα σύνδεσης (pluggability) των στοιχείων του, στην ελαχιστοποίηση του κώδικα, στη χαμηλή σύζευξη (low coupling), στην ταχεία ανάπτυξη και στην αρχή «μην επαναλαμβάνεσαι» (DRY). Η Python χρησιμοποιείται παντού, ακόμη και για τις ρυθμίσεις, τα αρχεία και τα μοντέλα δεδομένων.

Επιπλέον, το Django παρέχει μια προαιρετική διεπαφή διαχείρισης για λειτουργίες CRUD (δημιουργία, ανάγνωση, ενημέρωση και διαγραφή), η οποία παράγεται δυναμικά μέσω ενδοσκόπησης (introspection) και διαμορφώνεται μέσω μοντέλων διαχείρισης.

Ορισμένοι γνωστοί ιστότοποι που χρησιμοποιούν το Django περιλαμβάνουν το Instagram, το Mozilla, το Disqus, το Bitbucket, το Nextdoor και το Clubhouse.

## Ιστορία
Το Django δημιουργήθηκε το φθινόπωρο του 2003, όταν οι προγραμματιστές ιστού της εφημερίδας *Lawrence Journal-World*, Adrian Holovaty και Simon Willison, άρχισαν να χρησιμοποιούν την Python για την κατασκευή εφαρμογών. Ο Jacob Kaplan-Moss προσλήφθηκε νωρίς κατά την ανάπτυξη του Django, λίγο πριν ολοκληρωθεί η πρακτική άσκηση του Willison. Κυκλοφόρησε δημόσια υπό την Άδεια BSD τον Ιούλιο του 2005. Ο σκελετός πήρε το όνομά του από τον κιθαρίστα Τζάνγκο Ράινχαρτ. Ο Holovaty είναι παίκτης κιθάρας romani jazz (τσιγγάνικη τζαζ), εμπνευσμένος εν μέρει από τη μουσική του Ράινχαρτ.

Τον Ιούνιο του 2008, ανακοινώθηκε ότι το νεοσύστατο Ίδρυμα Λογισμικού Django (Django Software Foundation - DSF) θα αναλάμβανε τη συντήρηση του Django στο μέλλον.

## Χαρακτηριστικά
### Συστατικά μέρη

Παρά τη δική του ονοματολογία, όπως η ονομασία των (callable objects) που παράγουν τις αποκρίσεις HTTP ως «views» (όψεις), ο πυρήνας του Django μπορεί να θεωρηθεί ως αρχιτεκτονική MVC. Αποτελείται από:
* Έναν αντικειμενοστρεφή χαρτογράφο συσχετίσεων (ORM) που μεσολαβεί μεταξύ των μοντέλων δεδομένων (που ορίζονται ως κλάσεις Python) και μιας σχεσιακής βάσης δεδομένων («**M**odel»).
* Ένα σύστημα επεξεργασίας αιτημάτων HTTP με ένα σύστημα προτύπων ιστού (web templating system) («**V**iew»).
* Έναν διανομέα URL (URL dispatcher) βασισμένο σε κανονικές εκφράσεις («**C**ontroller»).

Επίσης, στον πυρήνα περιλαμβάνονται:
* Ένας ελαφρύς και αυτόνομος web server για ανάπτυξη και δοκιμές.
* Ένα σύστημα σειριοποίησης και επικύρωσης φορμών που μεταφράζει μεταξύ φορμών HTML και τιμών κατάλληλων για αποθήκευση στη βάση δεδομένων.
* Ένα σύστημα προτύπων που χρησιμοποιεί την έννοια της κληρονομικότητας.
* Ένα πλαίσιο προσωρινής αποθήκευσης (caching).
* Υποστήριξη για κλάσεις ενδιάμεσου λογισμικού (middleware).
* Ένα σύστημα διεθνειοποίησης, συμπεριλαμβανομένων μεταφράσεων των ίδιων των συστατικών του Django σε διάφορες γλώσσες.

### Ενσωματωμένες εφαρμογές
Η κύρια διανομή του Django περιλαμβάνει έναν αριθμό εφαρμογών στο πακέτο «contrib», όπως:
* Ένα επεκτάσιμο σύστημα πιστοποίησης (authentication).
* Τη δυναμική διεπαφή διαχείρισης (admin interface).
* Εργαλεία για τη δημιουργία ροών RSS και Atom.
* Ενσωματωμένη προστασία από επιθέσεις CSRF, XSS, SQL injection και άλλες τυπικές επιθέσεις ιστού, οι περισσότερες από τις οποίες είναι ενεργοποιημένες από προεπιλογή.
* Ένα πλαίσιο για τη δημιουργία εφαρμογών γεωγραφικών πληροφοριών (GIS).

### Επεκτασιμότητα
Το σύστημα ρυθμίσεων του Django επιτρέπει την ενσωμάτωση κώδικα τρίτων σε ένα έργο. Περισσότερα από 5.000 πακέτα είναι διαθέσιμα για την επέκταση της συμπεριφοράς του σκελετού, παρέχοντας λύσεις για θέματα όπως η εγγραφή χρηστών, η αναζήτηση, η παροχή και κατανάλωση API και η διαχείριση περιεχομένου (CMS).

### Ρυθμίσεις διακομιστή
Το Django μπορεί να εκτελεστεί σε διακομιστές ιστού συμβατούς με ASGI ή WSGI. Υποστηρίζει επίσημα πέντε βάσεις δεδομένων: PostgreSQL, MySQL, MariaDB, SQLite και Oracle.

## Ιστορικό εκδόσεων

Η ομάδα ανάπτυξης του Django ορίζει κατά καιρούς ορισμένες κυκλοφορίες ως εκδόσεις «μακροχρόνιας υποστήριξης» (Long-term support - LTS). Οι εκδόσεις LTS λαμβάνουν διορθώσεις ασφαλείας και προστασίας δεδομένων για μια εγγυημένη χρονική περίοδο, συνήθως 3+ έτη, ανεξάρτητα από τον ρυθμό των επόμενων κυκλοφοριών.

## Κοινότητα

### DjangoCon
Το «DjangoCon» είναι ένα εξαμηνιαίο συνέδριο για προγραμματιστές και χρήστες του Django που πραγματοποιείται από τον Σεπτέμβριο του 2008. Διεξάγεται ετησίως στην Ευρώπη (Μάιο ή Ιούνιο) και αντίστοιχα στις Ηνωμένες Πολιτείες (Αύγουστο ή Σεπτέμβριο) σε διάφορες πόλεις.

Πρόσφατα συνέδρια περιλαμβάνουν:
* **DjangoCon Europe 2025:** Πραγματοποιήθηκε στο Δουβλίνο της Ιρλανδίας.
* **DjangoCon US 2025:** Πραγματοποιήθηκε στο Σικάγο των ΗΠΑ.

Επίσης, πραγματοποιούνται μικρότερα συνέδρια στην Αυστραλία (ως μέρος του PyCon AU) και στην Αφρική, με το πρώτο DjangoCon Africa να λαμβάνει χώρα στη Ζανζιβάρη της Τανζανίας το 2023.

### Ομάδες και προγράμματα κοινότητας
Το Django έχει γεννήσει πολυάριθμες ομάδες χρηστών παγκοσμίως. Μια αξιοσημείωτη οργάνωση είναι οι Django Girls, η οποία ξεκίνησε από την Πολωνία και πλέον διοργανώνει εργαστήρια προγραμματισμού για γυναίκες σε πάνω από 90 χώρες.

Μια άλλη πρωτοβουλία είναι το Djangonaut Space, ένα πρόγραμμα καθοδήγησης (mentorship) που στοχεύει στην υποστήριξη νέων συντελεστών στο οικοσύστημα του Django, συνδέοντάς τους με έμπειρους μέντορες.

## Μεταφορές σε άλλες γλώσσες
Προγραμματιστές έχουν μεταφέρει τη σχεδίαση της μηχανής προτύπων (template engine) του Django από την Python σε άλλες γλώσσες προγραμματισμού:
* Liquid για τη Ruby
* Swig για την Perl
* Twig για την PHP και τη JavaScript
* Jinja για την Python
* ErlyDTL για την Erlang

## Συστήματα CMS βασισμένα στο Django
Το Django, ως σκελετός γενικής χρήσης, είναι ικανό να αποτελέσει τη βάση για πλήρη Συστήματα Διαχείρισης Περιεχομένου (CMS). Ορισμένα γνωστά έργα CMS που βασίζονται στο Django είναι:
* Django CMS
* Wagtail
* Mezzanine

## Παραπομπές


## Εξωτερικοί σύνδεσμοι

* Ο επίσημος ιστότοπος του Django (Αγγλικά)

Κατηγορία:Python