Zistite, ako vytvoriť aplikáciu správcu úloh s využitím princípov CRUD a zobrazení založených na triedach v Django.

Jednou z kľúčových funkcií Django je jeho vstavaná podpora pre vytváranie projektov nad operáciami CRUD (Create, Read, Update, Delete). Zatiaľ čo zobrazenia založené na triedach Django poskytujú rýchly, jednoduchý a flexibilný spôsob vytvárania webových aplikácií, mnoho vývojárov stále používa zobrazenia založené na funkciách.

Pohľady založené na triedach ponúkajú oproti zobrazeniam založeným na funkciách niekoľko výhod, vrátane dedenia, štruktúrovania kódu, opätovnej použiteľnosti kódu a ďalších. Hoci sa implementácia triednych zobrazení môže zdať trochu zložitá, táto príručka vám pomôže pochopiť tento koncept vytvorením aplikácie správcu úloh a poskytnutím podrobných pokynov.

Aké sú triedne pohľady v Django?

V Django sú výhľady Funkcie Pythonu ktoré prijmú webovú požiadavku a vrátia webovú odpoveď. Pohľady založené na triedach (CBV) sú alternatívnym spôsobom, ako definovať zobrazenia v Django pomocou tried Pythonu namiesto funkcií.

instagram viewer

CBV majú niekoľko výhod, ako je lepšia organizácia kódu, jednoduchšie opätovné použitie kódu a možnosť použiť dedičnosť na vytváranie variácií existujúcich zobrazení. CBV tiež poskytujú vstavané metódy, ako napr dostať () a príspevok() metódy, ktoré môžete prepísať pre vlastné správanie.

Kód použitý v tomto článku je dostupný v tomto úložisko GitHub.

Pohľady podľa triedy dostupné v Django

Django poskytuje niektoré vstavané CBV pre populárne prípady použitia, ako je zobrazovanie zoznamov objektov alebo vytváranie nových. Niektoré z týchto vstavaných CBV sú:

  1. ListView: Toto zobrazenie vykreslí zoznam objektov získaných z modelu. Napríklad stránka, ktorá obsahuje všetky dostupné príspevky v blogu, použije a ListView.
  2. Detailné zobrazenie: Toto zobrazenie vykresľuje detailný pohľad na jeden objekt získaný z modelu. Môžete použiť a Detailné zobrazenie na zobrazenie podrobností konkrétnych príspevkov v blogovej aplikácii.
  3. CreateView: Toto zobrazenie vykreslí formulár na vytvorenie nového objektu a spracuje odoslanie formulára. Napríklad v aplikácii správcu úloh použijete toto zobrazenie na vytváranie nových úloh.
  4. DeleteView: Toto zobrazenie vykreslí stránku s potvrdením na odstránenie objektu a spracuje odstránenie stránky.
  5. UpdateView: Toto zobrazenie vykreslí formulár na aktualizáciu existujúceho objektu a spracuje odoslanie formulára.

Django poskytuje aj ďalšie pohľady, vrátane TemplateView, RedirectView, a FormView. Môžete sa odvolávať na Djangova dokumentácia pre podrobné informácie o triednych pohľadoch.

Vytvorte si aplikáciu Správca úloh pomocou pohľadov založených na triede Django

Vytvorenie aplikácie, ako je aplikácia správcu úloh, vám umožní pochopiť, ako implementovať operácie CRUD s CBV. Správca úloh má funkcie, ktoré umožňujú používateľom vytvárať, aktualizovať, odstraňovať a čítať úlohy. Tieto vlastnosti sú v súlade s operáciami CRUD. Nasledujúce kroky vám pomôžu vytvoriť aplikáciu správcu úloh s Django CBV.

Založte si projekt Django

Ak chcete vytvoriť aplikáciu správcu úloh pomocou Django, mali by ste začať podľa týchto krokov:

  1. Nainštalujte si Django do svojho Virtuálne prostredie Python s týmto príkazom:
    pip nainštalovať django
  2. Vytvorte projekt Django. Nasledujúci príkaz vytvorí projekt s názvom project_core.
    django-admin startproject project_core .
  3. Vytvorte aplikáciu s názvom správca úloh.
    python manage.py startapp task_manager
  4. V tvojom settings.py pridajte názov svojej aplikácie do INSTALLED_APPS zoznam.
    INSTALLED_APPS = [
    'správca úloh',
    ]
  5. Otvor urls.py súbor vo vašom projektovom adresári a nakonfigurujte adresy URL pre váš správca úloh aplikácia:
    od django.urls importovať cesta, zahŕňajú

    urlpatterns = [
    cesta ('', zahŕňať('task_manager.urls')),
    ]

Vytvorte model pre aplikáciu Správca úloh

V adresári aplikácie (alebo správca úloh priečinok), otvorte svoj modely.py súbor a vytvorte model pre svoju aplikáciu správcu úloh. Tu je vzorový model, ktorý môžete použiť:

od django.db importovať modelov

