Dowiedz się, jak zbudować aplikację do zarządzania zadaniami, korzystając z zasad CRUD i widoków opartych na klasach w Django.

Jedną z kluczowych cech Django jest wbudowana obsługa tworzenia projektów na podstawie operacji CRUD (Create, Read, Update, Delete). Podczas gdy widoki Django oparte na klasach zapewniają szybki, łatwy i elastyczny sposób tworzenia aplikacji internetowych, wielu programistów nadal korzysta z widoków opartych na funkcjach.

Widoki oparte na klasach oferują kilka korzyści w porównaniu z widokami opartymi na funkcjach, w tym dziedziczenie, strukturyzowanie kodu, możliwość ponownego użycia kodu i inne. Chociaż implementacja widoków opartych na klasach może wydawać się nieco skomplikowana, ten przewodnik pomoże ci zrozumieć tę koncepcję, tworząc aplikację do zarządzania zadaniami i dostarczając instrukcje krok po kroku.

Czym są widoki oparte na klasach w Django?

W Django widoki są Funkcje Pythona które pobierają żądanie sieciowe i zwracają odpowiedź sieciową. Widoki oparte na klasach (CBV) to alternatywny sposób definiowania widoków w Django przy użyciu klas Pythona zamiast funkcji.

instagram viewer

CBV mają kilka zalet, takich jak lepsza organizacja kodu, łatwiejsze ponowne użycie kodu oraz możliwość wykorzystania dziedziczenia do tworzenia odmian istniejących widoków. CBV zapewniają również wbudowane metody, takie jak Dostawać() I post() metody, które można nadpisać dla niestandardowych zachowań.

Kod użyty w tym artykule jest dostępny w this Repozytorium GitHub.

Widoki oparte na klasach dostępne w Django

Django zapewnia kilka wbudowanych CBV do popularnych zastosowań, takich jak wyświetlanie list obiektów lub tworzenie nowych. Niektóre z tych wbudowanych CBV to:

  1. Widok listy: Ten widok renderuje listę obiektów pobranych z modelu. Na przykład strona, która zawiera listę wszystkich postów dostępnych na blogu, użyje rozszerzenia Widok listy.
  2. Widok Szczegółowy: Ten widok renderuje szczegółowy widok pojedynczego obiektu pobranego z modelu. Możesz użyć A Widok Szczegółowy aby wyświetlić szczegóły określonych postów w aplikacji blogowej.
  3. Utwórz widok: Ten widok renderuje formularz w celu utworzenia nowego obiektu i obsługuje przesyłanie formularza. Na przykład w aplikacji do zarządzania zadaniami będziesz używać tego widoku do tworzenia nowych zadań.
  4. Usuń widok: Ten widok wyświetla stronę potwierdzenia usunięcia obiektu i obsługuje usuwanie strony.
  5. Aktualizuj widok: Ten widok renderuje formularz w celu aktualizacji istniejącego obiektu i obsługuje przesyłanie formularza.

Django udostępnia również inne widoki, w tym Widok szablonu, Widok przekierowania, I Widok formularza. Możesz odnieść się do Dokumentacja Django aby uzyskać szczegółowe informacje na temat widoków opartych na klasach.

Zbuduj aplikację Menedżera zadań z widokami opartymi na klasach Django

Zbudowanie aplikacji, takiej jak aplikacja do zarządzania zadaniami, pozwoli Ci zrozumieć, jak zaimplementować operacje CRUD z CBV. Menedżer zadań ma funkcje umożliwiające użytkownikom tworzenie, aktualizowanie, usuwanie i odczytywanie zadań. Te funkcje są zgodne z operacjami CRUD. Poniższe kroki pomogą Ci zbudować aplikację do zarządzania zadaniami z Django CBV.

Skonfiguruj projekt Django

