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

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

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

instagram viewer

Τι είναι οι προβολές βάσει τάξης στο Django;

Στο Django, οι απόψεις είναι Λειτουργίες Python που λαμβάνουν ένα αίτημα ιστού και επιστρέφουν μια απάντηση ιστού. Οι προβολές που βασίζονται σε κλάσεις (CBV) είναι ένας εναλλακτικός τρόπος ορισμού προβολών στο Django χρησιμοποιώντας κλάσεις Python αντί για συναρτήσεις.

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

Ο κώδικας που χρησιμοποιείται σε αυτό το άρθρο είναι διαθέσιμος σε αυτό Αποθετήριο GitHub.

Προβολές βάσει τάξης Διαθέσιμες στο Django

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

  1. Προβολή λίστας: Αυτή η προβολή αποδίδει μια λίστα αντικειμένων που ανακτήθηκαν από ένα μοντέλο. Για παράδειγμα, μια σελίδα που παραθέτει όλες τις διαθέσιμες αναρτήσεις σε ένα ιστολόγιο θα χρησιμοποιεί α Προβολή λίστας.
  2. Προβολή λεπτομερειών: Αυτή η προβολή αποδίδει μια λεπτομερή προβολή ενός μεμονωμένου αντικειμένου που ανακτήθηκε από ένα μοντέλο. Μπορείτε να χρησιμοποιήσετε α Προβολή λεπτομερειών για να εμφανίσετε τις λεπτομέρειες συγκεκριμένων αναρτήσεων σε μια εφαρμογή ιστολογίου.
  3. CreateView: Αυτή η προβολή αποδίδει μια φόρμα για τη δημιουργία ενός νέου αντικειμένου και χειρίζεται την υποβολή της φόρμας. Για παράδειγμα, σε μια εφαρμογή διαχείρισης εργασιών, θα χρησιμοποιήσετε αυτήν την προβολή για τη δημιουργία νέων εργασιών.
  4. Διαγραφή Προβολής: Αυτή η προβολή αποδίδει μια σελίδα επιβεβαίωσης για τη διαγραφή ενός αντικειμένου και χειρίζεται τη διαγραφή της σελίδας.
  5. UpdateView: Αυτή η προβολή αποδίδει μια φόρμα για να ενημερώσει ένα υπάρχον αντικείμενο και χειρίζεται την υποβολή της φόρμας.

Το Django παρέχει επίσης άλλες απόψεις, όπως TemplateView, RedirectView, και FormView. Μπορείτε να ανατρέξετε σε τεκμηρίωση του Django για λεπτομερείς πληροφορίες σχετικά με προβολές που βασίζονται στην τάξη.

Δημιουργήστε μια εφαρμογή διαχείρισης εργασιών με προβολές βασισμένες στην τάξη του Django

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

Ρύθμιση ενός έργου Django

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

  1. Εγκαταστήστε το Django στο δικό σας Εικονικό περιβάλλον Python με αυτή την εντολή:
    pip install django
  2. Δημιουργήστε ένα έργο Django. Η ακόλουθη εντολή θα δημιουργήσει ένα έργο που ονομάζεται project_core.
    django-admin startproject project_core .
  3. Δημιουργήστε μια εφαρμογή που ονομάζεται διαχειριστής εργασιών.
    python manager.py startapp task_manager
  4. Στο δικό σου settings.py προσθέστε το όνομα της εφαρμογής σας στο INSTALLED_APPS λίστα.
    INSTALLED_APPS = [
    'διαχειριστής εργασιών',
    ]
  5. Ανοιξε το urls.py αρχείο στον κατάλογο του έργου σας και διαμορφώστε τις διευθύνσεις URL για εσάς διαχειριστής εργασιών εφαρμογή:
    από django.urls εισαγωγή μονοπάτι, περιλαμβάνει

    urlpatterns = [
    μονοπάτι('', περιλαμβάνω('task_manager.urls')),
    ]

Δημιουργήστε ένα μοντέλο για την εφαρμογή διαχείρισης εργασιών σας