triedaÚloha(modely. Model):
titul = modely. CharField (max_length=200)
popis = modely. Textové pole()
dokončené = modely. BooleanField (predvolené=Nepravdivé)
created_at = modely. DateTimeField (auto_now_add=Pravda)

Migrujte svoj model pomocou tohto príkazu:

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

Vytvorte formulár Django pre svoju aplikáciu

Mali by ste mať formulár na manipuláciu Vytvorte a Aktualizovať operácií. V adresári aplikácie vytvorte súbor s názvom formy.py. Tu je príklad:

od django importovať formulárov
od .modelky importovať Úloha

triedaTaskForm(formuláre. ModelForm):
triedaMeta:
model = úloha
polia = ['názov', 'popis', 'dokončené']

widgety = {
'názov': formuláre. TextInput (attrs={'trieda': 'form-control',}),
'popis': formuláre. Textarea (attrs={'trieda': 'form-control',}),
'dokončené': formuláre. CheckboxInput (attrs={'trieda': 'form-check-input'}),
}

Vyššie uvedený kód má triedu tzv TaskForm ktorý definuje polia a widgety formulára. Tiež špecifikuje model, ktorý sa má použiť.

Vytvorte zobrazenia Django pre každú operáciu CRUD

Základná aplikácia CRUD s CBV vyžaduje aspoň štyri zobrazenia na efektívne zvládnutie všetkých operácií. Nasledujúcich niekoľko krokov vám ukáže, ako ich vytvoriť.

Importujte potrebné moduly a balíky

Otvor tvoj views.py súbor a vykonajte nasledujúce importy:

od django.views.generic importovať ListView, DetailView, CreateView, UpdateView, DeleteView
od django.urls importovať obrátený_lenivý
od .modelky importovať Úloha
od .formuláre importovať TaskForm

Vyššie uvedený kód importuje päť CBV. Taktiež dováža obrátený_lenivý na presmerovanie používateľa na zadanú adresu URL po odoslaní formulára. Nakoniec importuje Úloha model, a TaskForm vytvorené skôr.

Vytvorte zobrazenie zoznamu objektov modelu

Aplikácia správcu úloh by mala mať stránku so zoznamom všetkých úloh vytvorených používateľom. Ak chcete vytvoriť zobrazenie, mali by ste použiť ListView. Tu je príklad:

triedaTaskListView(Zobrazenie zoznamu):
model = úloha
template_name = 'task_manager/task_list.html'
kontext_názov_objektu = 'úlohy'

Vyššie uvedený pohľad definuje tri atribúty, ktorými sú:

  1. Model: Tento atribút definuje, ktorý model sa má použiť pre konkrétne zobrazenie.
  2. názov_šablóny: Tento atribút hovorí Djangovi, ktorú šablónu má vykresliť v prehliadači.
  3. kontext_názov_objektu: Tento atribút definuje názov, ktorý umožňuje šablóne prístup k zoznamu objektov v modeli.

Väčšina CBV bude obsahovať tieto tri atribúty.

Vytvorte zobrazenie na spracovanie podrobností o úlohe

Každá úloha, ktorú používateľ vytvorí, by mala mať stránku s jej podrobnosťami. Ideálny CBV na zvládnutie tohto je DetailVew. Tu je jednoduchý príklad:

triedaTaskDetailView(Detailné zobrazenie):
model = úloha
template_name = 'task_manager/task_detail.html'

Vytvorte zobrazenie na vytváranie úloh

Vytvorte zobrazenie na spracovanie vytvárania alebo pridávania nových úloh. To je Vytvorte súčasťou operácií CRUD a správny pohľad na to je CreateView. Tu je návod, ako ho použiť:

triedaTaskCreateView(CreateView):
model = úloha
form_class = Formulár úloh
template_name = 'task_manager/task_form.html'
success_url = reverse_lazy('zoznam úloh')

Vyššie uvedený kód zavádza dva nové atribúty: formulár_trieda a success_url.

The formulár_trieda atribút hovorí pohľadu, ktorú triedu formulára má vykresliť a použiť na svoje operácie.

The success_url určuje, ako presmerovať používateľa po odoslaní formulára. Používa sa obrátený_lenivý funkcia, ktorá preberá názov cesty URL.

Vytvorte zobrazenie na úpravu úloh

Ak chcete používateľom umožniť upravovať alebo aktualizovať svoje úlohy, mali by ste vytvoriť zobrazenie, ktoré vyzerá takto:

triedaTaskUpdateView(UpdateView):
model = úloha
form_class = Formulár úloh
template_name = 'task_manager/task_form.html'
success_url = reverse_lazy('zoznam úloh')

Vyššie uvedený pohľad je podobný ako TaskCreateView vytvorené skôr. Jediný rozdiel je v použití UpdateView.

Vytvorte zobrazenie na spracovanie operácií odstránenia

Ak chcete svojim používateľom povoliť mazanie úloh kedykoľvek chcú, mali by ste použiť DeleteView CBV. Tu je príklad:

triedaTaskDeleteView(Odstrániť zobrazenie):
model = úloha
template_name = 'task_manager/task_confirm_delete.html'
success_url = reverse_lazy('zoznam úloh')

