Uzziniet, kā izveidot uzdevumu pārvaldnieka lietotni, izmantojot Django CRUD principus un klases skatus.

Viena no galvenajām Django funkcijām ir tā iebūvētais atbalsts projektu izveidei papildus CRUD (Create, Read, Update, Delete) darbībām. Lai gan Django klases skati nodrošina ātru, vienkāršu un elastīgu veidu, kā izveidot tīmekļa lietojumprogrammas, daudzi izstrādātāji joprojām izmanto uz funkcijām balstītus skatus.

Uz klasēm balstītie skati piedāvā vairākas priekšrocības salīdzinājumā ar uz funkcijām balstītiem skatiem, tostarp mantošanu, koda strukturēšanu, koda atkārtotu izmantošanu un daudz ko citu. Lai gan uz klasēm balstītu skatu ieviešana var šķist nedaudz sarežģīta, šī rokasgrāmata palīdzēs jums izprast šo koncepciju, izveidojot uzdevumu pārvaldnieka lietotni un sniedzot soli pa solim sniegtas instrukcijas.

Kas ir klasē balstīti skati pakalpojumā Django?

Django skati ir Python funkcijas kas pieņem tīmekļa pieprasījumu un atgriež tīmekļa atbildi. Klases skati (CBV) ir alternatīvs veids, kā definēt skatus programmā Django, izmantojot Python klases, nevis funkcijas.

instagram viewer

CBV ir vairākas priekšrocības, piemēram, labāka koda organizācija, vieglāka koda atkārtota izmantošana un iespēja izmantot mantojumu, lai izveidotu esošo skatu variācijas. CBV nodrošina arī tādas iebūvētas metodes kā gūt() un post() metodes, kuras varat pārrakstīt pielāgotām darbībām.

Šajā rakstā izmantotais kods ir pieejams šajā GitHub repozitorijs.

Django pieejamie uz klasēm balstīti skati

Django nodrošina dažus iebūvētus CBV populāriem lietošanas gadījumiem, piemēram, objektu sarakstu parādīšanai vai jaunu objektu izveidei. Daži no šiem iebūvētajiem CBV ir:

  1. ListView: Šis skats atveido no modeļa izgūto objektu sarakstu. Piemēram, lapa, kurā uzskaitītas visas emuārā pieejamās ziņas, izmantos a ListView.
  2. DetailView: Šis skats parāda detalizētu skatu uz vienu objektu, kas izgūts no modeļa. Jūs varat izmantot a DetailView lai emuāra lietotnē parādītu informāciju par konkrētām ziņām.
  3. CreateView: šis skats atveido veidlapu jauna objekta izveidei un apstrādā veidlapas iesniegšanu. Piemēram, uzdevumu pārvaldnieka lietotnē šo skatu izmantosit jaunu uzdevumu izveidei.
  4. DeleteView: šis skats atveido apstiprinājuma lapu objekta dzēšanai un apstrādā lapas dzēšanu.
  5. UpdateView: šis skats atveido veidlapu esoša objekta atjaunināšanai un apstrādā veidlapas iesniegšanu.

Django nodrošina arī citus skatus, tostarp TemplateView, RedirectView, un FormView. Jūs varat atsaukties uz Django dokumentācija lai iegūtu detalizētu informāciju par klases skatījumiem.

Izveidojiet uzdevumu pārvaldnieka lietotni ar Django klases skatiem

Izveidojot lietotni, piemēram, uzdevumu pārvaldnieka lietotni, varēsit saprast, kā ieviest CRUD darbības ar CBV. Uzdevumu pārvaldniekam ir līdzekļi, kas lietotājiem ļauj izveidot, atjaunināt, dzēst un lasīt uzdevumus. Šīs funkcijas atbilst CRUD darbībām. Tālāk norādītās darbības palīdzēs jums izveidot uzdevumu pārvaldnieka lietotni ar Django CBV.

Izveidojiet Django projektu