Aby utworzyć aplikację do zarządzania zadaniami za pomocą Django, powinieneś zacząć od wykonania następujących kroków:

  1. Zainstaluj Django w swoim Środowisko wirtualne Pythona tym poleceniem:
    pip zainstaluj django
  2. Utwórz projekt Django. Następujące polecenie utworzy projekt o nazwie rdzeń_projektu.
    django-admin startproject project_core .
  3. Utwórz aplikację o nazwie menadżer zadań.
    python manage.py aplikacja startowa menedżer_zadań
  4. W Twoim ustawienia.py dodaj nazwę swojej aplikacji do ZAINSTALOWANE_APLIKACJE lista.
    ZAINSTALOWANE_APLIKACJE = [
    'menadżer zadań',
    ]
  5. Otworzyć urls.py plik w katalogu projektu i skonfiguruj adresy URL dla pliku menadżer zadań aplikacja:
    z django.adresy URL import ścieżka, zawiera

    wzorce adresów URL = [
    ścieżka('', włączać(„menedżer_zadań.adresy URL”)),
    ]

Utwórz model dla swojej aplikacji Menedżer zadań

W katalogu aplikacji (lub menadżer zadań folder), otwórz plik modele.py plik i utwórz model dla aplikacji do zarządzania zadaniami. Oto przykładowy model, którego możesz użyć:

z django.db import modele

klasaZadanie(modele. Model):
tytuł = modele. CharField (max_length=200)
opis = modele. Pole tekstowe()
zakończone = modele. BooleanField (domyślnie=FAŁSZ)
utworzono_w = modele. DateTimeField (auto_now_add=PRAWDA)

Przeprowadź migrację modelu za pomocą tego polecenia:

python manage.py makemigrations && python manage.py migracja

Utwórz formularz Django dla swojej aplikacji

Powinieneś mieć formularz do obsługi Tworzyć I Aktualizacja operacje. W katalogu aplikacji utwórz plik o nazwie formularze.py. Oto przykład:

z django import formy
z .modele import Zadanie

klasaFormularz zadania(formularze. ModelFormularz):
klasaMeta:
model = Zadanie
pola = ['tytuł', 'opis', 'zakończony']

widżety = {
'tytuł': formy. TextInput (attrs={'klasa': „kontrola formy”,}),
'opis': formy. pole tekstowe (attrs={'klasa': „kontrola formy”,}),
'zakończony': formy. CheckboxInput (attrs={'klasa': „Wprowadzanie sprawdzania formularza”}),
}

Powyższy kod zawiera klasę o nazwie Formularz zadania który definiuje pola i widżety formularza. Określa również model, którego należy użyć.

Twórz widoki Django dla każdej operacji CRUD

Podstawowa aplikacja CRUD z CBV wymaga co najmniej czterech widoków, aby skutecznie obsłużyć wszystkie operacje. Kilka następnych kroków pokaże Ci, jak je utworzyć.

Zaimportuj niezbędne moduły i pakiety

Otwórz swoje wyświetlenia.py plik i wykonaj następujące importy:

z django.views.generic import ListView, DetailView, CreateView, UpdateView, DeleteView
z django.adresy URL import rewers_leniwy
z .modele import Zadanie
z .formy import Formularz zadania

Powyższy kod importuje pięć CBV. Zajmuje się również importem rewers_leniwy aby przekierować użytkownika na określony adres URL po przesłaniu formularza. Wreszcie importuje tzw Zadanie modelka i Formularz zadania utworzony wcześniej.

Utwórz widok, aby wyświetlić listę obiektów modelu

Aplikacja do zarządzania zadaniami powinna mieć stronę z listą wszystkich zadań utworzonych przez użytkownika. Aby utworzyć w tym celu widok, należy użyć pliku Widok listy. Oto przykład:

klasaWidok listy zadań(Widok listy):
model = Zadanie
nazwa_szablonu = „menedżer_zadań/lista_zadań.html”
nazwa_obiektu_kontekstu = „zadania”

Powyższy widok definiuje trzy atrybuty, którymi są:

  1. Model: Ten atrybut określa, który model ma być używany w tym konkretnym widoku.
  2. nazwa_szablonu: Ten atrybut mówi Django, który szablon renderować w przeglądarce.
  3. nazwa_obiektu_kontekstu: Ten atrybut określa nazwę, która umożliwia szablonowi dostęp do listy obiektów w modelu.

