Επιστροφή στο blog

Δημιουργία Μοντέλων Django: Ένας Οδηγός

Δημιουργία Μοντέλων Django: Ένας Οδηγός

Django είναι ένα πολύ γνωστό web framework για τη γρήγορη ανάπτυξη ασφαλών και εύκολα συντηρήσιμων ιστότοπων και εφαρμογών ιστού. Κατασκευασμένο με τη χρήση του Python, το Django απλοποιεί την ανάπτυξη ιστού, επιτρέποντας περισσότερο χρόνο και εστίαση στη συγγραφή εφαρμογών χωρίς να ανακαλύπτετε ξανά τον τροχό κάθε φορά. Το Django είναι ένα δωρεάν έργο ανοιχτού κώδικα με ισχυρή επίσημη τεκμηρίωση, εξαιρετική υποστήριξη από την κοινότητα και άφθονη δωρεάν και επί πληρωμή υποστήριξη.

Σε αυτόν τον οδηγό, θα εμβαθύνουμε στη δημιουργία μοντέλων Django. Στο Django, ένα μοντέλο είναι η βασική πηγή πληροφοριών για τα δεδομένα σας. Τα μοντέλα περιγράφουν τα πεδία και τη συμπεριφορά των δεδομένων που πρόκειται να αποθηκευτούν. Το Django χρησιμοποιεί το μοντέλο για να δημιουργήσει τους πίνακες της βάσης δεδομένων χρησιμοποιώντας ORM (Object Relational Mapping), που αναφέρονται επίσης ως μοντέλα.

Προαπαιτούμενα

Εργαζόμαστε σε ένα λειτουργικό σύστημα βασισμένο στο Unix, κατά προτίμηση σε έναν Ubuntu 20.04 cloud server ως το σύστημα στο οποίο κάναμε τις δοκιμές. Εάν θέλετε να εγκαταστήσετε το Django σε παρόμοιο περιβάλλον, ανατρέξτε στον οδηγό μας, «Πώς να εγκαταστήσετε το Django και να ρυθμίσετε ένα περιβάλλον ανάπτυξης στο Ubuntu 20.04.”

Βήμα 1. Περιβάλλον ανάπτυξης Python

Το Django είναι βασισμένο στην Python. Επομένως, χρειαζόμαστε ένα ισχυρό περιβάλλον ανάπτυξης Python με όλα τα απαραίτητα εργαλεία για να εργαστούμε με εφαρμογές Python. Το έχουμε ήδη συζητήσει σε έναν ειδικό οδηγό. Εδώ, θα κάνουμε μια σύντομη παρουσίαση.

Αρχικά, ανοίξτε ένα τερματικό και εκτελέστε τις ακόλουθες εντολές:

Στη συνέχεια, εγκαταστήστε το pip – τον διαχειριστή πακέτων της Python:

Στη συνέχεια, εγκαταστήστε ορισμένα πρόσθετα πακέτα ανάπτυξης:

Django Models 1

Για να δημιουργήσουμε ένα εικονικό περιβάλλον, χρειαζόμαστε επίσης τη μονάδα της Python venv module:

Βήμα 2. Εγκατάσταση του MySQL Server

Η MySQL είναι ένα δημοφιλές σχεσιακό σύστημα διαχείρισης βάσεων δεδομένων. Είναι ανοιχτού κώδικα, σταθερή και πλούσια σε χαρακτηριστικά. Θα χρησιμοποιήσουμε τη MySQL ως διακομιστή βάσης δεδομένων για την εφαρμογή Django μας. Εγκαταστήστε τη MySQL χρησιμοποιώντας το APT:

Στη συνέχεια, επαληθεύστε την εγκατάσταση:

Django Models 2

Πρόκειται για μια απλή βασική εγκατάσταση της MySQL με τις προεπιλεγμένες επιλογές. Δείτε τον πιο αναλυτικό οδηγό σχετικά με την εγκατάσταση και ρύθμιση παραμέτρων της MySQL.

Step 3. Setting Up the Django App

Είμαστε πλέον έτοιμοι να δημιουργήσουμε την εφαρμογή Django μας. Εάν ενδιαφέρεστε για μια πιο αναλυτική παρουσίαση του Django, ανατρέξτε στον οδηγό μας, «Εγκατάσταση του Django Web Framework στο Ubuntu 20.04.”