Lai izveidotu uzdevumu pārvaldnieka lietotni ar Django, sāciet, veicot šādas darbības:

  1. Instalējiet Django savā Python virtuālā vide ar šo komandu:
    pip instalēt django
  2. Izveidojiet Django projektu. Šī komanda izveidos projektu ar nosaukumu projekta_kodola.
    django-admin startproject project_core .
  3. Izveidojiet lietotni ar nosaukumu uzdevumu pārvaldnieks.
    python manage.py startapp task_manager
  4. Tavā settings.py pievienojiet savas lietotnes nosaukumu INSTALLED_APPS sarakstu.
    INSTALLED_APPS = [
    'uzdevumu pārvaldnieks',
    ]
  5. Atveriet urls.py failu savā projekta direktorijā un konfigurējiet vietrāžus URL savam uzdevumu pārvaldnieks lietotne:
    no django.urls imports ceļš, ietver

    urlpatterns = [
    ceļš ('', ietver('task_manager.urls')),
    ]

Izveidojiet modeli savai uzdevumu pārvaldnieka lietotnei

Lietotņu direktorijā (vai uzdevumu pārvaldnieks mapi), atveriet savu modeļi.py failu un izveidojiet modeli savai uzdevumu pārvaldnieka lietotnei. Šeit ir modeļa paraugs, ko varat izmantot:

no django.db imports modeļiem

klasēUzdevums(modeļi. Modelis):
nosaukums = modeļi. CharField (max_length=200)
apraksts = modeļi. Teksta lauks()
pabeigts = modeļi. Būla lauks (noklusējums =Nepatiesi)
Created_at = modeļi. DateTimeField (auto_now_add=Taisnība)

Migrējiet savu modeli ar šo komandu:

python manage.py makemigrations && python manage.py migrēt

Izveidojiet Django veidlapu savai lietotnei

Jums ir jābūt veidlapai apstrādei Izveidot un Atjaunināt operācijas. Lietotņu direktorijā izveidojiet failu ar nosaukumu forms.py. Šeit ir piemērs:

no django imports veidlapas
no .modeļi imports Uzdevums

klasēUzdevuma veidlapa(veidlapas. ModelForm):
klasēMeta:
modelis = Uzdevums
lauki = ['nosaukums', 'apraksts', 'pabeigts']

logrīki = {
'nosaukums': veidlapas. Teksta ievade (attrs={'klase': 'formas kontrole',}),
'apraksts': veidlapas. Textarea (attrs={'klase': 'formas kontrole',}),
'pabeigts': veidlapas. CheckboxInput (attrs={'klase': 'form-check-input'}),
}

Iepriekš norādītajam kodam ir klase ar nosaukumu Uzdevuma veidlapa kas definē veidlapas laukus un logrīkus. Tas arī norāda izmantojamo modeli.

Izveidojiet Django skatus katrai CRUD darbībai

Pamatprogrammai CRUD ar CBV ir nepieciešami vismaz četri skati, lai efektīvi apstrādātu visas darbības. Dažas nākamās darbības parādīs, kā tās izveidot.

Importējiet nepieciešamos moduļus un pakotnes

Atver savu views.py failu un veiciet šādu importēšanu:

no django.views.generic imports ListView, DetailView, CreateView, UpdateView, DeleteView
no django.urls imports reverse_slinks
no .modeļi imports Uzdevums
no .veidlapas imports Uzdevuma veidlapa

Iepriekš minētais kods importē piecus CBV. Tas arī importē reverse_slinks lai pēc veidlapas iesniegšanas novirzītu lietotāju uz noteiktu URL. Visbeidzot, tas importē Uzdevums modelis un Uzdevuma veidlapa izveidota agrāk.

Izveidojiet skatu, lai uzskaitītu modeļa objektus

Uzdevumu pārvaldnieka lietotnei ir jābūt lapai, kurā uzskaitīti visi lietotāja izveidotie uzdevumi. Lai šim nolūkam izveidotu skatu, izmantojiet ListView. Šeit ir piemērs:

klasēTaskListView(Saraksta skats):
modelis = Uzdevums
veidnes_nosaukums = 'task_manager/task_list.html'
konteksta_objekta_nosaukums = 'uzdevumi'

