Προγραμματισμός

Εκμάθηση Django: Ξεκινήστε με το Django 2.0

Το Django είναι ένα ενιαίο πλαίσιο ιστού Python που εμπνεύστηκε από τον Ruby on Rails και χρησιμοποιεί πολλές από τις ίδιες μεταφορές για να κάνει την ανάπτυξη ιστού γρήγορη και εύκολη. Πλήρως φορτωμένο και ευέλικτο, το Django έχει γίνει ένα από τα πιο ευρέως χρησιμοποιούμενα πλαίσια ιστού της Python.

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

Το Django έχει επίσης τη φήμη ότι είναι πολύπλοκο, με πολλά στοιχεία και απαιτούνται πολλές διαμορφώσεις “under the hood”. Στην πραγματικότητα, μπορείτε να δημιουργήσετε μια απλή εφαρμογή και να λειτουργεί σε σχετικά σύντομη σειρά και, στη συνέχεια, να επεκτείνετε τη λειτουργικότητά της από εκεί, όπως απαιτείται.

Σε αυτόν τον οδηγό θα ακολουθήσουμε τη δημιουργία μιας στοιχειώδους εφαρμογής Django 2.0 και θα αγγίξουμε σύντομα τις πιο σημαντικές δυνατότητες που παρέχει για προγραμματιστές ιστού.

Αναβάθμιση από Django 1.x

Εάν έχετε εμπειρία με μια προηγούμενη έκδοση 1.x του Django, αυτές είναι οι πιο σημαντικές αλλαγές που πρέπει να γνωρίζετε:

  • Django 2.0 μόνο υποστηρίζει Python 3.4 και νεότερες εκδόσεις. Το Python 2.x δεν θα υποστηρίζεται σε μελλοντικές εκδόσεις του Django.
  • Το Django 2 ακολουθεί το μοτίβο της Python 3 να χρησιμοποιεί εγγενείς συμβολοσειρές Unicode όπου είναι δυνατόν. Ορισμένες συναρτήσεις του Django δεν θα δέχονται πλέον bytestrings ως είσοδο.

Υπάρχουν πολλές άλλες ασυμβίβαστες αλλαγές προς τα πίσω, αλλά αυτές είναι δύο από τις πιο σημαντικές, ειδικά κατά την έναρξη νέων έργων.

Εγκατάσταση των βασικών βιβλιοθηκών του Django

Για να εγκαταστήσετε το Django 2.0, θα χρειαστείτε το Python 3.4 ή καλύτερο. Τότε ο ευκολότερος τρόπος για να εγκαταστήσετε το Django είναι μέσω του Python's κουκούτσι χρησιμότητα:

εγκατάσταση pip django

Αυτό εγκαθιστά τις βασικές βιβλιοθήκες Django και το django-διαχειριστής βοηθητικό πρόγραμμα γραμμής εντολών που χρησιμοποιείται για τη διαχείριση έργων Django.

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

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

Δημιουργία νέου έργου Django

Οι εμφανίσεις Django οργανώνονται σε δύο επίπεδα: έργα και εφαρμογές.

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

Για να δημιουργήσετε ένα νέο έργο Django από το μηδέν, εισαγάγετε τον κατάλογο στον οποίο θέλετε να αποθηκεύσετε το έργο και πληκτρολογήστε:

django-admin startproject

όπου είναι το όνομα του έργου και του υποκαταλόγου όπου θα αποθηκευτεί το έργο. Φροντίστε να επιλέξετε ένα όνομα που δεν είναι πιθανό να συγκρούεται με ένα όνομα που χρησιμοποιείται εσωτερικά από την Python ή το Django. Ένα όνομα σαν myproj θα λειτουργήσει μια χαρά.

Ο κατάλογος που προκύπτει πρέπει να περιέχει έναmanagement.py αρχείο, το οποίο χρησιμοποιείται για τον έλεγχο της συμπεριφοράς της εφαρμογής από τη γραμμή εντολών και έναν άλλο υποκατάλογο (επίσης με το όνομα του έργου) που περιέχει τα ακόλουθα αρχεία:

  • Ενα __init__.py αρχείο, το οποίο χρησιμοποιείται από την Python για να ορίσει έναν υποκατάλογο ως λειτουργική μονάδα κώδικα.
  • settings.py, το οποίο διατηρεί τις ρυθμίσεις που χρησιμοποιούνται για το έργο. Πολλές από τις πιο κοινές ρυθμίσεις θα είναι προσυμπληρωμένες για εσάς.
  • urls.py, η οποία παραθέτει τις διαδρομές ή τις διευθύνσεις URL που είναι διαθέσιμες στο έργο Django ή για το οποίο το έργο θα επιστρέψει απαντήσεις για.
  • wsgi.py, που χρησιμοποιείται από διακομιστές ιστού συμβατούς με WSGI, όπως το Apache HTTP ή το Nginx, για την εξυπηρέτηση των εφαρμογών του έργου σας.