Στον κατάλογο της εφαρμογής σας (ή διαχειριστής εργασιών φάκελο), ανοίξτε το models.py αρχείο και δημιουργήστε ένα μοντέλο για την εφαρμογή διαχείρισης εργασιών σας. Ακολουθεί ένα δείγμα μοντέλου που μπορείτε να χρησιμοποιήσετε:

από django.db εισαγωγή μοντέλα

τάξηΕργο(μοντέλα. Μοντέλο):
τίτλος = μοντέλα. CharField (max_length=200)
περιγραφή = μοντέλα. Πεδίο κειμένου()
ολοκληρωμένο = μοντέλα. BooleanField (προεπιλογή=Ψευδής)
δημιουργήθηκε_α = μοντέλα. DateTimeField (auto_now_add=Αληθής)

Μεταφέρετε το μοντέλο σας με αυτήν την εντολή:

python manager.py makemigrations && python manager.py migrate

Δημιουργήστε μια φόρμα Django για την εφαρμογή σας

Θα πρέπει να έχετε ένα έντυπο για χειρισμό Δημιουργώ και Εκσυγχρονίζω επιχειρήσεις. Στον κατάλογο της εφαρμογής σας, δημιουργήστε ένα αρχείο που ονομάζεται φόρμες.py. Εδώ είναι ένα παράδειγμα:

από τζάνγκο εισαγωγή μορφές
από .μοντέλα εισαγωγή Εργο

τάξηΦόρμα Εργασίας(έντυπα. ModelForm):
τάξηΜετα:
μοντέλο = Εργασία
πεδία = ['τίτλος', 'περιγραφή', 'ολοκληρώθηκε το']

widgets = {
'τίτλος': έντυπα. Εισαγωγή κειμένου (attrs={'τάξη': «Έλεγχος μορφής»,}),
'περιγραφή': έντυπα. Textarea (attrs={'τάξη': «Έλεγχος μορφής»,}),
'ολοκληρώθηκε το': έντυπα. CheckboxInput (attrs={'τάξη': «φόρμα-έλεγχος-εισαγωγή»}),
}

Ο παραπάνω κώδικας έχει μια κλάση που ονομάζεται Φόρμα Εργασίας που ορίζει τα πεδία και τα γραφικά στοιχεία της φόρμας. Καθορίζει επίσης το μοντέλο που θα χρησιμοποιηθεί.

Δημιουργήστε προβολές Django για κάθε λειτουργία CRUD

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

Εισαγάγετε τις απαραίτητες ενότητες και πακέτα

Ανοιξε το δικό σου views.py αρχείο και πραγματοποιήστε τις ακόλουθες εισαγωγές:

από django.views.generic εισαγωγή ListView, DetailView, CreateView, UpdateView, DeleteView
από django.urls εισαγωγή reverse_lazy
από .μοντέλα εισαγωγή Εργο
από .έντυπα εισαγωγή Φόρμα Εργασίας

Ο παραπάνω κωδικός εισάγει πέντε CBV. Επίσης εισάγει reverse_lazy για να ανακατευθύνετε τον χρήστη σε μια καθορισμένη διεύθυνση URL μετά την υποβολή μιας φόρμας. Τέλος, εισάγει το Εργο μοντέλο, και το Φόρμα Εργασίας δημιουργήθηκε νωρίτερα.

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

Μια εφαρμογή διαχείρισης εργασιών θα πρέπει να έχει μια σελίδα με όλες τις εργασίες που δημιουργήθηκαν από τον χρήστη. Για να δημιουργήσετε μια προβολή για αυτό, θα πρέπει να χρησιμοποιήσετε το Προβολή λίστας. Εδώ είναι ένα παράδειγμα:

τάξηTaskListView(Προβολή λίστας):
μοντέλο = Εργασία
όνομα_προτύπου = 'task_manager/task_list.html'
context_object_name = 'καθήκοντα'

