Συχνές Ερωτήσεις: Χρησιμοποιώντας το Django¶
Why do I get an error about importing DJANGO_SETTINGS_MODULE
?¶
Σιγουρευτείτε ότι:
- The environment variable
DJANGO_SETTINGS_MODULE
is 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 σας. Είμαι υποχρεωμένος να τη χρησιμοποιώ;¶
Τυγχάνει να πιστεύουμε ότι η μηχανή των templates μας είναι ότι καλύτερο συνέβη μετά το μπέϊκον αλλά αναγνωρίζουμε την δυνατότητα επιλογής ανάμεσα σε γλώσσες templates η οποία είναι καθαρά υποκειμενική. Το Django δεν απαιτεί να χρησιμοποιήσετε τη δική του template γλώσσα, οπότε αν θέλετε μπορείτε να χρησιμοποιήσετε τις Jinja2, Mako, ή οποιαδήποτε άλλη επιθυμείτε.
Είναι υποχρεωτικό να χρησιμοποιώ το δικό σας επίπεδο μοντέλων/βάσεις δεδομένων;¶
Όχι. Όπως ακριβώς με το σύστημα των templates έτσι και το επίπεδο των μοντέλων/βάσεις δεδομένων είναι απόλυτα διαχωρισμένο από το υπόλοιπο framework.
Η μοναδική εξαίρεση είναι η εξής: Αν χρησιμοποιήσετε μια διαφορετική βιβλιοθήκη βάσης δεδομένων, δε θα έχετε στη διάθεση σας το αυτόματα-παραγόμενο Django admin site. Αυτή η εφαρμογή (admin site) είναι συνδεδεμένη με το επίπεδο της βάσης δεδομένων του Django.
Πως χρησιμοποιώ τα πεδία ImageField και FileField;¶
Απαιτούνται μερικά βήματα για να επωφεληθείτε των πεδίων FileField
ή/και ImageField
που είναι δηλωμένα σε ένα μοντέλο:
- In your settings file, you’ll need to define
MEDIA_ROOT
as 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_URL
as 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;¶
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.