Naučte se, jak vytvořit aplikaci pro správu úloh s využitím principů CRUD a pohledů založených na třídách v Django.

Jednou z klíčových funkcí Django je jeho vestavěná podpora pro vytváření projektů nad operacemi CRUD (Create, Read, Update, Delete). Zatímco pohledy Django založené na třídách poskytují rychlý, snadný a flexibilní způsob vytváření webových aplikací, mnoho vývojářů stále používá pohledy založené na funkcích.

Pohledy založené na třídách nabízejí oproti zobrazením založeným na funkcích několik výhod, včetně dědičnosti, strukturování kódu, opětovné použitelnosti kódu a dalších. I když se implementace pohledů založených na třídách může zdát poněkud složitá, tato příručka vám pomůže pochopit tento koncept vytvořením aplikace správce úloh a poskytnutím podrobných pokynů.

Co jsou pohledy založené na třídách v Django?

V Django jsou výhledy Funkce Pythonu které přijmou webový požadavek a vrátí webovou odpověď. Pohledy založené na třídách (CBV) jsou alternativním způsobem, jak definovat pohledy v Django pomocí tříd Pythonu namísto funkcí.

instagram viewer

CBV mají několik výhod, jako je lepší organizace kódu, snazší opětovné použití kódu a možnost používat dědičnost k vytváření variant existujících pohledů. CBV také poskytují vestavěné metody, jako je např dostat() a pošta() metody, které můžete přepsat pro vlastní chování.

Kód použitý v tomto článku je k dispozici v tomto úložiště GitHub.

Třídní pohledy dostupné v Django

Django poskytuje některé vestavěné CBV pro oblíbené případy použití, jako je zobrazení seznamů objektů nebo vytváření nových. Některé z těchto vestavěných CBV jsou:

  1. Zobrazení seznamu: Toto zobrazení vykreslí seznam objektů načtených z modelu. Například stránka, která obsahuje seznam všech příspěvků dostupných v blogu, bude používat a Zobrazení seznamu.
  2. Detailní pohled: Tento pohled vykreslí detailní pohled na jeden objekt získaný z modelu. Můžete použít a Detailní pohled k zobrazení podrobností konkrétních příspěvků v blogové aplikaci.
  3. CreateView: Toto zobrazení vykreslí formulář pro vytvoření nového objektu a zpracuje odeslání formuláře. Například v aplikaci Správce úloh použijete toto zobrazení pro vytváření nových úkolů.
  4. Odstranit zobrazení: Toto zobrazení vykreslí potvrzovací stránku pro odstranění objektu a provede odstranění stránky.
  5. UpdateView: Toto zobrazení vykreslí formulář pro aktualizaci existujícího objektu a zpracuje odeslání formuláře.

Django také poskytuje další pohledy, včetně TemplateView, RedirectView, a FormView. Můžete odkazovat Djangova dokumentace pro podrobné informace o třídních pohledech.

Sestavte si aplikaci Správce úloh pomocí pohledů založených na třídách Django

Vytvoření aplikace, jako je aplikace správce úloh, vám umožní pochopit, jak implementovat operace CRUD s CBV. Správce úloh má funkce, které uživatelům umožňují vytvářet, aktualizovat, odstraňovat a číst úlohy. Tyto vlastnosti jsou v souladu s operacemi CRUD. Následující kroky vám pomohou vytvořit aplikaci pro správu úloh s Django CBV.

Založte si projekt Django

Chcete-li vytvořit aplikaci správce úloh pomocí Django, měli byste začít následujícím způsobem:

  1. Nainstalujte si Django do svého Virtuální prostředí Python s tímto příkazem:
    pip nainstalovat django
  2. Vytvořte projekt Django. Následující příkaz vytvoří projekt s názvem project_core.
    django-admin startproject project_core .
  3. Vytvořte aplikaci s názvem Správce úloh.
    python manage.py startapp task_manager
  4. Ve vašem settings.py přidejte název své aplikace do INSTALLED_APPS seznam.
    INSTALLED_APPS = [
    'Správce úloh',
    ]
  5. Otevři urls.py ve vašem projektovém adresáři a nakonfigurujte adresy URL pro váš Správce úloh aplikace:
    z django.urls import cestu, zahrnout

    urlpatterns = [
    cesta('', zahrnout('task_manager.urls')),
    ]

Vytvořte model pro aplikaci Správce úloh

V adresáři aplikace (nebo Správce úloh složku), otevřete svůj modely.py soubor a vytvořte model pro vaši aplikaci Správce úloh. Zde je ukázkový model, který můžete použít:

z django.db import modely

třídaÚkol(modely. Modelka):
titul = modely. CharField (max_length=200)
popis = modely. Textové pole()
dokončené = modely. BooleanField (výchozí=Nepravdivé)
created_at = modely. DateTimeField (auto_now_add=Skutečný)