Στη συνέχεια, δημιουργήστε έναν αποκλειστικό κατάλογο για την εφαρμογή. Το όνομα του καταλόγου θα πρέπει να αντικατοπτρίζει το όνομα του έργου:

Μέσα στον κατάλογο του έργου, δημιουργήστε ένα εικονικό περιβάλλον Python χρησιμοποιώντας τη μονάδα venv module:

Ενεργοποιήστε το εικονικό περιβάλλον:

Django Models 3

Εγκαταστήστε το Django χρησιμοποιώντας το pip:

Στη συνέχεια, δημιουργήστε ένα νέο έργο Django χρησιμοποιώντας την εντολή django-admin command:

django-admin

Βήμα 4. Ρύθμιση παραμέτρων της εφαρμογής Django

Η εφαρμογή Django περιέχει όλες τις προεπιλεγμένες ρυθμίσεις. Για τον σκοπό μας, πρέπει να κάνουμε ορισμένες προσαρμογές.

Ξεκινήστε επεξεργαζόμενοι το αρχείο ρυθμίσεων settings.py:

Στη συνέχεια, αλλάξτε τη ζώνη ώρας:

TIME_ZONE

Προσθέστε τα μηχανήματα που επιτρέπεται να έχουν πρόσβαση στον διακομιστή της εφαρμογής Django:

ALLOWED_HOSTS

Μετά από αυτό, εφαρμόστε τις αλλαγές:

Django Models 4

Τέλος, δημιουργήστε έναν υπερχρήστη (superuser) για την εφαρμογή ιστού Django μας:

python manage.py

Βήμα 5. Σύνδεση της εφαρμογής Django στη MySQL

Για να συνδεθούμε στη MySQL, χρειαζόμαστε μια επιπλέον βιβλιοθήκη σύνδεσης Python που είναι συμβατή με το Django. Θα χρησιμοποιήσουμε το mysqlclient.

Αρχικά, βεβαιωθείτε ότι έχουμε εγκαταστήσει τα απαραίτητα πακέτα:

python3-dev

Στη συνέχεια, εγκαταστήστε το mysqlclient:

  • Δημιουργία αποκλειστικής βάσης δεδομένων

Για την εφαρμογή μας, πρέπει να δημιουργήσουμε μια αποκλειστική βάση δεδομένων και έναν χρήστη βάσης δεδομένων. Εκκινήστε το κέλυφος MySQL ως root:

sudo mysql -u rootΔημιουργήστε μια αποκλειστική βάση δεδομένων για την εφαρμογή Django μας:

Στη συνέχεια, δημιουργήστε έναν αποκλειστικό χρήστη βάσης δεδομένων για την εφαρμογή Django:

Τέλος, παραχωρήστε στον αποκλειστικό χρήστη πλήρη δικαιώματα στην αποκλειστική βάση δεδομένων:

GRANT ALL ON
  • Αλλαγή της ρύθμισης παραμέτρων του Django για χρήση της MySQL

Τώρα, πρέπει να τροποποιήσουμε κάποιες ρυθμίσεις του Django ώστε να μπορεί να χρησιμοποιήσει τη MySQL ως διακομιστή βάσης δεδομένων. Ανοίξτε το settings.py σε έναν επεξεργαστή κειμένου:

Κυλήστε προς τα κάτω στην ενότητα DATABASES και επικολλήστε τον ακόλουθο κώδικα:

DATABASES

Στη συνέχεια, επεξεργαστείτε το αρχείο ρυθμίσεων της MySQL ώστε να περιέχει τα απαραίτητα διαπιστευτήρια της βάσης δεδομένων:

Προσθέστε το ακόλουθο μπλοκ στο τέλος του αρχείου:

Django Models 5

Επανεκκινήστε τη MySQL για να εφαρμοστούν οι αλλαγές:

Βήμα 6. Δημιουργία ενός μοντέλου Django

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

Σε αυτήν την τοποθεσία, πείτε στο Django να δημιουργήσει μια νέα εφαρμογή:

Μετά τη δημιουργία, το δέντρο αρχείων θα πρέπει να μοιάζει κάπως έτσι. Εδώ, το αρχείο models.py θα περιέχει τους κώδικες για το προσαρμοσμένο μοντέλο Django μας:

Django Models 6

Ελέγξτε το τρέχον περιεχόμενο του αρχείου:

cat models.py