Większość CBV będzie zawierać te trzy atrybuty.

Utwórz widok do obsługi szczegółów zadania

Każde zadanie utworzone przez użytkownika powinno mieć stronę ze szczegółami. Idealny CBV do obsługi tego jest SzczegółyVew. Oto prosty przykład:

klasaWidok szczegółów zadania(Widok Szczegółowy):
model = Zadanie
nazwa_szablonu = „menedżer_zadań/szczegóły_zadania.html”

Utwórz widok do tworzenia zadań

Utwórz widok do obsługi tworzenia lub dodawania nowych zadań. To jest Tworzyć część operacji CRUD, a właściwym poglądem na to jest Utwórz widok. Oto jak go używać:

klasaWidok zadaniaUtwórz(Utwórz widok):
model = Zadanie
klasa_formularza = Formularz zadania
nazwa_szablonu = „menedżer_zadań/formularz_zadania.html”
adres_url_sukcesu = rewers_leniwy('Lista zadań')

Powyższy kod wprowadza dwa nowe atrybuty: Utwórz klasę I adres_adresu sukcesu.

The Utwórz klasę atrybut mówi widokowi, którą klasę formularza ma renderować i używać do swoich operacji.

The adres_adresu sukcesu określa sposób przekierowania użytkownika po przesłaniu formularza. Używa rewers_leniwy funkcja, która przyjmuje nazwę ścieżki URL.

Utwórz widok do zadań edycji

Aby umożliwić użytkownikom edytowanie lub aktualizowanie ich zadań, należy utworzyć widok, który wygląda następująco:

klasaWidok aktualizacji zadania(Widok aktualizacji):
model = Zadanie
klasa_formularza = Formularz zadania
nazwa_szablonu = „menedżer_zadań/formularz_zadania.html”
adres_url_sukcesu = rewers_leniwy('Lista zadań')

Powyższy widok jest podobny do Widok zadaniaUtwórz utworzony wcześniej. Jedyną różnicą jest użycie tzw Aktualizuj widok.

Utwórz widok do obsługi operacji usuwania

Aby umożliwić użytkownikom usuwanie zadań w dowolnym momencie, należy użyć metody Usuń widok CBV. Oto przykład:

klasaZadanieUsuńWidok(Usuń widok):
model = Zadanie
nazwa_szablonu = „menedżer_zadań/task_confirm_delete.html”
adres_url_sukcesu = rewers_leniwy('Lista zadań')

Skonfiguruj adresy URL swojej aplikacji

W katalogu aplikacji utwórz plik urls.py plik i skonfiguruj wzorce adresów URL w następujący sposób:

z django.adresy URL import ścieżka
z .wyświetlenia import TaskListView, TaskDetailView, TaskCreateView, TaskUpdateView, TaskDeleteView

