Συχνές Ερωτήσεις: Χρησιμοποιώντας το 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 που είναι δηλωμένα σε ένα μοντέλο:

  1. 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.) Define MEDIA_URL as the base public URL of that directory. Make sure that this directory is writable by the web server’s user account.
  2. Προσθέστε το πεδίο FileField ή/και το ImageField στο μοντέλο σας, προσδιορίζοντας το όρισμα upload_to προκειμένου να προσδιοριστεί ο υπο-φάκελος του MEDIA_ROOT που θα χρησιμοποιηθεί για τα ανεβασμένα αρχεία σας. Αν π.χ έχετε ορίσει την επιλογή MEDIA_ROOT ως «mysite/media_remote/» και το όρισμα upload_to ως «images/avatars/» τότε όλες οι εικόνες θα αποθηκευτούν στη τοποθεσία «mysite/media_remote/images/avatars/».
  3. Το μόνο που θα αποθηκευτεί στη βάση δεδομένων σας είναι το μονοπάτι στο αρχείο (σχετικό του MEDIA_ROOT). Το πιο πιθανό είναι να χρησιμοποιήσετε το βολικό attribute url που σας παρέχει το 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.