Η παραπάνω προβολή ορίζει τρία χαρακτηριστικά τα οποία είναι:

  1. μοντέλο: Αυτό το χαρακτηριστικό ορίζει ποιο μοντέλο θα χρησιμοποιηθεί για τη συγκεκριμένη προβολή.
  2. όνομα_προτύπου: Αυτό το χαρακτηριστικό λέει στο Django ποιο πρότυπο να αποδώσει στο πρόγραμμα περιήγησης.
  3. context_object_name: Αυτό το χαρακτηριστικό ορίζει το όνομα που επιτρέπει στο πρότυπο να έχει πρόσβαση στη λίστα των αντικειμένων του μοντέλου.

Τα περισσότερα CBV θα περιέχουν αυτά τα τρία χαρακτηριστικά.

Δημιουργήστε μια προβολή για τη διαχείριση των λεπτομερειών εργασίας

Κάθε εργασία που δημιουργεί ένας χρήστης πρέπει να έχει μια σελίδα που να δείχνει τις λεπτομέρειες της. Το ιδανικό CBV για να το χειριστείτε αυτό είναι DetailVew. Εδώ είναι ένα απλό παράδειγμα:

τάξηTaskDetailView(Προβολή λεπτομερειών):
μοντέλο = Εργασία
όνομα_προτύπου = 'task_manager/task_detail.html'

Δημιουργήστε μια προβολή για τη δημιουργία εργασιών

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

τάξηTaskCreateView(CreateView):
μοντέλο = Εργασία
form_class = Φόρμα Εργασίας
όνομα_προτύπου = 'task_manager/task_form.html'
success_url = reverse_lazy('λίστα εργασιών')

Ο παραπάνω κώδικας εισάγει δύο νέα χαρακτηριστικά: form_class και success_url.

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

ο success_url καθορίζει τον τρόπο ανακατεύθυνσης του χρήστη μετά την υποβολή της φόρμας. Χρησιμοποιεί το reverse_lazy συνάρτηση που παίρνει το όνομα μιας διαδρομής URL.

Δημιουργήστε μια προβολή για επεξεργασία εργασιών

Για να επιτρέψετε στους χρήστες σας να επεξεργάζονται ή να ενημερώνουν τις εργασίες τους, θα πρέπει να δημιουργήσετε μια προβολή που έχει την εξής μορφή:

τάξηTaskUpdateView(UpdateView):
μοντέλο = Εργασία
form_class = Φόρμα Εργασίας
όνομα_προτύπου = 'task_manager/task_form.html'
success_url = reverse_lazy('λίστα εργασιών')

Η παραπάνω άποψη είναι παρόμοια με την TaskCreateView δημιουργήθηκε νωρίτερα. Η μόνη διαφορά είναι η χρήση του UpdateView.

Δημιουργήστε μια προβολή για να χειριστείτε τις λειτουργίες διαγραφής

Για να επιτρέψετε στους χρήστες σας να διαγράφουν εργασίες όποτε θέλουν, θα πρέπει να χρησιμοποιήσετε το Διαγραφή Προβολής CBV. Εδώ είναι ένα παράδειγμα:

τάξηTaskDeleteView(Διαγραφή Προβολής):
μοντέλο = Εργασία
όνομα_προτύπου = 'task_manager/task_confirm_delete.html'
success_url = reverse_lazy('λίστα εργασιών')

Διαμορφώστε τις διευθύνσεις URL της εφαρμογής σας

Στον κατάλογο της εφαρμογής σας, δημιουργήστε ένα urls.py αρχείο και διαμορφώστε τα μοτίβα URL σας ως εξής:

από django.urls εισαγωγή μονοπάτι
από .προβολές εισαγωγή TaskListView, TaskDetailView, TaskCreateView, TaskUpdateView, TaskDeleteView

urlpatterns =
μονοπάτι('', TaskListView.as_view(), όνομα='λίστα εργασιών'),
μονοπάτι('δημιουργώ/', TaskCreateView.as_view(), name="εργασία_δημιουργία"),
μονοπάτι('καθήκοντα//', TaskDetailView.as_view(), όνομα='task_detail'),
μονοπάτι('καθήκοντα//update/', TaskUpdateView.as_view(), όνομα='task_update'),
μονοπάτι('καθήκοντα//delete/', TaskDeleteView.as_view(), όνομα='εργασία_διαγραφή'),
]

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