wzorce adresów URL =
ścieżka('', TaskListView.as_view(), nazwa='Lista zadań'),
ścieżka('tworzyć/', TaskCreateView.as_view(), nazwa=„tworzenie_zadania”),
ścieżka(„zadania//', TaskDetailView.as_view(), nazwa=„szczegóły_zadania”),
ścieżka(„zadania//update/', TaskUpdateView.as_view(), nazwa=„aktualizacja_zadania”),
ścieżka(„zadania//delete/', TaskDeleteView.as_view(), nazwa=„usuwanie_zadania”),
]

Powyższe wzorce adresów URL są podobne do adresów URL utworzonych za pomocą widoków opartych na funkcjach. Różnica polega na as_view() funkcja dołączona na końcu każdej nazwy widoku.

Możesz używaj ślimaków Django do tworzenia adresów URL zamiast klucza podstawowego użytego powyżej.

Twórz szablony dla swoich poglądów

Zezwolenie użytkownikom na wykonywanie czynności zdefiniowanych w powyższych widokach sugeruje udostępnienie im interfejsu umożliwiającego interakcję. Z widoków utworzonych wcześniej aplikacja menedżera zadań powinna mieć cztery interfejsy użytkownika.

W katalogu aplikacji utwórz cztery szablony HTML. Ty też powinieneś tworzyć baza.html plik. Możesz stylizuj szablony Django za pomocą Bootstrap oszczędzać czas.

Szablon listy zadań

Ten szablon powinien zawierać kod, który zawiera listę wszystkich zadań w modelu. Szkieletowy przykład kodu jest następujący:

{% rozszerza 'base.html' %}

{% zablokuj zawartość %}
<Centrum>
<h1>Twoje zadaniah1>
<Ahref=„{% url „task_create” %}”>Dodaj zadanieA>
{% dla zadania w zadaniach %}
<dz>
<dz>
<h5>{{tytuł zadania}}h5>
<P>{{ opis zadania|truncatechars: 50 }}P>
<P>
<mocny>Zakończony:mocny>
{% if task.completed %}Tak{% else %}Nie{% endif %}
P>
<Ahref="{% url 'task_detail' task.pk %}">
Czytaj więcej
A>
<Ahref="{% url 'task_delete' task.pk %}">
Usuń zadanie
A>
dz>
dz>
{% pusty %}
<h3>Nie ma jeszcze żadnych zadań.h3>
<Ahref=„{% url „task_create” %}”>Dodaj zadanieA>
{% koniec dla %}
Centrum>
{% blok końcowy %}

W przypadku niektórych klas Bootstrap możesz sprawić, by Twoja strona wyglądała tak:

Szablon szczegółów zadania

Ta strona powinna pokazywać pełne szczegóły każdego utworzonego zadania. Oto przykładowy szablon, którego możesz użyć:

{% rozszerza 'base.html' %}

{% zablokuj zawartość %}
<h1>{{tytuł zadania}}h1>
<P>{{ opis zadania }}P>
<P>Ukończono: {% if task.completed %}Tak{% else %}Nie{% endif %}P>
<Ahref="{% url 'task_update' task.pk %}">Edytuj zadanieA>
<Ahref="{% url 'task_delete' task.pk %}">Usuń zadanieA>
{% blok końcowy %}

W zależności od podejścia do stylizacji, Twoja strona powinna wyglądać tak:

Szablon formularza zadania

Ten szablon powinien zawierać formularz, który pozwala użytkownikowi utworzyć lub zaktualizować zadanie.

{% rozszerza 'base.html' %}

{% zablokuj zawartość %}
<h1>Utwórz zadanieh1>
<formularzmetoda="post">
{% csrf_token %}
{{form.as_p}}
<przycisktyp="składać">Ratowaćprzycisk>
formularz>
{% blok końcowy %}

Szablon będzie wyglądał następująco:

Usuń szablon zadania

Ten szablon powinien być stroną potwierdzenia, aby zapobiec przypadkowemu usunięciu zadań.

{% rozszerza 'base.html' %}

{% zablokuj zawartość %}
<h1>Potwierdź usunięcieh1>
<P>Czy na pewno chcesz usunąć „{{ object.title }}”?P>
<formularzmetoda="post">
{% csrf_token %}
<przycisktyp="składać">Usuwaćprzycisk>
<Ahref=„{% adres URL „lista_zadań” %}”>AnulowaćA>
formularz>
{% blok końcowy %}

Z odrobiną Bootstrapa twoja strona powinna wyglądać tak:

Użyj widoków opartych na klasach, aby zwiększyć swoją produktywność

Widoki oparte na klasach to świetny sposób na pisanie czystego, zorganizowanego kodu w krótkim czasie, co zwiększa produktywność. Powinieneś używać ich w swoich projektach tak często, jak to możliwe. Możesz także dalej integrować funkcje, takie jak funkcja wyszukiwania, powiadomienia itd., Aby Twoja aplikacja do zarządzania zadaniami stała się w pełni funkcjonalną aplikacją.