Научите како да направите апликацију за управљање задацима користећи принципе ЦРУД-а и погледа засноване на класама у Дјангу.

Једна од кључних карактеристика Дјанга је његова уграђена подршка за креирање пројеката на врху ЦРУД (Цреате, Реад, Упдате, Делете) операција. Док Дјанго-ови погледи засновани на класама пружају брз, лак и флексибилан начин за прављење веб апликација, многи програмери и даље користе погледе засноване на функцијама.

Погледи засновани на класи нуде неколико предности у односу на погледе засноване на функцијама, укључујући наслеђивање, структурирање кода, поновну употребу кода и још много тога. Иако имплементација погледа заснованих на класама може изгледати помало сложено, овај водич ће вам помоћи да схватите концепт тако што ћете изградити апликацију за управљање задацима и пружити упутства корак по корак.

Шта су погледи засновани на класи у Дјангу?

У Дјангу погледи су Питхон функције који примају веб захтев и враћају веб одговор. Погледи засновани на класама (ЦБВ) су алтернативни начин за дефинисање погледа у Дјангу користећи Питхон класе уместо функција.

instagram viewer

ЦБВ имају неколико предности, као што су боља организација кода, лакша поновна употреба кода и могућност коришћења наслеђа за креирање варијација постојећих погледа. ЦБВ такође пружају уграђене методе као што су добити() и пошта() методе које можете преписати за прилагођена понашања.

Код који се користи у овом чланку доступан је у овом ГитХуб спремиште.

Прикази засновани на класама доступни у Дјангу

Дјанго обезбеђује неке уграђене ЦБВ за популарне случајеве употребе, као што је приказивање листа објеката или креирање нових. Неки од ових уграђених ЦБВ-а су:

  1. ЛистВиев: Овај приказ приказује листу објеката преузетих из модела. На пример, страница која наводи све постове доступне на блогу користиће а ЛистВиев.
  2. Детаљ Погледај: Овај приказ даје детаљан приказ једног објекта преузетог из модела. Можете користити а Детаљ Погледај да бисте приказали детаље одређених постова у апликацији за блог.
  3. ЦреатеВиев: Овај приказ приказује образац за креирање новог објекта и управља слањем обрасца. На пример, у апликацији за управљање задацима, овај приказ ћете користити за креирање нових задатака.
  4. ДелетеВиев: Овај приказ приказује страницу за потврду за брисање објекта и управља брисањем странице.
  5. УпдатеВиев: Овај приказ приказује образац за ажурирање постојећег објекта и управља подношењем обрасца.

Дјанго такође пружа друге погледе, укључујући ТемплатеВиев, РедирецтВиев, и ФормВиев. Можете се позвати на Дјанго документација за детаљне информације о погледима заснованим на класама.

Направите апликацију Таск Манагер са Дјанго приказима заснованим на класи

Израда апликације као што је апликација за управљање задацима омогућиће вам да разумете како да примените ЦРУД операције са ЦБВ-овима. Менаџер задатака има функције које омогућавају корисницима да креирају, ажурирају, бришу и читају задатке. Ове карактеристике су у складу са ЦРУД операцијама. Следећи кораци ће вам помоћи да направите апликацију за управљање задацима са Дјанго ЦБВ.

Поставите Дјанго пројекат

Да бисте креирали апликацију за управљање задацима са Дјангом, требало би да почнете тако што ћете пратити ове кораке:

  1. Инсталирајте Дјанго у свој Питхон виртуелно окружење са овом командом:
    пип инсталл дјанго
  2. Направите Дјанго пројекат. Следећа команда ће креирати пројекат под називом пројецт_цоре.
    дјанго-админ стартпројецт пројецт_цоре .
  3. Направите апликацију под називом таск_манагер.
    питхон манаге.пи стартапп таск_манагер
  4. У вашем сеттингс.пи додајте назив своје апликације у ИНСТАЛЛЕД_АППС листа.
    ИНСТАЛЛЕД_АППС = [
    'таск_манагер',
    ]
  5. Отвори урлс.пи датотеку у директоријуму вашег пројекта и конфигуришите УРЛ-ове за своје таск_манагер апликација:
    из дјанго.урлс увоз пут, укључити

    урлпаттернс = [
    пут('', укључују ('таск_манагер.урлс')),
    ]

Направите модел за своју апликацију Таск Манагер

У директоријуму апликације (или таск_манагер фолдер), отворите свој модели.пи датотеку и креирајте модел за своју апликацију за управљање задацима. Ево примера модела који можете да користите:

из дјанго.дб увоз модели

класаЗадатак(модели. модел):
наслов = модели. ЦхарФиелд (мак_ленгтх=200)
опис = модели. Текстуално поље()
завршено = модели. БоолеанФиелд (подразумевано=Фалсе)
цреатед_ат = модели. ДатеТимеФиелд (ауто_нов_адд=Истина)

