Ένα από τα πιο ισχυρά χαρακτηριστικά του Django είναι η ικανότητά του να επαναχρησιμοποιεί τον κώδικα δυναμικά. Η κληρονομικότητα προτύπων επιτρέπει την κοινή χρήση κώδικα μεταξύ γονικών και θυγατρικών προτύπων. Μειώνει σημαντικά την διπλή προσπάθεια.
Το Django έχει τη γλώσσα προτύπου του σχεδιασμένη για να συνδυάζεται με την HTML. Θα σας είναι εύκολο να δουλέψετε με τα πρότυπα του Django αν έχετε εργαστεί με κώδικα HTML στο παρελθόν. Άλλες γλώσσες προτύπων που βασίζονται σε κείμενο όπως η Smarty ή η Jinja2 έχουν παρόμοια σύνταξη.
Ας μάθουμε περισσότερα σχετικά με την κληρονομικότητα προτύπων δημιουργώντας ένα έργο Django.
Τι είναι ένα πρότυπο Django;
Στο Django, ένα πρότυπο είναι ένα αρχείο κειμένου που μπορεί να δημιουργήσει οποιαδήποτε μορφή που βασίζεται σε κείμενο, όπως HTML, XML ή CSV.
Ετικέτες προτύπου Django
έλεγχος της λογικής που περικλείει τις μεταβλητές και τις τιμές στο πρότυπο. Οι ετικέτες βοηθούν στο διαχωρισμό της λογικής του προγράμματος από την παρουσίαση προτύπου. Βοηθούν επίσης να διατηρήσετε τα πρότυπά σας καθαρά και οργανωμένα.Το Django έχει πολλές ενσωματωμένες ετικέτες, οι οποίες μοιάζουν {% ετικέτα %}. Οι ετικέτες είναι χρήσιμες με πολλούς τρόπους. Μπορούν να δημιουργήσουν κείμενο στην έξοδο, να εκτελέσουν βρόχους και να φορτώσουν πληροφορίες στο πρότυπο.
Θα χρησιμοποιείτε ετικέτες σε αυτό το έργο για να επιδείξετε την κληρονομικότητα του προτύπου.
Δημιουργήστε ένα έργο Django
Για να ξεκινήσετε, δημιουργήστε ένα έργο Django. Δημιουργήστε μια εφαρμογή με όνομα πρότυπα. Μόλις το κάνετε, είστε έτοιμοι να δημιουργήσετε μια συνάρτηση προβολής για την εφαρμογή, μια διαδρομή διεύθυνσης URL και πρότυπα για την επίδειξη της κληρονομικότητας προτύπων.
Δημιουργήστε μια λειτουργία προβολής
Πρώτα, δημιουργήστε ένα θέα λειτουργία που αποδίδει τα πρότυπα. Σε αυτήν την περίπτωση, θα αποδώσετε το index.html πρότυπο. Εισαγάγετε το καθιστώ μέθοδος από τις συντομεύσεις Django. Στη συνέχεια, δημιουργήστε μια συνάρτηση προβολής με το όνομα index που επιστρέφει και αποδίδει το πρότυπο ευρετηρίου.
από django.συντομεύσεις εισαγωγή καθιστώ
# Δημιουργήστε τις απόψεις σας εδώ.
defδείκτης(αίτηση):
απόδοση επιστροφής (αίτημα,'index.html')
Δημιουργήστε μια διαδρομή URL
Στη συνέχεια, δημιουργήστε ένα Διαδρομή διεύθυνσης URL για τη λειτουργία προβολής για την εμφάνιση των προτύπων. Εισαγάγετε το μονοπάτι λειτουργία από το django.urls και το θέα λειτουργία από views.py αρχείο. Στη συνέχεια εισάγετε Ρυθμίσεις και στατικός για απόδοση οποιωνδήποτε εικόνων και πολυμέσων που μπορεί να έχετε στα πρότυπα.
από django.urls εισαγωγή μονοπάτι
από. εισαγωγή προβολές
από django.conf εισαγωγή Ρυθμίσεις
από django.conf.urls.static εισαγωγήστατικός
urlpatterns=[
μονοπάτι('',views.index, name='δείκτης'),
]
ανΡυθμίσεις.DEBUG:
urlpatterns+=στατικός(Ρυθμίσεις. MEDIA_URL, document_root=ρυθμίσεις. MEDIA_ROOT)
Δημιουργία προτύπων
Τώρα που έχετε το θέα και URL διαδρομή, δημιουργήστε τα πρότυπα. Για να επιδείξετε την κληρονομικότητα προτύπου, δημιουργήστε ένα βάση.html ως γονικό πρότυπο. ο βάση.html Το αρχείο θα έχει γενικά στοιχεία με τα οποία θέλετε να κάνετε κοινή χρήση index.html,το πρότυπο παιδιού.
{% load bootstrap5 %}
{% φορτώνω στατικός %}
<!DOCTYPE html>
<html lang="en">
<κεφάλι>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Συμβατό" περιεχόμενο="IE=άκρο">
<μετα όνομα="θέαση" περιεχόμενο="πλάτος=πλάτος συσκευής, αρχική κλίμακα=1,0">
<!-- τίτλοι -->
{% αν ο τίτλος %}
<τίτλος> Κληρονομικά πρότυπα {{title}}</title>
{% αλλού %}
<τίτλος> Κληρονομικά πρότυπα </title>
{% τέλος εαν %}
{% στυλ μπλοκ %}
{% bootstrap_css %}
<σύνδεσμος rel="φύλλο στυλ" href="{% στατικό 'css/style.css' %}">
{% endblock %}
</head>
<σώμα>
{% περιλαμβάνω 'navbar.html' %}
{% block content %} {% endblock %}
<!-- Σύνδεσμοι Bootstrap -->
<σενάριο src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" ακεραιότητα="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="Ανώνυμος"></script>
</body>
</html>
Αρχικά, φορτώστε το Bootstrap και τις στατικές εξαρτήσεις στο βάση.html πρότυπο. Μπορείς χρησιμοποιήστε το πλαίσιο Bootstrap με το έργο Django για το στυλ των σελίδων HTML. Η στατική εξάρτηση που έχει φορτωθεί στο επάνω μέρος θα φορτώσει τα στοιχεία που περιλαμβάνονται στον στατικό φάκελο.
Τα πρότυπα Django σάς επιτρέπουν να περάσετε κομμάτια λογικής που είναι υπεύθυνα για την εμφάνιση περιεχομένου. Οι ετικέτες προτύπων αποτελούνται από κείμενο που περιβάλλεται από "{%" και "%}" χαρακτήρες. ο αν/αλλιώς έλεγχος δήλωσης για συνθήκες στη συνάρτηση προβολής. Εάν η συνθήκη είναι αληθής, αποδίδει το περιεχόμενο στο πρώτο μπλοκ. Εάν είναι ψευδές, θα αποδώσει το περιεχόμενο στο δεύτερο.
ο βάση.html αρχείο θα αποδώσει επίσης τα περιεχόμενα του navbar.html ακριβώς εκεί που τοποθετείτε τις ετικέτες προτύπου. Αυτό σημαίνει όποτε επεκτείνετε το βάση.html, navbar.html κληρονομείται επίσης. Οποιοδήποτε πρότυπο που επεκτείνει το βάση.html θα κληρονομήσει οποιοδήποτε στοιχείο με ένα {% περιλαμβάνω %} ετικέτα.
Οποιοδήποτε κείμενο που περιβάλλεται από {{}} είναι μια μεταβλητή προτύπου. Οι μεταβλητές προτύπου είναι δυναμικά δεδομένα που παρέχονται από συναρτήσεις προβολής. Το Django χρησιμοποιεί επίσης ετικέτες μπλοκ που χρησιμοποιούν μια ανοιχτή ετικέτα, όπως {% αποκλεισμός περιεχομένου %}, και μια ετικέτα κλεισίματος, όπως {% endblock %}.
Οι ετικέτες αποκλεισμού επιτρέπουν στα θυγατρικά πρότυπα να παρακάμπτουν τα περιεχόμενα των γονικών προτύπων. Σε αυτή την περίπτωση, το index.html μπορεί να αντικαταστήσει το περιεχόμενό του στην περιοχή που περικλείεται από ετικέτες μπλοκ. Δεν θα παρεμβαίνει στο άλλο βάση.html συστατικά.
Ας εφαρμόσουμε τη λογική στο index.html
{% επεκτείνεται 'βάση.html' %}
{% αποκλεισμός περιεχομένου %}
<div class="κοντέινερ κείμενο-κέντρο" στυλ="άσπρο χρώμα">
<h1>I Am The Index Template</h1>
<Π>Κληρονόμησα το Bootstrap και τη γραμμή πλοήγησης από το base.html</Π>
</div>
{% endblock %}
Στο index.html πρότυπο, χρησιμοποιήστε το {% επέκταση %} ετικέτα για επέκταση των στοιχείων του βάση.html. Μέσα στις ετικέτες μπλοκ {% αποκλεισμός περιεχομένου %}, γράψτε όλο τον κωδικό σας.
Στο index.html πρότυπο, έχετε ένα στοιχείο H1 και ένα στοιχείο παραγράφου. Μπορείτε να χρησιμοποιήσετε τις ετικέτες προτύπου μέσα στα div για να καλέσετε μεταβλητές από το θέα λειτουργία.
Δοκιμή κληρονομιάς προτύπου στο πρόγραμμα περιήγησης
Τώρα μπορείτε να εκτελέσετε τον διακομιστή. Αφού το κάνετε, ελέγξτε στο πρόγραμμα περιήγησης για να δείτε αν το index.html αρχείο κληρονόμησε τα στοιχεία του βάση.html. Αυτό περιλαμβάνει συνδέσμους Bootstrap και το navbar.html πρότυπο.
ο index.html Το αρχείο θα πρέπει να κληρονομήσει τα στυλ Navbar και Bootstrap από το βασικό πρότυπο. Εάν ναι, έχετε χρησιμοποιήσει σωστά την κληρονομικότητα προτύπου. Χωρίς αυτό, θα έπρεπε να προσθέσετε τη γραμμή πλοήγησης και τους συνδέσμους Bootstrap όπου τα χρειάζεστε.
Επίσης, τυχόν αλλαγές που κάνετε στο βάση.html θα αντικατοπτρίζεται σε όλα τα πρότυπα στα οποία επεκτείνεται. Αυτή η αρχή είναι σημαντική στον χειρισμό σφαλμάτων. Μπορείτε εύκολα να αναγνωρίσετε πρότυπα με σφάλματα.
Η κληρονομικότητα προτύπων είναι ένας από τους πολλούς τρόπους με τους οποίους η Django εφαρμόζει την αρχή Don't Repeat Yourself (DRY). Θα κάνει την ανάπτυξή σας πολύ πιο εύκολη και απλή.
Γιατί πρέπει να χρησιμοποιήσετε το Django Template Inheritance
Η κληρονομικότητα του προτύπου του Django είναι ένα από τα πιο περίπλοκα χαρακτηριστικά του. Μπορεί να χρειαστεί λίγος χρόνος για να το καταλάβετε, αλλά μόλις το καταλάβετε, εξοικονομείτε μεγάλη προσπάθεια ανάπτυξης.
Η κληρονομικότητα προτύπων σάς επιτρέπει να μοιράζεστε κώδικα μεταξύ γονικών και θυγατρικών προτύπων. Αυτό διασφαλίζει ότι δεν θα γράφετε επαναλαμβανόμενο κώδικα στα πρότυπά σας.
Η κληρονομικότητα προτύπων είναι σημαντική σε μεγάλα έργα Django. Σε τέτοιες περιπτώσεις, υπάρχουν πολλές εφαρμογές και πολλά πρότυπα για σχεδιασμό. Τα γονικά πρότυπα σάς δίνουν μεγάλο έλεγχο στα άλλα στοιχεία της εφαρμογής.
Με την εκμάθηση του συστήματος προτύπων Django, μπορείτε να απολαύσετε τη σύνταξη καθαρού και ισχυρού κώδικα.