# Τεκμηρίωση του Django - 1.10.7

# Συχνές Ερωτήσεις: Γενικά

## Γιατί υπάρχει το Django;

Το Django αναπτύχθηκε από μια ανάγκη πρακτικής φύσεως: Το τμήμα του Web – World Online – της εταιρίας World Company που διατηρεί τρεις εφημερίδες, είναι υπεύθυνο για το χτίσιμο εντατικών Web applications μέσα σε δημοσιογραφικές προθεσμίες. Σε ένα γρήγορα μεταβαλλόμενο περιβάλλον η World Online έχει, συχνά, μόνο μερικές ώρες για να μετατρέψει ένα Web application από μια έννοια σε κάτι που να ανέβει στο internet για το ευρύ κοινό.

Την ίδια στιγμή, οι Web developers της World Online είναι τελειομανείς όταν πρόκειται να ακολουθήσουν καλές πρακτικές του Web development.

Το φθινόπωρο του 2003, οι developers της World Online (Adrian Holovaty και Simon Willison) άφησαν πίσω τους την PHP και ξεκίνησαν να χρησιμοποιούν την Python για να αναπτύσσουν ιστοσελίδες. Καθώς έχτιζαν εντατικές, interactive ιστοσελίδες, όπως το Lawrence.com, ξεκίνησαν σιγά-σιγά να δημιουργούν ένα γενικό Web development framework το οποίο τους βοήθησε να χτίζουν Web applications όλο και πιο γρήγορα. Άρχισαν να ασχολούνται όλο και πιο εντατικά με το framework προσθέτοντας του βελτιώσεις και features για πάνω από δύο χρόνια.

Το καλοκαίρι του 2005, η World Online αποφάσισε να μετατρέψει αυτό το λογισμικό σε ανοιχτού κώδικα, το Django. Το Django δεν θα ήταν δυνατόν να δημιουργηθεί χωρίς την πληθώρα ανοικτού λογισμικού projects – όπως Apache, Python, και PostgreSQL – και είμαστε ενθουσιασμένοι που μπορέσαμε να δώσουμε κάτι πίσω στην κοινότητα.

## Τι σημαίνει “Django” και πως προφέρεται;

Το Django ονομάστηκε έτσι από τον Django Reinhardt, έναν κιθαρίστα της jazz manouche σκηνής από τη δεκαετία του 1930 μέχρι τις αρχές της δεκαετίας του 1950. Μέχρι σήμερα θεωρείται ένας από τους μεγαλύτερους κιθαρίστες όλων των εποχών.

Ακούστε τη μουσική του. Θα σας αρέσει.

Το Django προφέρεται ως JANG-oh. Κάνει ρίμα με το FANG-oh. Το “D” δεν προφέρεται.

Έχουμε, επίσης, ηχογραφήσει την προφορά του.

## Είναι το Django σταθερό;

Ναι, είναι αρκετά σταθερό. Εταιρίες όπως Disqus, Instagram, Pinterest, και Mozilla χρησιμοποιούν το Django για πολλά χρόνια. Οι ιστοσελίδες που χτίστηκαν βάση του Django έχουν επισκεψιμότητα σε ώρα αιχμής πάνω από 50 χιλιάδες requests το δευτερόλεπτο.

## Κλιμακώνεται το Django;

Φυσικά. Εν συγκρίσει με το χρόνο ανάπτυξης, το hardware είναι φθηνό και επομένως το Django είναι σχεδιασμένο να εκμεταλλεύεται όσο hardware του προσθέσετε.

Το Django χρησιμοποιεί μια αρχιτεκτονική “τίποτα κοινόχρηστο”, που σημαίνει ότι μπορείτε να προσθέσετε hardware σε οποιοδήποτε επίπεδο – database servers, caching server ή Web/application servers.

Το framework ξεχωρίζει πολύ καθαρά τα components μεταξύ τους όπως το επίπεδο του database και του application. Επίσης, δίνεται με ένα πολύ απλό αλλά και ισχυρό παράλληλα cache framework.

## Ποιος είναι πίσω απ’ αυτό;

Το Django αναπτύχθηκε, αρχικά, στο World Online, το Web τμήμα μιας εφημερίδας στο Lawrence, στην πολιτεία Kansas, στις ΗΠΑ. Τώρα, πίσω από το Django είναι μια ομάδα από διεθνείς εθελοντές.

## Ποιες ιστοσελίδες χρησιμοποιούν το Django;