Iepriekš redzamajā skatā ir definēti trīs atribūti, kas ir:

  1. modelis: šis atribūts nosaka, kurš modelis jāizmanto konkrētajam skatam.
  2. veidnes_nosaukums: šis atribūts norāda Django, kuru veidni renderēt pārlūkprogrammā.
  3. konteksta_objekta_nosaukums: Šis atribūts definē nosaukumu, kas ļauj veidnei piekļūt modeļa objektu sarakstam.

Lielākajā daļā CBV būs šie trīs atribūti.

Izveidojiet skatu, lai apstrādātu uzdevuma informāciju

Katram lietotāja izveidotajam uzdevumam ir jābūt lapai, kurā parādīta tā informācija. Ideāls CBV, lai to risinātu DetailApskatīt. Šeit ir vienkāršs piemērs:

klasēTaskDetailView(Detalizēts skats):
modelis = Uzdevums
veidnes_nosaukums = 'task_manager/task_detail.html'

Izveidojiet skatu uzdevumu izveidei

Izveidojiet skatu, lai veiktu jaunu uzdevumu izveidi vai pievienošanu. Tas ir Izveidot daļa no CRUD operācijām, un pareizais skats tam ir CreateView. Lūk, kā to izmantot:

klasēTaskCreateView(Izveidot skatu):
modelis = Uzdevums
form_class = TaskForm
veidnes_nosaukums = 'task_manager/task_form.html'
panākumu_url = reverse_slink('uzdevumu saraksts')

Iepriekš minētais kods ievieš divus jaunus atribūtus: forma_klase un veiksmes_url.

The forma_klase atribūts norāda skatam, kuru formas klasi renderēt un izmantot savām darbībām.

The veiksmes_url norāda, kā novirzīt lietotāju pēc veidlapas iesniegšanas. Tas izmanto reverse_slinks funkcija, kas iegūst URL ceļa nosaukumu.

Izveidojiet skatu rediģēšanas uzdevumiem

Lai ļautu lietotājiem rediģēt vai atjaunināt savus uzdevumus, jums vajadzētu izveidot skatu, kas izskatās šādi:

klasēTaskUpdateView(UpdateView):
modelis = Uzdevums
form_class = TaskForm
veidnes_nosaukums = 'task_manager/task_form.html'
panākumu_url = reverse_slink('uzdevumu saraksts')

Iepriekš minētais skats ir līdzīgs TaskCreateView izveidota agrāk. Vienīgā atšķirība ir izmantošana UpdateView.

Izveidojiet skatu, lai apstrādātu dzēšanas darbības

Lai ļautu lietotājiem dzēst uzdevumus, kad vien viņi vēlas, izmantojiet DeleteView CBV. Šeit ir piemērs:

klasēTaskDeleteView(DeleteView):
modelis = Uzdevums
veidnes_nosaukums = 'task_manager/task_confirm_delete.html'
panākumu_url = reverse_slink('uzdevumu saraksts')

Konfigurējiet savas lietotnes URL

Lietotņu direktorijā izveidojiet a urls.py failu un konfigurējiet savus URL modeļus šādi:

no django.urls imports ceļš
no .skatījumi imports TaskListView, TaskDetailView, TaskCreateView, TaskUpdateView, TaskDeleteView

urlpatterns =
ceļš ('', TaskListView.as_view(), name='uzdevumu saraksts'),
ceļš ('izveidot/', TaskCreateView.as_view(), name='task_create'),
ceļš ('uzdevumi//', TaskDetailView.as_view(), name='task_detail'),
ceļš ('uzdevumi//update/', TaskUpdateView.as_view(), name='task_update'),
ceļš ('uzdevumi//delete/', TaskDeleteView.as_view(), name='task_delete'),
]

Iepriekš minētie URL modeļi ir līdzīgi vietrāžiem URL, kas izveidoti, izmantojot uz funkcijām balstītus skatus. Atšķirība ir kā_skatījums() funkcija ir pievienota katra skata nosaukuma beigās.

Jūs varat URL izveidei izmantojiet Django lodes iepriekš izmantotās primārās atslēgas vietā.

Izveidojiet veidnes saviem skatiem