Πριν από οτιδήποτε άλλο, δοκιμάστε το έργο για να βεβαιωθείτε ότι λειτουργεί. Από τη γραμμή εντολών στον κατάλογο που περιέχει το έργο σας management.py αρχείο, εκτέλεση:

python management.py runerver

Αυτό θα πρέπει να ξεκινήσει έναν διακομιστή ιστού ανάπτυξης που είναι διαθέσιμος στο //127.0.0.1:8000/. Επισκεφτείτε αυτόν τον σύνδεσμο και θα δείτε μια απλή σελίδα καλωσορίσματος που σας λέει ότι η εγκατάσταση ήταν επιτυχής.

Σημειώστε ότι ο διακομιστής ιστού ανάπτυξης πρέπει δεν να χρησιμοποιηθούν για την εξυπηρέτηση ενός έργου Django στο κοινό. Δεν θα κλιμακωθεί για τη διαχείριση της απαιτούμενης επισκεψιμότητας.

Δημιουργία εφαρμογής Django

Στη συνέχεια πρέπει να δημιουργήσουμε μια εφαρμογή μέσα σε αυτό το έργο. Μεταβείτε στον ίδιο κατάλογο με management.py και εκδώστε αυτήν την εντολή:

python management.py startapp myapp

Αυτό δημιουργεί έναν υποκατάλογο για μια εφαρμογή που ονομάζεται myapp που περιέχει τα ακόλουθα:

  • ΕΝΑ μεταναστεύσεις Ευρετήριο. Περιέχει κώδικα που χρησιμοποιείται για τη μετεγκατάσταση του ιστότοπου μεταξύ των εκδόσεων του σχήματος δεδομένων του.
  • admin.py. Περιέχει αντικείμενα που χρησιμοποιούνται από τα ενσωματωμένα εργαλεία διαχείρισης του Django. Εάν η εφαρμογή σας διαθέτει διεπαφή διαχειριστή ή προνομιούχους χρήστες, θα ρυθμίσετε εδώ τα σχετικά αντικείμενα.
  • apps.py. Παρέχει πληροφορίες διαμόρφωσης σχετικά με την εφαρμογή στο έργο γενικά, μέσω ενός AppConfig αντικείμενο.
  • models.py. Περιέχει αντικείμενα που ορίζουν δομές δεδομένων που χρησιμοποιεί η εφαρμογή σας για διασύνδεση με βάσεις δεδομένων.
  • tests.py. Περιέχει τυχόν δοκιμές που χρησιμοποιούνται για να διασφαλιστεί ότι οι λειτουργίες και οι ενότητες του ιστότοπού σας λειτουργούν όπως προορίζεται.
  • views.py. Περιέχει συναρτήσεις που αποδίδουν και επιστρέφουν αποκρίσεις.

Για να ξεκινήσουμε να δουλεύουμε με την εφαρμογή, πρέπει πρώτα να την εγγράψουμε στο έργο. Για να το κάνετε αυτό, επεξεργαστείτε myproj / settings.py και προσθέστε μια γραμμή στην κορυφή του ΕΓΚΑΤΑΣΤΑΣΗ_APPS λίστα:

INSTALLED_APPS = [‘myapp.apps.MyappConfig’, ‘django.contrib.admin’,… 

Αν κοιτάξετε μέσα myapp.apps, θα δείτε ένα προ-δημιουργημένο αντικείμενο που ονομάζεται MyappConfig, αυτό αναφερόμαστε εδώ.

Προσθήκη διαδρομών και προβολών στην εφαρμογή Django

Οι εφαρμογές Django ακολουθούν ένα βασικό μοτίβο για την επεξεργασία αιτημάτων:

  • Όταν λαμβάνεται ένα εισερχόμενο αίτημα, το Django αναλύει τη διεύθυνση URL για ένα Διαδρομή για να το εφαρμόσετε.
  • Οι διαδρομές ορίζονται σε urls.py, με κάθε διαδρομή συνδεδεμένη με ένα θέα, δηλ. μια συνάρτηση που επιστρέφει δεδομένα για επιστροφή στον πελάτη. Οι προβολές μπορούν να βρίσκονται οπουδήποτε σε ένα έργο Django, αλλά είναι καλύτερα οργανωμένες στις δικές τους ενότητες.
  • Οι προβολές μπορούν να περιέχουν τα αποτελέσματα ενός πρότυπο, δηλ. κωδικός που μορφοποιεί τα ζητούμενα δεδομένα σύμφωνα με ένα συγκεκριμένο σχέδιο.

Για να πάρετε μια ιδέα για το πώς ταιριάζουν όλα αυτά τα κομμάτια, ας τροποποιήσουμε την προεπιλεγμένη διαδρομή του δείγματος της εφαρμογής μας για να επιστρέψετε ένα προσαρμοσμένο μήνυμα.

Οι διαδρομές ορίζονται σε urls.py σε μια λίστα με το όνομα urlpatterns. Εάν ανοίξετε το δείγμα urls.py, θα δείτε urlpatterns ήδη προκαθορισμένο:

urlpatterns = [διαδρομή (‘admin /’, admin.site.urls),] 

ο μονοπάτι συνάρτηση - ένα ενσωματωμένο Django - παίρνει μια διαδρομή και μια λειτουργία προβολής ως ορίσματα και δημιουργεί μια αναφορά σε μια διαδρομή URL. Από προεπιλογή, το Django δημιουργεί ένα διαχειριστής διαδρομή που χρησιμοποιείται για τη διαχείριση ιστότοπων, αλλά πρέπει να δημιουργήσουμε τις δικές μας διαδρομές.

Προσθέστε μια άλλη καταχώρηση, έτσι ώστε ολόκληρο το αρχείο να μοιάζει:

από το django.contrib εισαγωγή διαχειριστή από το django.urls import include, path urlpatterns = [path (‘admin /’, admin.site.urls), path (‘myapp /’, include (‘myapp.urls’))] 

ο περιλαμβάνω Η συνάρτηση λέει στο Django να αναζητήσει περισσότερες πληροφορίες μοτίβου διαδρομής στο αρχείο myapp.urls. Όλες οι διαδρομές που βρέθηκαν σε αυτό το αρχείο θα επισυναφθούν στη διαδρομή ανώτατου επιπέδου myapp (π.χ., //127.0.0.1:8080/myapp).

Στη συνέχεια, δημιουργήστε ένα νέο urls.py σε myapp και προσθέστε τα ακόλουθα:

από django.urls εισαγωγή διαδρομής από. εισαγωγή προβολών urlpatterns = [διαδρομή ('', views.index)] 

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

Τώρα επεξεργαστείτε το αρχείο myapp / views.py έτσι μοιάζει με αυτό:

από django.http εισαγωγή HttpResponse def index (αίτημα): return HttpResponse ("Γεια, κόσμος!") 

django.http.HttpResponse είναι ένα ενσωματωμένο Django που δημιουργεί μια απόκριση HTTP από μια παρεχόμενη συμβολοσειρά. Σημειώστε ότι αίτηση, το οποίο περιέχει τις πληροφορίες για μια εισερχόμενη αίτηση HTTP, πρέπει να μεταβιβάζεται ως πρώτη παράμετρος σε μια συνάρτηση προβολής.

Διακοπή και επανεκκίνηση του διακομιστή ανάπτυξης και πλοήγηση στο //127.0.0.1:8000/myapp/. Πρέπει να δεις Γειά σου Κόσμε! εμφανίζονται στο πρόγραμμα περιήγησης.

Προσθήκη διαδρομών με μεταβλητές στο Django

Το Django μπορεί να δεχτεί διαδρομές που ενσωματώνουν μεταβλητές ως μέρος της σύνταξής τους. Ας υποθέσουμε ότι θέλετε να αποδεχτείτε διευθύνσεις URL με τη μορφή έτος/. Θα μπορούσατε να το πετύχετε προσθέτοντας την ακόλουθη καταχώριση στοurlpatterns:

διαδρομή («έτος /», προβολές ετησίως) 

Η λειτουργία προβολής προβολές. έτος στη συνέχεια θα επικαλεστεί μέσω διαδρομών όπως έτος / 1996, έτος / 2010και ούτω καθεξής, με τη μεταβλητή έτος πέρασε ως παράμετρος στο προβολές. έτος.

Για να το δοκιμάσετε μόνοι σας, προσθέστε τα παραπάνω urlpatterns είσοδος στο myapp / urls.pyκαι, στη συνέχεια, προσθέστε αυτήν τη λειτουργία στο myapp / views.py:

def έτος (αίτημα, έτος): return HttpResponse («Έτος: {}». μορφή (έτος)) 

Εάν πλοηγηθείτε στο / myapp / έτος / 2010 στον ιστότοπό σας, θα πρέπει να δείτε Έτος: 2010 εμφανίζεται ως απάντηση. Σημειώστε ότι οι διαδρομές αρέσουν / myapp / έτος / rutabaga θα αποδώσει σφάλμα, επειδή το int: περιορισμός στη μεταβλητή έτος επιτρέπει μόνο έναν ακέραιο σε αυτήν τη θέση. Πολλές άλλες επιλογές μορφοποίησης είναι διαθέσιμες για διαδρομές.

Οι παλαιότερες εκδόσεις του Django είχαν μια πιο περίπλοκη και δύσκολη ανάλυση των διαδρομών. Εάν εξακολουθείτε να χρειάζεται να προσθέσετε διαδρομές χρησιμοποιώντας την παλιά σύνταξη - για παράδειγμα, για συμβατότητα με παλιό έργο Django - μπορείτε να το κάνετε χρησιμοποιώντας το django.urls.re_path λειτουργία.

Πρότυπα Django

Η ενσωματωμένη γλώσσα προτύπου του Django μπορεί να χρησιμοποιηθεί για τη δημιουργία ιστοσελίδων από δεδομένα.

Τα πρότυπα που χρησιμοποιούνται από τις εφαρμογές Django αποθηκεύονται σε έναν κατάλογο που είναι κεντρικός για το έργο: / πρότυπα //. Για τα δικά μας myapp έργο, ο κατάλογος θα ήταν myapp / templates / myapp /. Αυτή η δομή καταλόγου μπορεί να φαίνεται λίγο περίεργη, αλλά το Django μπορεί να αναζητήσει πρότυπα σε πολλά μέρη, επομένως αυτό αποφεύγει τις συγκρούσεις ονομάτων μεταξύ προτύπων με τα ίδια ονόματα σε πολλές εφαρμογές.

Στο δικό σαςmyapp / templates / myapp / κατάλογο, δημιουργήστε ένα αρχείο με το όνομα year.html με το ακόλουθο περιεχόμενο:

Έτος: {{year}} 

Οποιαδήποτε τιμή σε διπλά σγουρά τιράντες σε ένα πρότυπο αντιμετωπίζεται ως μεταβλητή. Όλα τα άλλα αντιμετωπίζονται κυριολεκτικά.

Τροποποιώ myapp / views.py να μοιάζει με αυτό:

από django.shortcuts import render από django.http import HttpResponse def index (request): return HttpResponse ("Hello, world!") def year (request, year): data = {'year': year} return render (αίτημα, "myapp / year.html", δεδομένα) 

ο καθιστώ Λειτουργία, μια «συντόμευση» Django (ένας συνδυασμός πολλαπλών ενσωματωμένων για ευκολία), παίρνει το υπάρχον αίτηση αντικείμενο, αναζητά το πρότυπο myapp / year.html στη λίστα των διαθέσιμων θέσεων προτύπων και περνά το λεξικό δεδομένα σε αυτό ως πλαίσιο για το πρότυπο.

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

Για παράδειγμα, μια απλή δοκιμή «εάν» μπορεί να κωδικοποιηθεί με αυτόν τον τρόπο:

{% if year> 2000%} Έτος 21ου αιώνα: {{year}} {% else%} Έτος πριν από τον 21ο αιώνα: {{year}} {% endif%} 

ο {% και %} οι δείκτες οριοθετούν τμήματα κώδικα που μπορούν να εκτελεστούν στη γλώσσα προτύπου του Django.

Αν θέλετε να χρησιμοποιήσετε μια πιο εξελιγμένη γλώσσα επεξεργασίας προτύπων, μπορείτε να ανταλλάξετε σε άλλους, όπως το Jinja2 ή το Mako. Το Django περιλαμβάνει ενοποίηση back-end για το Jinja2, αλλά μπορεί να χρησιμοποιηθεί οποιαδήποτε γλώσσα προτύπου που επιστρέφει μια συμβολοσειρά - για παράδειγμα, επιστρέφοντας αυτήν τη συμβολοσειρά σε ένα HttpResponse αντικείμενο όπως στην περίπτωση των δικών μας "Γειά σου Κόσμε!" Διαδρομή.

Επόμενα βήματα με τον Django

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

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

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

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