Migrujte svůj model pomocí tohoto příkazu:

python manage.py makemigrations && python manage.py migrate

Vytvořte formulář Django pro vaši aplikaci

Měli byste mít formulář pro manipulaci Vytvořit a Aktualizace operace. V adresáři aplikace vytvořte soubor s názvem formy.py. Zde je příklad:

z django import formuláře
z .modely import Úkol

třídaTaskForm(formuláře. ModelForm):
třídaMeta:
model = úkol
pole = ['titul', 'popis', 'dokončeno']

widgety = {
'titul': formuláře. TextInput (attrs={'třída': 'form-control',}),
'popis': formuláře. Textarea (attrs={'třída': 'form-control',}),
'dokončeno': formuláře. CheckboxInput (attrs={'třída': 'form-check-input'}),
}

Výše uvedený kód má třídu nazvanou TaskForm který definuje pole a widgety formuláře. Také specifikuje model, který se má použít.

Vytvořte zobrazení Django pro každou operaci CRUD

Základní aplikace CRUD s CBV vyžaduje k efektivnímu zpracování všech operací alespoň čtyři pohledy. Následujících několik kroků vám ukáže, jak je vytvořit.

Importujte potřebné moduly a balíčky

Otevři tvůj views.py soubor a proveďte následující importy:

z django.views.generic import ListView, DetailView, CreateView, UpdateView, DeleteView
z django.urls import obrácený_líný
z .modely import Úkol
z .formuláře import TaskForm

Výše uvedený kód importuje pět CBV. Také dováží obrácený_líný k přesměrování uživatele na zadanou adresu URL po odeslání formuláře. Nakonec importuje Úkol model a TaskForm vytvořené dříve.

Vytvořte pohled na seznam objektů modelu

Aplikace správce úloh by měla mít stránku se seznamem všech úloh vytvořených uživatelem. Chcete-li pro to vytvořit zobrazení, měli byste použít Zobrazení seznamu. Zde je příklad:

třídaTaskListView(Zobrazení seznamu):
model = úkol
název_šablony = 'task_manager/task_list.html'
kontext_název_objektu = 'úkoly'

Výše uvedený pohled definuje tři atributy, kterými jsou:

  1. Modelka: Tento atribut definuje, který model se má použít pro daný konkrétní pohled.
  2. název_šablony: Tento atribut říká Django, kterou šablonu má vykreslit v prohlížeči.
  3. kontext_název_objektu: Tento atribut definuje název, který umožňuje šabloně přístup k seznamu objektů v modelu.

Většina CBV bude obsahovat tyto tři atributy.

Vytvořte zobrazení pro zpracování podrobností úkolu

Každá úloha, kterou uživatel vytvoří, by měla mít stránku s podrobnostmi. Ideální CBV to zvládnout je DetailVew. Zde je jednoduchý příklad:

třídaTaskDetailView(Detailní pohled):
model = úkol
název_šablony = 'task_manager/task_detail.html'

Vytvořte zobrazení pro vytváření úkolů

Vytvořte pohled pro zpracování vytváření nebo přidávání nových úkolů. To je Vytvořit součástí operací CRUD a správný pohled na to je CreateView. Postup použití:

třídaTaskCreateView(CreateView):
model = úkol
form_class = TaskForm
název_šablony = 'task_manager/task_form.html'
success_url = reverse_lazy('seznam úkolů')

Výše uvedený kód zavádí dva nové atributy: třída_formuláře a success_url.

The třída_formuláře atribut říká pohledu, kterou třídu formuláře má vykreslit a použít pro své operace.

The success_url určuje, jak přesměrovat uživatele po odeslání formuláře. Používá se obrácený_líný funkce, která přebírá název cesty URL.

Vytvořte zobrazení pro úpravy úkolů

Chcete-li uživatelům umožnit upravovat nebo aktualizovat jejich úkoly, měli byste vytvořit zobrazení, které vypadá takto:

třídaTaskUpdateView(UpdateView):
model = úkol
form_class = TaskForm
název_šablony = 'task_manager/task_form.html'
success_url = reverse_lazy('seznam úkolů')

Výše uvedený pohled je podobný jako TaskCreateView vytvořené dříve. Jediným rozdílem je použití UpdateView.

Vytvořte zobrazení pro zpracování operací odstranění

Chcete-li uživatelům umožnit mazat úkoly, kdykoli chtějí, měli byste použít Odstranit zobrazení CBV. Zde je příklad:

třídaTaskDeleteView(DeleteView):
model = úkol
název_šablony = 'task_manager/task_confirm_delete.html'
success_url = reverse_lazy('seznam úkolů')

Nakonfigurujte adresy URL své aplikace

