"Αυτό το άρθρο αναθεωρείται και ενημερώνεται με την τελευταία έκδοση του Django - Μάιος 2016"
Σε Μέρος 1 αυτής της σειράς μάθατε πώς να εγκαθιστάτε και να διαμορφώνετε το Django σε ένα εικονικό περιβάλλον και δημιουργήσατε τον σκελετό του πρώτου σας έργου.
Στη συνέχεια μέσα Μέρος 2ο δημιουργήσαμε μια εφαρμογή και ένα μοντέλο για Θέση αντικείμενα, τα οποία μετακινήσαμε αργότερα στη βάση δεδομένων. Τέλος, σας δείξαμε πώς να ενσωματώσετε την πρόσφατα δημιουργημένη εφαρμογή σας στη διεπαφή χρήστη της διαχείρισης Django.
Αυτά τα άρθρα είναι μέρος της σειράς Django:
Εγκατάσταση και ρύθμιση παραμέτρων του Django Web Framework με εικονικά περιβάλλοντα - Μέρος 1
Επανεξέταση των βασικών στοιχείων της Python και δημιουργία της πρώτης εφαρμογής σας στο Web με το Django - Μέρος 2
Σε αυτόν τον τελικό οδηγό θα συζητήσουμε πώς να αποκτήσετε πρόσβαση στην εφαρμογή χρησιμοποιώντας το UI και πώς να την κάνετε φιλική προς κινητά για κάθε είδους συσκευές. Τούτου λεχθέντος, ας ξεκινήσουμε.
Για τη δημιουργία αντικειμένων τύπου Θέση (θυμηθείτε ότι αυτό είναι το μοντέλο που ορίσαμε Μέρος 2ο αυτής της σειράς), θα χρησιμοποιήσουμε τη διεπαφή διαχειριστή Django.
Βεβαιωθείτε ότι ο ενσωματωμένος διακομιστής web Django λειτουργεί στη θύρα 8000 (ή άλλη επιλογή της επιλογής σας) εκτελώντας την ακόλουθη εντολή από το εξωτερικό myfirstdjangoproject Ευρετήριο:
# cd ~/myfirstdjangoenv/myfirstdjangoproject. # python manager.py serverserver 0.0.0.0:8000.
Τώρα ανοίξτε το πρόγραμμα περιήγησης ιστού και δείξτε το http://ip-address: 8000/διαχειριστής
, στη συνέχεια συνδεθείτε χρησιμοποιώντας τα διαπιστευτήρια που ορίσατε στο προηγούμενο άρθρο και ξεκινήστε να γράφετε μια ανάρτηση (η οποία, πάλι, θα δημιουργήσει ένα αντικείμενο τύπου Θέση και εισαγάγετε τα σχετικά δεδομένα στην υποκείμενη βάση δεδομένων):
Επαναλάβετε τη διαδικασία 2 ή 3 φορές:
Αφού δημιουργήσουμε μερικές αναρτήσεις, ας δούμε τι πρέπει να κάνουμε για να τις εμφανίσουμε χρησιμοποιώντας το πρόγραμμα περιήγησής μας.
Η πρώτη μας άποψη (/myfirstdjangoenv/myfirstdjangoproject/myblog/views.py) θα είναι υπεύθυνος για το φιλτράρισμα όλων Θέση αντικείμενα και την επιστροφή εκείνων όπου η τιμή του όταν Δημοσιεύτηκε είναι μικρότερη ή ίση με την τρέχουσα ημερομηνία και ώρα (whenPublished__lte = timezone.now ()) διατάσσεται με κάθοδο όταν Δημοσιεύτηκε, το οποίο είναι το ίδιο με το να πεις "τελευταίο πρώτα“.
Αυτά τα αντικείμενα αποθηκεύονται σε μια μεταβλητή με εύχρηστες θέσεις και επιστρέφονται (προσδιορίζονται ως allposts) για να ενσωματωθεί στο HTML, όπως θα δούμε στην επόμενη ενότητα:
από django.shortcuts εισαγωγή απόδοση. από .models import Post. από τη ζώνη ώρας εισαγωγής django.utils. def posts (request): posts = Post.objects.filter (whenPublished__lte = timezone.now ()). order_by ('-whenPublished') return rendering (request, 'myblog/posts.html', {'allposts': posts} )
Τέλος, το διπλό υπογράμμιση στο whenPublished__lte
παραπάνω χρησιμοποιείται για να διαχωρίσει ένα πεδίο βάσης δεδομένων (όταν Δημοσιεύτηκε) από φίλτρο ή λειτουργία (lte = λιγότερο από ή ίσο).
Αφού ορίσουμε την αρχική μας προβολή, ας δουλέψουμε στο σχετικό πρότυπο.
Ακολουθώντας τις οδηγίες και τις διαδρομές που δίνονται στην προηγούμενη ενότητα, θα αποθηκεύσουμε το αρχικό μας πρότυπο μέσα myblog/templates/myblog. Αυτό σημαίνει ότι θα χρειαστεί να δημιουργήσετε έναν κατάλογο με όνομα πρότυπα και ένας υποκατάλογος που ονομάζεται myblog:
# cd ~/myfirstdjangoenv/myfirstdjangoproject/myblog. # mkdir -p templates/myblog.
Θα καλέσουμε το πρότυπο posts.html
και εισαγάγετε τον ακόλουθο κώδικα σε αυτό. Θα παρατηρήσετε ότι προσθέτουμε διαδικτυακές αναφορές σε jQuery, Bootstrap, FontAwesome και γραμματοσειρές Google.
Επιπλέον, έχουμε περικλείσει κώδικα Python μέσα σε αγκύλες μέσα στο HTML. Λάβετε υπόψη ότι για κάθε αντικείμενο τύπου Post θα εμφανίζουμε τον τίτλο του, την ημερομηνία δημοσίευσης και τον συγγραφέα του και τέλος το κείμενό του. Τέλος, με κόκκινο χρώμα θα δείτε ότι κάνουμε μια αναφορά στα αντικείμενα που επιστρέφονται μέσω myblog/views.py:
Εντάξει, εδώ είναι το posts.html αρχείο:
Το blog μου
{ % για ανάρτηση σε allposts}}{ % endfor %}{{ Τίτλος ανάρτησης }}Δημοσιεύτηκε στις {{post.whenPublished}} από τον {{post.author}}.{{post.text | linebreaks}}
Στα παραπάνω πρότυπο, ο γραμμές το φίλτρο χρησιμοποιείται για την αντικατάσταση των αλλαγών γραμμής σε απλό κείμενο με το αντίστοιχο ισοδύναμο HTML (
ή
Στη συνέχεια, πρέπει να ορίσουμε μια αντιστοίχιση μεταξύ των διευθύνσεων URL στην εφαρμογή μας και των αντίστοιχων προβολών που επιστρέφουν τα δεδομένα. Για να το κάνετε αυτό, δημιουργήστε ένα αρχείο με όνομα urls.py μέσα myblog με το ακόλουθο περιεχόμενο:
από django.conf.urls url εισαγωγής. από. εισαγωγή προβολών. urlpatterns = [url (r '^$', views.posts, name = 'posts'),]
ο r '^$'
αξίζει λίγο περισσότερη εξήγηση. Το κορυφαίο ρ
αναθέτει στο Django να αντιμετωπίσει τη συμβολοσειρά μέσα σε μεμονωμένα εισαγωγικά ως κανονική έκφραση.
Συγκεκριμένα, r '^$'
αντιπροσωπεύει μια κενή συμβολοσειρά, έτσι ώστε όταν δείχνουμε το πρόγραμμα περιήγησής μας http://ip-address: 8000
(και τίποτα άλλο), τα δεδομένα που επιστρέφονται από τη μεταβλητή αναρτήσεις μέσα views.py
(ανατρέξτε στην προηγούμενη ενότητα) θα παρουσιαστούν στην αρχική μας σελίδα:
Τελευταίο, αλλά όχι λιγότερο σημαντικό, θα συμπεριλάβουμε το urls.py αρχείο της εφαρμογής ιστολογίου μας (/myfirstdjangoenv/myfirstdjangoproject/myblog/urls.py) μέσα στο urls.py του κύριου έργου μας (/myfirstdjangoenv/myfirstdjangoproject/myfirstdjangoproject/urls.py):
από django.conf.urls εισαγωγή περιλαμβάνουν, url. από django.contrib εισαγωγή διαχειριστή urlpatterns = [url (r '^admin/', include (admin.site.urls)), url (r '', include ('myblog.urls')),]
Στη συνέχεια, ας ξεκινήσουμε τον διακομιστή ιστού:
# cd ~/myfirstdjangoenv/myfirstdjangoproject. # python manager.py serverserver 0.0.0.0:8000.
Θα πρέπει τώρα να μπορούμε να βλέπουμε τις λίστες των δημοσιεύσεων που δημιουργήσαμε νωρίτερα:
Χάρη σε Bootstrap, μπορείτε ακόμα να έχετε μια εξαιρετική απεικόνιση σε μια μικρότερη συσκευή:
Ας επανεξετάσουμε τώρα τις έννοιες που καλύψαμε σε αυτό το άρθρο και σε όλη τη σειρά:
1. Καθε μοντέλο ορίζει ένα αντικείμενο και χαρτογραφεί σε έναν πίνακα βάσης δεδομένων, τα πεδία του οποίου αντιστοιχούν με τη σειρά τους στις ιδιότητες αυτού του αντικειμένου. Από την άλλη πλευρά, α πρότυπο ορίζει τη διεπαφή χρήστη όπου θα εμφανίζονται τα δεδομένα που επιστρέφονται από την προβολή.
Ας υποθέσουμε ότι θέλουμε να τροποποιήσουμε το μοντέλο μας προσθέτοντας ένα πεδίο με όνομα περίληψη στο Θέση αντικείμενο, όπου θα αποθηκεύσουμε μια προαιρετική σύντομη περιγραφή κάθε ανάρτησης. Ας προσθέσουμε την ακόλουθη γραμμή myblog/models.py:
περίληψη = μοντέλα. CharField (max_length = 350, κενό = True, null = True)
Όπως μάθαμε στο προηγούμενο άρθρο, πρέπει να μεταφέρουμε τις αλλαγές στη βάση δεδομένων:
# python manager.py makemigrations myblog. # python management.py μετεγκατάσταση myblog.
Στη συνέχεια, χρησιμοποιήστε τη διεπαφή διαχειριστή για να επεξεργαστείτε τις αναρτήσεις και να προσθέσετε μια σύντομη περίληψη σε κάθε ανάρτηση. Τέλος, αντικαταστήστε την ακόλουθη γραμμή στο πρότυπο (posts.html):
{{post.text | linebreaks}}
με
{{post.summary}}
Ανανεώστε την αρχική σελίδα για να δείτε τις αλλαγές:
2. ΕΝΑ θέα Λειτουργία λαμβάνει ένα αίτημα HTTP και επιστρέφει μια απάντηση HTTP. Σε αυτό το άρθρο, def posts (αίτημα) σε views.py πραγματοποιεί κλήση στην υποκείμενη βάση δεδομένων για ανάκτηση όλων των αναρτήσεων. Αν θέλουμε να ανακτήσουμε όλες τις αναρτήσεις με τη λέξη εύλογο στον τίτλο, θα πρέπει να αντικαταστήσουμε.
δημοσιεύσεις = Post.objects.filter (whenPublished__lte = timezone.now ()) .order_by ('-whenPublished')
με
δημοσιεύσεις = Post.objects.filter (title__icontains = "ansible") .order_by ('-whenPublished')
Διαχωρίζοντας τη διεπαφή χρήστη από τη λογική της εφαρμογής στις διαδικτυακές εφαρμογές, το Django διευκολύνει τις εργασίες συντήρησης και κλιμάκωσης εφαρμογών.
3. Εάν ακολουθήσατε τις οδηγίες που παρέχονται σε αυτήν τη σειρά, η δομή του έργου σας θα πρέπει να είναι η ακόλουθη:
myfirstdjangoenv/myfirstdjangoproject. ├── db.sqlite3. ├── διαχείριση.py. ├── myblog. In ├── admin.py. In ├── admin.pyc. ├── __init__.py. ├── __init __. Pyc. Μεταναστεύσεις. 1 │ 1 0001_initial.py. 1 │ 1 0001_initial.pyc. │ ├── __init__.py. │ └── __init __. Pyc. ├── ├── μοντέλα.py. ├── ├── μοντέλα.pyc. Lates ├── πρότυπα. B │ └── myblog. │ │ └── posts.html. ├── ├── tests.py. Ls ├── urls.py. Ls ├── urls.pyc. ├── ├── views.py. └── └── views.pyc. └── myfirstdjangoproject ├── __init__.py __ __init __. Pyc ├── settings.py ├── settings.pyc ├── urls.py ├── urls.pyc ├── wsgi.py └── wsgi .pyc
Σε περίπτωση που η παραπάνω λίστα δεν εμφανίζεται σωστά στο πρόγραμμα περιήγησής σας, ακολουθεί ένα στιγμιότυπο οθόνης της εξόδου της ακόλουθης εντολής:
# δέντρο myfirstdjangoenv/myfirstdjangoproject.
Παρόλο που όλες αυτές οι έννοιες μπορεί να φαίνονται λίγο εκφοβιστικές στην αρχή, μπορώ να σας διαβεβαιώσω ότι το Django αξίζει όλες τις προσπάθειες που απαιτούνται για να εξοικειωθείτε με αυτό
Ελπίζω ότι το παράδειγμα που χρησιμοποιήσαμε σε αυτήν τη σειρά για να σας παρουσιάσουμε αυτό το εξαιρετικό πλαίσιο ιστού θα σας παρακινήσει να μάθετε περισσότερα. Αν ναι, ο επίσημος Τεκμηρίωση Django (το οποίο ενημερώνεται συνεχώς) είναι το καλύτερο μέρος για να ξεκινήσετε.
Μπορώ να σας διαβεβαιώσω ότι υπάρχουν πολλά περισσότερα στο Django από ό, τι μπορούμε να καλύψουμε επαρκώς σε μια σειρά άρθρων, οπότε μη διστάσετε να το εξερευνήσετε και να το μάθετε κάνοντας!
Μη διστάσετε να μας στείλετε μια σημείωση με ερωτήσεις ή προτάσεις χρησιμοποιώντας την παρακάτω φόρμα.