Мигрирајте свој модел овом командом:

питхон манаге.пи макемигратионс && питхон манаге.пи мигрира

Направите Дјанго образац за своју апликацију

Требало би да имате образац за руковање Креирај и ажурирање операције. У директоријуму апликације креирајте датотеку под називом формс.пи. Ево примера:

из дјанго увоз форме
из .модели увоз Задатак

класаТаскФорм(обрасци. МоделФорм):
класаМета:
модел = Задатак
поља = ['титле', 'Опис', 'завршено']

видгетс = {
'титле': форме. Унос текста (аттрс={'класа': 'контрола обрасца',}),
'Опис': форме. Тектареа (аттрс={'класа': 'контрола обрасца',}),
'завршено': форме. ЦхецкбокИнпут (аттрс={'класа': 'форм-цхецк-инпут'}),
}

Код изнад има класу под називом ТаскФорм који дефинише поља и виџете обрасца. Такође специфицира модел који треба користити.

Креирајте Дјанго приказе за сваку ЦРУД операцију

Основна ЦРУД апликација са ЦБВ захтева најмање четири приказа за ефикасно руковање свим операцијама. Следећих неколико корака ће вам показати како да их креирате.

Увезите потребне модуле и пакете

Отвори свој виевс.пи датотеку и извршите следеће увозе:

из дјанго.виевс.генериц увоз ЛистВиев, ДетаилВиев, ЦреатеВиев, УпдатеВиев, ДелетеВиев
из дјанго.урлс увоз реверсе_лази
из .модели увоз Задатак
из .формс увоз ТаскФорм

Код изнад увози пет ЦБВ. Такође увози реверсе_лази да преусмерите корисника на наведену УРЛ адресу након подношења обрасца. Коначно, увози Задатак модел, и ТаскФорм створена раније.

Направите приказ за листу објеката модела

Апликација за управљање задацима треба да има страницу са списком свих задатака које је креирао корисник. Да бисте креирали приказ за ово, требало би да користите ЛистВиев. Ево примера:

класаТаскЛистВиев(ЛистВиев):
модел = Задатак
темплате_наме = 'таск_манагер/таск_лист.хтмл'
цонтект_објецт_наме = 'задаци'

Приказ изнад дефинише три атрибута који су:

  1. модел: Овај атрибут дефинише који модел да се користи за тај одређени приказ.
  2. темплате_наме: Овај атрибут говори Дјангу који шаблон да прикаже претраживачу.
  3. цонтект_објецт_наме: Овај атрибут дефинише име које омогућава шаблону да приступи листи објеката у моделу.

Већина ЦБВ ће садржати ова три атрибута.

Направите приказ за руковање детаљима задатка

Сваки задатак који корисник креира треба да има страницу која приказује његове детаље. Идеалан ЦБВ за ово је ДетаилВев. Ево једноставног примера:

класаТаскДетаилВиев(Детаљ Погледај):
модел = Задатак
темплате_наме = 'таск_манагер/таск_детаил.хтмл'

Направите приказ за креирање задатака

Креирајте приказ за руковање креирањем или додавањем нових задатака. Ово је Креирај део ЦРУД операција, а прави поглед за ово је ЦреатеВиев. Ево како да га користите:

класаТаскЦреатеВиев(ЦреатеВиев):
модел = Задатак
форм_цласс = ТаскФорм
темплате_наме = 'таск_манагер/таск_форм.хтмл'
суццесс_урл = реверсе_лази('таск_лист')

Код изнад уводи два нова атрибута: форм_цласс и успех_урл.

Тхе форм_цласс атрибут говори погледу коју класу форме да прикаже и користи за своје операције.

Тхе успех_урл одређује како да преусмери корисника након слања обрасца. Користи се реверсе_лази функција која узима име УРЛ путање.

Направите приказ за задатке уређивања

Да бисте омогућили вашим корисницима да уређују или ажурирају своје задатке, требало би да направите приказ који изгледа овако:

класаТаскУпдатеВиев(УпдатеВиев):
модел = Задатак
форм_цласс = ТаскФорм
темплате_наме = 'таск_манагер/таск_форм.хтмл'
суццесс_урл = реверсе_лази('таск_лист')

Горњи поглед је сличан ТаскЦреатеВиев створена раније. Једина разлика је у употреби УпдатеВиев.

Направите приказ за руковање операцијама брисања

Да бисте омогућили вашим корисницима да бришу задатке кад год желе, требало би да користите ДелетеВиев ЦБВ. Ево примера:

класаТаскДелетеВиев(ДелетеВиев):
модел = Задатак
темплате_наме = 'таск_манагер/таск_цонфирм_делете.хтмл'
суццесс_урл = реверсе_лази('таск_лист')

Конфигуришите УРЛ-ове своје апликације

У директоријуму апликације креирајте а урлс.пи датотеку и конфигуришите своје УРЛ обрасце овако:

из дјанго.урлс увоз пут
из .виевс увоз ТаскЛистВиев, ТаскДетаилВиев, ТаскЦреатеВиев, ТаскУпдатеВиев, ТаскДелетеВиев

урлпаттернс =
пут('', ТаскЛистВиев.ас_виев(), наме='таск_лист'),
пут('Креирај/', ТаскЦреатеВиев.ас_виев(), наме='таск_цреате'),
пут('задаци//', ТаскДетаилВиев.ас_виев(), наме='таск_детаил'),
пут('задаци//update/', ТаскУпдатеВиев.ас_виев(), наме='таск_упдате'),
пут('задаци//delete/', ТаскДелетеВиев.ас_виев(), наме='таск_делете'),
]

Горе наведени УРЛ обрасци су слични УРЛ адресама креираним са приказима заснованим на функцијама. Разлика је у томе ас_виев() функција додата на крај сваког имена приказа.

Можете користите Дјанго пужеве за креирање УРЛ-ова уместо претходног примарног кључа.

Креирајте шаблоне за своје погледе

Дозвољавање корисницима да обављају радње дефинисане у горњим приказима сугерише да им обезбедите интерфејс за интеракцију. Из прегледа креираних раније, апликација за управљање задацима треба да има четири корисничка интерфејса.

У директоријуму апликације направите четири ХТМЛ шаблона. Такође би требало да креирате басе.хтмл фајл. Можете стилизујте своје Дјанго шаблоне помоћу Боотстрапа бисте уштедели време.

Шаблон листе задатака

Овај шаблон треба да садржи код који наводи све задатке у моделу. Скелетни пример кода је овај:

{% проширује 'басе.хтмл' %}

{% блок садржаја %}
<центар>
<х1>Ваши задацих1>
<ахреф=„{% урл 'таск_цреате' %}">Додај задатака>
{% за задатак у задацима %}
<див>
<див>
<х5>{{ таск.титле }}х5>
<стр>{{ таск.десцриптион|трунцатецхарс: 50 }}стр>
<стр>
<јака>Завршено:јака>
{% иф таск.цомплетед %}Да{% елсе %}Не{% ендиф %}
стр>
<ахреф=„{% урл 'таск_детаил' таск.пк %}">
Опширније
а>
<ахреф=„{% урл 'таск_делете' таск.пк %}">
Избриши задатак
а>
див>
див>
{% празно %}
<х3>Још нема задатака.х3>
<ахреф=„{% урл 'таск_цреате' %}">Додај задатака>
{% ендфор %}
центар>
{% ендблоцк %}

Са неким Боотстрап класама, можете учинити да ваша страница изгледа овако:

Шаблон детаља задатка

Ова страница би требало да приказује све детаље сваког креираног задатка. Ево примера шаблона који можете да користите:

{% проширује 'басе.хтмл' %}

{% блок садржаја %}
<х1>{{ таск.титле }}х1>
<стр>{{ Опис задатка }}стр>
<стр>Завршено: {% иф таск.цомплетед %}Да{% елсе %}Не{% ендиф %}стр>
<ахреф=„{% урл 'таск_упдате' таск.пк %}">Уреди задатака>
<ахреф=„{% урл 'таск_делете' таск.пк %}">Избриши задатака>
{% ендблоцк %}

У зависности од вашег стилског приступа, ваша страница би требало да изгледа овако:

Шаблон обрасца задатка

Овај шаблон треба да садржи образац који омогућава кориснику да креира или ажурира задатак.

{% проширује 'басе.хтмл' %}

{% блок садржаја %}
<х1>Креирај задатакх1>
<формуметодом="пошта">
{% цсрф_токен %}
{{ форм.ас_п }}
<дугметип="прихвати">сачуватидугме>
форму>
{% ендблоцк %}

Шаблон ће изгледати овако:

Избришите предложак задатка

Овај шаблон би требало да буде страница за потврду како би се спречило случајно брисање задатака.

{% проширује 'басе.хтмл' %}

{% блок садржаја %}
<х1>Потврдити брисањех1>
<стр>Да ли сте сигурни да желите да избришете „{{ објецт.титле }}“?стр>
<формуметодом="пошта">
{% цсрф_токен %}
<дугметип="прихвати">Избришидугме>
<ахреф=„{% урл 'таск_лист' %}">Поништити, отказатиа>
форму>
{% ендблоцк %}

Уз неки Боотстрап, ваша страница би требала изгледати овако:

Користите приказе засноване на класи да повећате своју продуктивност

Прикази засновани на класама су одличан начин за писање чистог, организованог кода за кратко време, чиме се повећава ваша продуктивност. Требали бисте их користити у својим пројектима што је више могуће. Такође, можете даље да интегришете функције као што су функционалност претраге, обавештења и тако даље како бисте своју апликацију за управљање задацима учинили потпуно функционалном апликацијом.