Για επίδειξη, πρόκειται να δημιουργήσουμε ένα μοντέλο για αναρτήσεις ιστολογίου με το όνομα Post. Θα περιέχει τα ακόλουθα πεδία:

  • title: Τίτλος ανάρτησης ιστολογίου.
  • slug: Αποθηκεύει και δημιουργεί έγκυρες διευθύνσεις URL για ιστοσελίδες.
  • content: Το κείμενο της ανάρτησης ιστολογίου.
  • created_on: Ημερομηνία δημιουργίας της ανάρτησης.
  • author: Ο χρήστης που δημιούργησε την ανάρτηση.

Ανοίξτε το αρχείο models.py σε έναν επεξεργαστή κειμένου:

Ας εισαγάγουμε μερικά απαραίτητα API για το μοντέλο μας. Από προεπιλογή, εισάγει το API των μοντέλων. Θα χρειαστούμε επίσης το API slugify για τη δημιουργία slugs, το User για έλεγχο ταυτότητας, και το reverse για καλύτερη και πιο ευέλικτη δημιουργία URL:

Στη συνέχεια, προσθέστε τη μέθοδο κλάσης που ονομάζεται Post. Θα περιέχει τα απαραίτητα πεδία βάσης δεδομένων όπως title, slug, content, created_on, και author:

Χρειαζόμαστε τη λειτουργικότητα για τη δημιουργία URL και την αποθήκευση της ανάρτησης. Είναι σημαντικό καθώς δημιουργεί μοναδικούς συνδέσμους που αντιστοιχούν σε μοναδικές αναρτήσεις:

Η επόμενη ενότητα θα καθορίσει στο μοντέλο τη σειρά ταξινόμησης της ανάρτησης και την εμφάνισή της στην ιστοσελίδα. Θα κωδικοποιήσουμε τη λογική χρησιμοποιώντας μια εσωτερική κλάση, Meta. Θα περιέχει πρόσθετη λογική μοντέλου που δεν αφορά τον ορισμό των πεδίων της βάσης δεδομένων:

Τέλος, θα έχουμε τη δυνατότητα του μοντέλου Comment σε αυτό το αρχείο. Απαιτεί την προσθήκη μιας άλλης κλάσης Comment χρησιμοποιώντας το models.Model ως υπογραφή του. Θα περιέχει τα ακόλουθα πεδία βάσης δεδομένων:

  • name: Όνομα σχολιαστή.
  • email: Διεύθυνση email σχολιαστή.
  • text: Περιεχόμενο του ίδιου του σχολίου.
  • post: Η ανάρτηση στην οποία έγινε το σχόλιο.
  • created_on: Ώρα δημιουργίας του σχολίου.

Ο κώδικας θα μοιάζει κάπως έτσι:

Σε αυτό το σημείο, το αρχείο μας models.py θα έχει αυτή τη μορφή:

models.py

Τέλος, αποθηκεύστε το αρχείο και κλείστε τον επεξεργαστή κειμένου.

Βήμα 7. Ενημέρωση των ρυθμίσεων του Django

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

Ανοίξτε το settings.py σε έναν επεξεργαστή κειμένου:

Καταχωρίστε τη νέα ενότητα κάτω από το τμήμα INSTALLED_APPS:

INSTALLED_APPS

Αποθηκεύστε το αρχείο και κλείστε τον επεξεργαστή κειμένου.

Βήμα 8. Μεταφορά αλλαγών

Τώρα που προσθέσαμε όλα τα επιθυμητά μοντέλα, το επόμενο βήμα είναι η εφαρμογή αυτών των αλλαγών. Το Django θα εφαρμόσει αυτά τα σχήματα στη MySQL βάση δεδομένων μας.

Η ακόλουθη εντολή θα δημιουργήσει όλα τα απαραίτητα αρχεία μεταφοράς. Το αποτέλεσμα θα δείξει τις τοποθεσίες όλων αυτών των αρχείων μέσα στον κατάλογο του έργου:

makemigrations

Η ακόλουθη εντολή θα εμφανίσει μια λίστα με όλες τις υπάρχουσες μεταφορές:

Django Models 6

Σημειώστε ότι όλες οι μεταφορές είναι σημειωμένες εκτός από την 0001_initial που δημιουργήθηκε ως μέρος των μοντέλων Post και Comment.

Η ακόλουθη εντολή θα δείξει ποιο ερώτημα SQL θα εκτελέσει το Django για να πραγματοποιήσει τις μεταφορές:

sample_app

Το μόνο που χρειαζόμαστε τώρα είναι να εφαρμόσουμε τις μεταφορές. Αυτές οι μεταφορές θα εγγράψουν τις αλλαγές στη βάση δεδομένων:

migrate

Βήμα 9. Επαλήθευση αλλαγών

Για να επαληθεύσετε τις αλλαγές, ας ρίξουμε μια ματιά στη βάση δεδομένων MySQL μας. Εκκινήστε το κέλυφος της MySQL ως χρήστης Django:

Στη συνέχεια, αλλάξτε την τρέχουσα ενεργή βάση δεδομένων στη βάση δεδομένων της εφαρμογής Django:

Εμφανίστε τη λίστα με όλους τους πίνακες από τη βάση δεδομένων:

Τέλος, για να δείτε το περιεχόμενο οποιουδήποτε από τους πίνακες, χρησιμοποιήστε το DESCRIBE ερώτημα:

Django Models 7

Περιορισμοί του Django με τη MySQL

Όταν χρησιμοποιείτε τη MySQL ως διακομιστή βάσης δεδομένων για την εφαρμογή Django σας, υπάρχουν μερικά πράγματα που πρέπει να έχετε κατά νου:

  • Δεν υπάρχει μεγάλη υποστήριξη για συναλλαγές (transactions) γύρω από διαδικασίες τροποποίησης σχήματος. Αυτό σημαίνει ότι, εάν μια μεταφορά (migration) αποτύχει, απαιτείται η χειροκίνητη αναίρεση όλων των αλλαγών πριν δοκιμάσετε μια άλλη μεταφορά. Δεν υπάρχει τρόπος επαναφοράς (roll back) σε προηγούμενο σημείο όπου η αποτυχημένη μεταφορά δεν είχε πραγματοποιηθεί.
  • Για τις περισσότερες από τις διαδικασίες τροποποίησης σχήματος, η MySQL ξαναγράφει πλήρως τους πίνακες. Σε ορισμένες περιπτώσεις, αυτό μπορεί να είναι πραγματικά χρονοβόρο. Στη χειρότερη περίπτωση, η χρονική πολυπλοκότητα θα είναι ανάλογη με τον αριθμό των γραμμών που πρέπει να προστεθούν ή των στηλών που πρέπει να αφαιρεθούν. Σύμφωνα με την επίσημη τεκμηρίωση του Django, θα μπορούσε να χρειαστεί ένα λεπτό ανά εκατομμύριο γραμμές.
  • Η MySQL επιβάλλει ένα όριο χαρακτήρων για τα μήκη των ονομάτων στηλών, πινάκων και ευρετηρίων. Υπάρχει επίσης ένα όριο στο συνολικό μέγεθος όλων των στηλών και των καλυμμάτων ευρετηρίου. Το Django μπορεί να υπερβεί αυτό το όριο. Ορισμένα άλλα συστήματα υποστήριξης (backends) εκτός από τη MySQL μπορούν να διαχειριστούν το υψηλότερο όριο του Django.

Γι' αυτό συνιστάται ανεπιφύλακτα να σταθμίσετε τις επιλογές σας και να επιλέξετε την κατάλληλη.

Τελικές Σκέψεις

Αυτός ο οδηγός δείχνει με επιτυχία πώς να προσθέσετε ενότητες (modules) σε μια υπάρχουσα εφαρμογή Django. Χρησιμοποιήσαμε τη MySQL ως σύστημα υποστήριξης (backend) για την εφαρμογή. Παρουσιάζει επίσης ορισμένες βασικές έννοιες του Django, όπως τα μοντέλα (models), πώς λειτουργεί η μεταφορά (migration) και πώς το Django μεταφράζει τα μοντέλα σε πίνακες βάσης δεδομένων MySQL.

Καλό προγραμματισμό!

author

Hark Labs

Συγγραφέας · CloudSigma

Ο Preslav Dobrev είναι Δημιουργικός Σχεδιαστής στην CloudSigma, με εστίαση στη συνεπή επιχειρηματική ταυτότητα μέσω παραδοσιακών και καινοτόμων καναλιών μάρκετινγκ. Διαθέτει την ικανότητα να συνδυάζει το καλλιτεχνικό όραμα με το στρατηγικό μάρκετινγκ για τη δημιουργία εντυπωσιακών αφηγήσεων επωνυμίας.

Σχόλια

Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.