Συχνές Ερωτήσεις: Χρησιμοποιώντας το DjangoLink to this heading
Why do I get an error about importing DJANGO_SETTINGS_MODULE?Link to this heading
Σιγουρευτείτε ότι:
The environment variable
DJANGO_SETTINGS_MODULEis set to a fully-qualified Python module (i.e.mysite.settings).Το παραπάνω module (π.χ «mysite.settings») βρίσκεται μέσα στο
sys.path(τοimport mysite.settingsθα πρέπει να δουλεύει).The module doesn’t contain syntax errors.
Δεν αντέχω τη γλώσσα των templates σας. Είμαι υποχρεωμένος να τη χρησιμοποιώ;Link to this heading
Τυγχάνει να πιστεύουμε ότι η μηχανή των templates μας είναι ότι καλύτερο συνέβη μετά το μπέϊκον αλλά αναγνωρίζουμε την δυνατότητα επιλογής ανάμεσα σε γλώσσες templates η οποία είναι καθαρά υποκειμενική. Το Django δεν απαιτεί να χρησιμοποιήσετε τη δική του template γλώσσα, οπότε αν θέλετε μπορείτε να χρησιμοποιήσετε τις Jinja2, Mako, ή οποιαδήποτε άλλη επιθυμείτε.
Είναι υποχρεωτικό να χρησιμοποιώ το δικό σας επίπεδο μοντέλων/βάσεις δεδομένων;Link to this heading
Όχι. Όπως ακριβώς με το σύστημα των templates έτσι και το επίπεδο των μοντέλων/βάσεις δεδομένων είναι απόλυτα διαχωρισμένο από το υπόλοιπο framework.
Η μοναδική εξαίρεση είναι η εξής: Αν χρησιμοποιήσετε μια διαφορετική βιβλιοθήκη βάσης δεδομένων, δε θα έχετε στη διάθεση σας το αυτόματα-παραγόμενο Django admin site. Αυτή η εφαρμογή (admin site) είναι συνδεδεμένη με το επίπεδο της βάσης δεδομένων του Django.
Πως χρησιμοποιώ τα πεδία ImageField και FileField;Link to this heading
Απαιτούνται μερικά βήματα για να επωφεληθείτε των πεδίων FileField ή/και ImageField που είναι δηλωμένα σε ένα μοντέλο:
In your settings file, you’ll need to define
MEDIA_ROOTas the full path to a directory where you’d like Django to store uploaded files. (For performance, these files are not stored in the database.) DefineMEDIA_URLas the base public URL of that directory. Make sure that this directory is writable by the web server’s user account.Προσθέστε το πεδίο
FileFieldή/και τοImageFieldστο μοντέλο σας, προσδιορίζοντας το όρισμαupload_toπροκειμένου να προσδιοριστεί ο υπο-φάκελος τουMEDIA_ROOTπου θα χρησιμοποιηθεί για τα ανεβασμένα αρχεία σας. Αν π.χ έχετε ορίσει την επιλογήMEDIA_ROOTως «mysite/media_remote/» και το όρισμαupload_toως «images/avatars/» τότε όλες οι εικόνες θα αποθηκευτούν στη τοποθεσία «mysite/media_remote/images/avatars/».Το μόνο που θα αποθηκευτεί στη βάση δεδομένων σας είναι το μονοπάτι στο αρχείο (σχετικό του
MEDIA_ROOT). Το πιο πιθανό είναι να χρησιμοποιήσετε το βολικό attributeurlπου σας παρέχει το Django. Για παράδειγμα, αν τοImageFieldονομάζεταιmug_shot, μπορείτε να δείτε το απόλυτο μονοπάτι (absolute path) της εικόνας σας, στο template, ως{{ object.mug_shot.url }}.
Πως μπορώ να κάνω μια μεταβλητή ορατή σε όλα τα templates;Link to this heading
Sometimes your templates all need the same thing. A common example would be dynamically generated menus. At first glance, it seems logical to add a common dictionary to the template context.
The best way to do this in Django is to use a RequestContext. Details on
how to do this are here: Using RequestContext.