Ļaujot lietotājiem veikt iepriekš minētajos skatos definētās darbības, tiek ieteikts nodrošināt saskarni, ar kuru viņi var mijiedarboties. No iepriekš izveidotajiem skatiem uzdevumu pārvaldnieka lietotnei vajadzētu būt četrām lietotāja saskarnēm.

Lietotņu direktorijā izveidojiet četras HTML veidnes. Jums vajadzētu arī izveidot base.html failu. Jūs varat veidojiet savas Django veidnes ar Bootstrap lai ietaupītu laiku.

Uzdevumu saraksta veidne

Šajā veidnē ir jāiekļauj kods, kurā uzskaitīti visi modeļa uzdevumi. Koda skeleta piemērs ir šāds:

{% paplašina 'base.html' %}

{% bloķēt saturu %}
<centrs>
<h1>Jūsu uzdevumih1>
<ahref="{% url 'task_create' %}">Pievienot uzdevumua>
{% uzdevumam uzdevumos %}
<div>
<div>
<h5>{{ task.title }}h5>
<lpp>{{ task.description|truncatechars: 50 }}lpp>
<lpp>
<stiprs>Pabeigts:stiprs>
{% if task.completed %}Jā{% else %}Nē{% endif %}
lpp>
<ahref="{% url 'task_detail' task.pk %}">
Lasīt vairāk
a>
<ahref="{% url 'task_delete' task.pk %}">
Dzēst uzdevumu
a>
div>
div>
{% tukšs %}
<h3>Vēl nav uzdevumu.h3>
<ahref="{% url 'task_create' %}">Pievienot uzdevumua>
{% endfor %}
centrs>
{% endblock %}

Izmantojot dažas Bootstrap klases, varat izveidot savu lapu šādi:

Uzdevuma detaļas veidne

Šajā lapā ir jāparāda visa informācija par katru izveidoto uzdevumu. Šeit ir veidnes piemērs, ko varat izmantot:

{% paplašina 'base.html' %}

{% bloķēt saturu %}
<h1>{{ task.title }}h1>
<lpp>{{ task.description }}lpp>
<lpp>Pabeigts: {% if task.completed %}Jā{% else %}Nē{% endif %}lpp>
<ahref="{% url 'task_update' task.pk %}">Rediģēt uzdevumua>
<ahref="{% url 'task_delete' task.pk %}">Dzēst uzdevumua>
{% endblock %}

Atkarībā no jūsu stila pieejas jūsu lapai vajadzētu izskatīties šādi:

Uzdevuma veidlapas veidne

Šajā veidnē ir jāietver veidlapa, kas ļauj lietotājam izveidot vai atjaunināt uzdevumu.

{% paplašina 'base.html' %}

{% bloķēt saturu %}
<h1>Izveidot uzdevumuh1>
<formāmetodi="post">
{% csrf_token %}
{{ form.as_p }}
<poguveids="Iesniegt">Saglabātpogu>
formā>
{% endblock %}

Veidne izskatīsies šādi:

Dzēst uzdevuma veidni

Šai veidnei ir jābūt apstiprinājuma lapai, lai novērstu nejaušu uzdevumu dzēšanu.

{% paplašina 'base.html' %}

{% bloķēt saturu %}
<h1>Apstipriniet dzēšanuh1>
<lpp>Vai tiešām vēlaties dzēst "{{ object.title }}"?lpp>
<formāmetodi="post">
{% csrf_token %}
<poguveids="Iesniegt">Dzēstpogu>
<ahref="{% url 'task_list' %}">Atcelta>
formā>
{% endblock %}

Izmantojot kādu Bootstrap, jūsu lapai vajadzētu izskatīties šādi:

Izmantojiet klasē balstītus skatus, lai palielinātu savu produktivitāti

Klases skati ir lielisks veids, kā īsā laikā uzrakstīt tīru, sakārtotu kodu, tādējādi palielinot produktivitāti. Jums tie pēc iespējas vairāk jāizmanto savos projektos. Varat arī vairāk integrēt tādas funkcijas kā meklēšanas funkcionalitāte, paziņojumi un tā tālāk, lai uzdevumu pārvaldnieka lietotne kļūtu par pilnvērtīgu funkcionālu lietojumprogrammu.