Η ιστοσελίδα DjangoSites.org προβάλλει μια ολοένα αυξανόμενη λίστα με ιστοσελίδες που χρησιμοποιούν το Django ως backend.

## Το Django φαίνεται να είναι ένα MVC framework, αλλά εσείς καλείτε τον Controller ως “view” και το View ως “template”. Γιατί δεν χρησιμοποιείτε τα συνήθη ονόματα;

Ξέρετε, τα συνήθη ονόματα είναι διαπραγματεύσιμα.

Στη δική μας ερμηνεία του MVC, το “view” περιγράφει τα δεδομένα τα οποία προβάλλονται στον χρήστη. Δεν είναι απαραίτητα το πως δείχνουν τα δεδομένα αλλά ποια δεδομένα προβάλλονται. Το view περιγράφει ποια data βλέπετε, όχι το πως τα βλέπετε. Αποτελεί μια λεπτή διάκριση.

Επομένως, στη δικιά μας περίπτωση, ένα “view” είναι μια Python callback συνάρτηση για ένα συγκεκριμένο URL, επειδή αυτή η callback συνάρτηση περιγράφει ποια data θα προβληθούν.

Επιπροσθέτως, είναι λογικό να διαχωρίζουμε το περιεχόμενο από την παρουσίαση – όπου κάπου εδώ έρχεται η έννοια των templates. Στο Django, το “view” περιγράφει ποια data θα προβληθούν, αλλά ένα view συνήθως αναθέτει σε ένα template την προβολή των δεδομένων – το πως, δηλαδή, θα προβληθούν τα data.

Σύμφωνα με τα παραπάνω, που κολλάει ο “controller”; Στην περίπτωση του Django, είναι μάλλον το ίδιο το framework: ο μηχανισμός που στέλνει το request στο κατάλληλο view, σύμφωνα με τη διαμόρφωση των Django URLs.

Αν διψάτε για ακρωνύμια, θα λέγατε μάλλον ότι το Django είναι ένα “MTV” framework – δηλαδή, “model”, “template”, και “view.” Αυτή η ανάλυση είναι πιο κατανοητή.

Τελικώς, το μόνο που μετράει είναι να γίνει η δουλειά. Ανεξαρτήτως το πως ονομάζονται τα πράγματα, το Django κάνει τη δουλειά με τέτοιο τρόπο που είναι ο πιο λογικός σε εμάς.

## Το <Framework X> κάνει το <feature Y> – γιατί όχι το Django?

Γνωρίσουμε πολύ καλά ότι πέρα από το Django, υπάρχουν καταπληκτικά Web frameworks εκεί έξω και ότι δεν είμαστε αντίθετοι στην ιδέα να δανειστούμε ιδέες. Ωστόσο, το Django αναπτύχθηκε ακριβώς επειδή δεν είμασταν ικανοποιημένοι με το ήδη υπάρχον καθεστώς, γι’ αυτό παρακαλούμε να ξέρετε ότι η λογική του “αφού το <Framework X> το κάνει αυτό” δεν είναι αρκετή για να υλοποιηθεί το συγκεκριμένο feature στο Django.

## Γιατί γράψατε το Django από την αρχή, αντί να χρησιμοποιήσετε ήδη υπάρχουσες Python βιβλιοθήκες;

Πριν μερικά χρόνια, όταν πρωτοξεκίνησε να γράφεται το Django, ο Adrian και ο Simon αφιέρωσαν αρκετό χρόνο εξερευνώντας τα διάφορα Python Web frameworks τα οποία ήταν διαθέσιμα.

Κατά τη γνώμη μας, κανένα από αυτά δεν μας κάλυπτε.

Είμαστε επιλεκτικοί. Μπορείτε, επίσης, να μας προσφωνείτε τελειομανείς. (με προθεσμίες.)

Με τον καιρό,συναντήσαμε κάποιες ανοικτού λογισμικού βιβλιοθήκες οι οποίες έκαναν πράγματα τα οποία είχαμε ήδη υλοποιήσει. Ήταν καθησυχαστικό να βλέπεις άλλους ανθρώπους να λύνουν παρόμοια προβλήματα με παρόμοιους τρόπους αλλά ήταν ήδη αργά: είχαμε ήδη γράψει, τεστάρει και υλοποιήσει τα δικά μας κομμάτια του framework με ποικίλες ρυθμίσεις σε παραγωγικό περιβάλλον – και ο κώδικας μας ικανοποιούσε τις ανάγκες μας εξαιρετικά.