Nakonfigurujte adresy URL svojej aplikácie

V adresári aplikácie vytvorte a urls.py súbor a nakonfigurujte vzory adries URL takto:

od django.urls importovať cesta
od .názory importovať TaskListView, TaskDetailView, TaskCreateView, TaskUpdateView, TaskDeleteView

urlpatterns =
cesta ('', TaskListView.as_view(), name='zoznam úloh'),
cesta ('vytvoriť/', TaskCreateView.as_view(), name='task_create'),
cesta ('úlohy//', TaskDetailView.as_view(), name='task_detail'),
cesta ('úlohy//update/', TaskUpdateView.as_view(), name='task_update'),
cesta ('úlohy//delete/', TaskDeleteView.as_view(), name='task_delete'),
]

Vzory adries URL uvedené vyššie sú podobné adresám URL vytvoreným pomocou zobrazení založených na funkciách. Rozdiel je v tom as_view() funkcia pripojená na koniec názvu každého zobrazenia.

Môžeš použite Django slimáky na vytváranie adries URL namiesto primárneho kľúča použitého vyššie.

Vytvorte si šablóny pre svoje zobrazenia

Ak používateľom umožníte vykonávať akcie definované v zobrazeniach vyššie, navrhujete, aby ste im poskytli rozhranie na interakciu. Zo zobrazení vytvorených skôr by mala mať aplikácia správcu úloh štyri používateľské rozhrania.

V adresári aplikácie vytvorte štyri šablóny HTML. Mali by ste tiež vytvoriť base.html súbor. Môžeš upravte svoje šablóny Django pomocou Bootstrap aby ste ušetrili čas.

Šablóna zoznamu úloh

Táto šablóna by mala obsahovať kód, ktorý obsahuje zoznam všetkých úloh v modeli. Základný príklad kódu je tento:

{% extends 'base.html' %}

{% block content %}
<stred>
<h1>Vaše úlohyh1>
<ahref="{% url 'task_create' %}">Pridať úlohua>
{% pre úlohu v úlohách %}
<div>
<div>
<h5>{{ task.title }}h5>
<p>{{ task.description|truncatechars: 50 }}p>
<p>
<silný>Dokončené:silný>
{% if task.completed %}Áno{% else %}Nie{% endif %}
p>
<ahref="{% url 'task_detail' task.pk %}">
Čítaj viac
a>
<ahref="{% url 'task_delete' task.pk %}">
Odstrániť úlohu
a>
div>
div>
{% prázdne %}
<h3>Zatiaľ žiadne úlohy.h3>
<ahref="{% url 'task_create' %}">Pridať úlohua>
{% endfor %}
stred>
{% koncový blok %}

Pomocou niektorých tried Bootstrap môžete svoju stránku upraviť takto:

Šablóna podrobností úlohy

Táto stránka by mala zobrazovať všetky podrobnosti o každej vytvorenej úlohe. Tu je príklad šablóny, ktorú môžete použiť:

{% extends 'base.html' %}

{% block content %}
<h1>{{ task.title }}h1>
<p>{{ task.description }}p>
<p>Dokončené: {% if task.completed %}Áno{% else %}Nie{% endif %}p>
<ahref="{% url 'task_update' task.pk %}">Upraviť úlohua>
<ahref="{% url 'task_delete' task.pk %}">Odstrániť úlohua>
{% koncový blok %}

V závislosti od vášho prístupu k štýlu by vaša stránka mala vyzerať takto:

Šablóna formulára úloh

Táto šablóna by mala obsahovať formulár, ktorý používateľovi umožní vytvoriť alebo aktualizovať úlohu.

{% extends 'base.html' %}

{% block content %}
<h1>Vytvoriť úlohuh1>
<formulármetóda="post">
{% csrf_token %}
{{ form.as_p }}
<tlačidlotypu="Predložiť">Uložiťtlačidlo>
formulár>
{% koncový blok %}

Šablóna bude vyzerať takto:

Odstrániť šablónu úlohy

Táto šablóna by mala byť potvrdzovacia stránka, aby sa zabránilo náhodnému vymazaniu úloh.

{% extends 'base.html' %}

{% block content %}
<h1>Potvrďte Odstrániťh1>
<p>Naozaj chcete odstrániť "{{ object.title }}"?p>
<formulármetóda="post">
{% csrf_token %}
<tlačidlotypu="Predložiť">Odstrániťtlačidlo>
<ahref="{% url 'task_list' %}">Zrušiťa>
formulár>
{% koncový blok %}

S nejakým Bootstrapom by vaša stránka mala vyzerať takto:

Zvýšte svoju produktivitu pomocou triednych zobrazení

Pohľady založené na triedach sú skvelým spôsobom, ako napísať čistý, organizovaný kód v krátkom čase, čím sa zvýši vaša produktivita. Mali by ste ich používať vo svojich projektoch čo najviac. Môžete tiež ďalej integrovať funkcie, ako je funkcia vyhľadávania, upozornenia atď., aby sa vaša aplikácia správcu úloh stala plnohodnotnou funkčnou aplikáciou.