V adresáři aplikace vytvořte a urls.py soubor a nakonfigurujte vzory adres URL takto:

z django.urls import cesta
z .zobrazení import TaskListView, TaskDetailView, TaskCreateView, TaskUpdateView, TaskDeleteView

urlpatterns =
cesta('', TaskListView.as_view(), name='seznam úkolů'),
cesta('vytvořit/', TaskCreateView.as_view(), name='task_create'),
cesta('úkoly//', TaskDetailView.as_view(), name='task_detail'),
cesta('úkoly//update/', TaskUpdateView.as_view(), name='task_update'),
cesta('úkoly//delete/', TaskDeleteView.as_view(), name='task_delete'),
]

Výše uvedené vzory adres URL jsou podobné adresám URL vytvořeným pomocí zobrazení založených na funkcích. Rozdíl je v tom as_view() funkce připojená na konec každého názvu pohledu.

Můžeš použijte Django slimáky k vytvoření URL namísto výše použitého primárního klíče.

Vytvářejte šablony pro své pohledy

Pokud uživatelům umožníte provádět akce definované ve výše uvedených zobrazeních, navrhujete, abyste jim poskytli rozhraní, se kterým mohou komunikovat. Z dříve vytvořených pohledů by aplikace správce úloh měla mít čtyři uživatelská rozhraní.

V adresáři aplikace vytvořte čtyři šablony HTML. Měli byste také vytvořit základna.html soubor. Můžeš upravte své šablony Django pomocí Bootstrap ušetřit čas.

Šablona seznamu úkolů

Tato šablona by měla obsahovat kód, který uvádí všechny úkoly v modelu. Základní příklad kódu je tento:

{% extends 'base.html' %}

{% block content %}
<centrum>
<h1>Vaše úkolyh1>
<Ahref="{% url 'task_create' %}">Přidat úkolA>
{% pro úkol v úkolech %}
<div>
<div>
<h5>{{ task.title }}h5>
<p>{{ task.description|truncatechars: 50 }}p>
<p>
<silný>Dokončeno:silný>
{% if task.completed %}Ano{% else %}Ne{% endif %}
p>
<Ahref="{% url 'task_detail' task.pk %}">
Přečtěte si více
A>
<Ahref="{% url 'task_delete' task.pk %}">
Smazat úkol
A>
div>
div>
{% prázdné %}
<h3>Zatím žádné úkoly.h3>
<Ahref="{% url 'task_create' %}">Přidat úkolA>
{% endfor %}
centrum>
{% endblock %}

S některými třídami Bootstrap můžete vytvořit svou stránku takto:

Šablona podrobností úkolu

Tato stránka by měla zobrazovat všechny podrobnosti o každém vytvořeném úkolu. Zde je příklad šablony, kterou můžete použít:

{% extends 'base.html' %}

{% block content %}
<h1>{{ task.title }}h1>
<p>{{ popis ulohy }}p>
<p>Dokončeno: {% if task.completed %}Ano{% else %}Ne{% endif %}p>
<Ahref="{% url 'task_update' task.pk %}">Upravit úkolA>
<Ahref="{% url 'task_delete' task.pk %}">Smazat úkolA>
{% endblock %}

V závislosti na vašem přístupu ke stylu by vaše stránka měla vypadat takto:

Šablona formuláře úkolu

Tato šablona by měla obsahovat formulář, který uživateli umožní vytvořit nebo aktualizovat úkol.

{% extends 'base.html' %}

{% block content %}
<h1>Vytvořit úkolh1>
<formulářmetoda="pošta">
{% csrf_token %}
{{ form.as_p }}
<knoflíktyp="Předložit">Uložitknoflík>
formulář>
{% endblock %}

Šablona bude vypadat takto:

Smazat šablonu úkolu

Tato šablona by měla být stránka s potvrzením, aby se zabránilo náhodnému smazání úkolů.

{% extends 'base.html' %}

{% block content %}
<h1>Potvrďte smazáníh1>
<p>Opravdu chcete smazat "{{ object.title }}"?p>
<formulářmetoda="pošta">
{% csrf_token %}
<knoflíktyp="Předložit">Vymazatknoflík>
<Ahref="{% url 'task_list' %}">zrušeníA>
formulář>
{% endblock %}

S nějakým Bootstrapem by vaše stránka měla vypadat takto:

Zvyšte svou produktivitu pomocí pohledů podle třídy

Pohledy založené na třídách jsou skvělým způsobem, jak napsat čistý, organizovaný kód v krátkém čase, čímž zvýšíte svou produktivitu. Měli byste je používat ve svých projektech co nejvíce. Můžete také dále integrovat funkce, jako je vyhledávání, upozornění a tak dále, aby se z aplikace správce úloh stala plnohodnotná funkční aplikace.