Μπορείς χρησιμοποιήστε Django slugs για να δημιουργήσετε URL αντί για το πρωτεύον κλειδί που χρησιμοποιείται παραπάνω.

Δημιουργήστε πρότυπα για τις προβολές σας

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

Στον κατάλογο της εφαρμογής σας, δημιουργήστε τέσσερα πρότυπα HTML. Θα πρέπει επίσης να δημιουργήσετε βάση.html αρχείο. Μπορείς στυλ στα πρότυπα Django σας με το Bootstrap για να εξοικονομήσετε χρόνο.

Πρότυπο λίστας εργασιών

Αυτό το πρότυπο θα πρέπει να περιλαμβάνει κώδικα που παραθέτει όλες τις εργασίες στο μοντέλο. Ένα σκελετικό παράδειγμα του κώδικα είναι αυτό:

{% extends 'base.html' %}

{% αποκλεισμός περιεχομένου %}
<κέντρο>
<h1>Τα καθήκοντά σαςh1>
<έναhref="{% url 'task_create' %}">Προσθήκη Εργασίαςένα>
{% για εργασία σε εργασίες %}
<div>
<div>
<h5>{{ task.title }}h5>
<Π>{{ task.description|tuncatechars: 50 }}Π>
<Π>
<ισχυρός>Ολοκληρώθηκε το:ισχυρός>
{% if task.completed %}Ναι{% else %}Όχι{% endif %}
Π>
<έναhref="{% url 'task_detail' task.pk %}">
Διαβάστε περισσότερα
ένα>
<έναhref="{% url 'task_delete' task.pk %}">
Διαγραφή εργασίας
ένα>
div>
div>
{% κενό %}
<h3>Δεν υπάρχουν ακόμη εργασίες.h3>
<έναhref="{% url 'task_create' %}">Προσθήκη Εργασίαςένα>
{% τέλος για %}
κέντρο>
{% endblock %}

Με ορισμένες τάξεις Bootstrap, μπορείτε να κάνετε τη σελίδα σας να μοιάζει με αυτό:

Πρότυπο λεπτομερειών εργασίας

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

{% extends 'base.html' %}

{% αποκλεισμός περιεχομένου %}
<h1>{{ task.title }}h1>
<Π>{{ περιγραφή των εργασιών }}Π>
<Π>Ολοκληρώθηκε: {% if task.completed %}Ναι{% else %}Όχι{% endif %}Π>
<έναhref="{% url 'task_update' task.pk %}">Επεξεργασία εργασίαςένα>
<έναhref="{% url 'task_delete' task.pk %}">Διαγραφή εργασίαςένα>
{% endblock %}

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

Πρότυπο φόρμας εργασίας

Αυτό το πρότυπο πρέπει να περιέχει μια φόρμα που επιτρέπει στο χρήστη να δημιουργήσει ή να ενημερώσει μια εργασία.

{% extends 'base.html' %}

{% αποκλεισμός περιεχομένου %}
<h1>Δημιουργία Εργασίαςh1>
<μορφήμέθοδος="Θέση">
{% csrf_token %}
{{ form.as_p }}
<κουμπίτύπος="υποβάλλουν">Αποθηκεύσετεκουμπί>
μορφή>
{% endblock %}

Το πρότυπο θα μοιάζει με αυτό:

Διαγραφή προτύπου εργασιών

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

{% extends 'base.html' %}

{% αποκλεισμός περιεχομένου %}
<h1>Επιβεβαίωση Διαγραφήςh1>
<Π>Είστε βέβαιοι ότι θέλετε να διαγράψετε το "{{ object.title }}";Π>
<μορφήμέθοδος="Θέση">
{% csrf_token %}
<κουμπίτύπος="υποβάλλουν">Διαγράφωκουμπί>
<έναhref="{% url 'task_list' %}">Ματαίωσηένα>
μορφή>
{% endblock %}

Με κάποιο Bootstrap, η σελίδα σας θα πρέπει να μοιάζει με αυτό:

Χρησιμοποιήστε προβολές βάσει τάξης για να αυξήσετε την παραγωγικότητά σας

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