Σε πολλές περιπτώσεις, ωστόσο, βρήκαμε ότι κάποια frameworks/tools είχαν αναπόφευκτα μερικά θεμελιώδη μοιραία ελαττώματα που μας έφεραν τάση προς εμετό. Κανένα εργαλείο δεν ταιριάζει στις φιλοσοφίες μας 100%.

Όπως είπαμε: είμαστε επιλεκτικοί.

Έχουμε τεκμηριώσει τις φιλοσοφίες μας στο άρθρο φιλοσοφίες σχεδιασμού.

## Είναι το Django ένα content-management-system (CMS);

Όχι, το Django δεν είναι ένα CMS ή κάποιο είδος του στυλ “με το κλειδί στο χέρι”. Είναι ένα Web framework. Όπερ σημαίνει ότι είναι ένα προγραμματιστικό εργαλείο το οποίο σας επιτρέπει να χτίζετε ιστοσελίδες.

Για παράδειγμα, δεν βγάζει και πολύ νόημα να συγκρίνετε π.χ το Django με το Drupal, επειδή το Django είναι κάτι που χρησιμοποιείς για να δημιουργήσεις πράγματα όπως το Drupal.

Φυσικά, το αυτοματοποιημένο admin site του Django είναι φανταστικό και σας γλυτώνει από απίστευτο χρόνο – αλλά το admin site είναι ένα module του Django framework. Επιπροσθέτως, παρόλο που το Django έχει ιδιαίτερες ανέσεις για να χτίζει κανείς εφαρμογές που θυμίζουν “CMS”, αυτό δε σημαίνει ότι δεν μπορεί να χρησιμοποιηθεί για εφαρμογές που δεν θυμίζουν “CMS” (οτιδήποτε και αν σημαίνει αυτό!).

## Πως μπορώ να κατεβάσω το Django documentation για να το διαβάζω εκτός δικτύου;

Τα Django docs είναι διαθέσιμα στο φάκελο `docs` κάθε Django tarball διανομής. Αυτά τα έγγραφα είναι γραμμένα σε reST (reStructuredText) μορφή και κάθε αρχείο κειμένου αντιστοιχεί σε μια σελίδα στην επίσημη ιστοσελίδα του Django.

Επειδή το documentation είναι αποθηκευμένο σε revision control, μπορείτε να περιηγηθείτε στις αλλαγές που γίνονται στο documentation όπως ακριβώς συμβαίνει και με τις αλλαγές που γίνονται στον κώδικα.

Τεχνικώς, τα docs της ιστοσελίδας του Django παράγονται από τις τελευταίες development εκδόσεις αυτών των reST αρχείων, επομένως τα docs στο revision control προσφέρουν περισσότερη πληροφορία από αυτή που έρχεται με την τελευταία διανομή του Django.

## Πως μπορώ να αναφερθώ στο Django;

Είναι δύσκολο να δώσουμε μία επίσημη μορφή αναφοράς για δύο λόγους: οι μορφές αναφοράς διαφέρουν σημαντικά ανάμεσα σε εκδόσεις και τα στάνταρντ των αναφορών για το λογισμικό είναι ακόμη υπό διαπραγμάτευση.

Για παράδειγμα, το APA style, θα υπαγόρευε την αναφορά κάπως έτσι:

    Django (Version 1.5) [Computer Software]. (2013). Retrieved from https://djangoproject.com.

Ωστόσο, ο μόνος αληθινός οδηγός είναι αυτό που θα αποδεχόταν ο εκδότης σας. Οπότε, δημιουργήστε ένα αντίγραφο από αυτές τις κατευθυντήριες γραμμές και γεμίστε τα κενά στο μέγιστο των δυνατοτήτων σας.

Αν ο οδηγός του στυλ αναφοράς σας απαιτεί όνομα εκδότη, τότε χρησιμοποιήστε το “Django Software Foundation”.

Αν χρειάζεστε τοποθεσία έκδοσης, χρησιμοποιήστε την “Lawrence, Kansas”.

Αν χρειάζεστε τοποθεσία ιστοσελίδας, χρησιμοποιήστε την https://djangoproject.com.

Αν χρειάζεστε όνομα, χρησιμοποιήστε απλά το “Django”.

Αν χρειάζεστε ημερομηνία έκδοσης, χρησιμοποιήστε το έτος της διανομής της έκδοσης Django που χρησιμοποιείτε (πχ 2016 για την έκδοση v1.10)