Унутар модела или парадигме развоја који он предлаже ФласкЈедна од најважнијих тачака је управљање приказима, јер нам они омогућавају да дефинишемо начин на који ће корисник комуницирати са нашом страницом или апликацијом.
Најједноставнији начин рада са приказом је дефинисање операције директно у дефиницији њеног пута, међутим то није увек корисно или адекватно, посебно ако правимо велике апликације.
ЗахтевиПотребна нам је функционална инсталација Фласк а из разлога компатибилности потребна нам је верзија већа од оне 0.7 пошто једна од компоненти са којима ћемо радити није била укључена у оквир тек након наведене верзије. Такође морамо покренути апликацију или имати неку апликацију Фласк тако да можемо укључити примере у одељак приказа и на тај начин их моћи извршити помоћу прегледача.
Погледи засновани на улогама
То је један од најједноставнијих начина за изградњу интеракције са корисником, само морамо написати функцију и украсити је рутом, што чини када рутер Фласк прими захтев, провери да ли постоји функција која чека на поменуту руту, а затим, ако га добије, извршава га.
Генерално, ова врста погледа захтева бар метод ДОБИТИ оф ХТТПМеђутим, као добра пракса и из безбедносних разлога, ако желимо да додамо вредности нашој структури постојаности података, можемо користити и метод ПОШТА.
Креирање приказа помоћу ГЕТ -а
Креираћемо приказ помоћу методе ДОБИТИДа бисте то урадили, једноставно морате дефинисати њено име у функцији и доделити јој путању, а затим ћемо унутар функције поставити наш садржај, да видимо следећи код да бисмо се илустровали.
@ апп.роуте ('/ виев-гет') деф виев (): валуе = рекуест.аргс.гет ('цонтент', 'сампле') ретурн 'Ово је приказ који користи ГЕТ и прима вредност:% с'% вредностУ коду тада видимо како користимо декоратер Да бисмо назначили коју руту чекамо, дефинишемо одговарајућу функцију и унутар ње упућујемо позив захтев на аргументе које је примио ДОБИТИ, у овом случају тражимо аргумент који се зове садржај и додељујемо га променљивој која се зове вредност, ако овај аргумент не постоји, „узорак“ ће бити постављен као подразумевана вредност, и на крају враћамо текст и проследимо садржај вредности .
Ако покренемо наш пример у прегледачу, добили бисмо следеће:
Креирање приказа помоћу ПОСТ -а
Шта се дешава ако желимо да примимо осетљиве податке, а не желимо да их проследимо кроз параметре у УРЛ -у, јер у тим случајевима морамо да користимо методу ПОСТ, пошто шаље податке скривене од погледа корисника, наравно тамо су друге безбедносне мере које треба да применимо, али тренутно нам нису потребне за овај случај.
Да бисте изградили приказ који прима податке путем ПОСТ -а, морате само да наведете очекивани метод у декоратер који прима руту коју желимо, за то користимо додатни параметар методе.
Тада унутар наше функције можемо користити захтев да бисмо добили вредности, међутим, за разлику од претходног примера, уместо да захтевамо аргументе, морамо назначити да вредности примамо из обрасца. Хајде да погледамо код за оно што смо управо објаснили.
@ апп.роуте ('/ пост-виев', метходс = ['ПОСТ',]) деф пост_виев (): валуе = рекуест.форм.гет ('цонтент', 'сампле') ретурн 'Ово је приказ који користи ПОСТ и прима вредност:% с '% вредностМожемо приметити да је то скоро исти код као горе, осим већ поменутих разлика, али хајде да видимо шта ће се догодити ако код покренемо директно у прегледачу:
ЕНЛАРГЕ
Како само специфицирамо да можемо примити методу ПОШТА, приликом приступа путем ДОБИТИ наша апликација одбија унос и стога нам шаље код 405 Метода није дозвољена, па без вредности које долазе из ПОСТ захтева овај приказ неће приказивати никакве информације.
Комбинација ГЕТ и ПОСТ у приказу
Пошто руковање различитим погледима за сваку методу није увек оно што желимо, можемо користити обе методе у истом приказу, ово је веома корисно, посебно када желимо да обрадимо обрасце, на пример, методом ДОБИТИ показујемо форму и са ПОШТА обрађујемо пошиљку исте.
Да бисмо користили овај режим, морамо само да додамо ДОБИТИ на списку на који смо прешли методе при дефинисању декоратер са стазом, да видимо доњи код:
@ апп.роуте ('/ виев', метходс = ['ГЕТ', 'ПОСТ',]) деф виев (): иф рекуест.метход == "ГЕТ": ретурн '' 'Схов Виевс' '' елсе: валуе = рекуест.форм.гет ('цонтент', 'сампле') ретурн 'Ово је приказ помоћу ГЕТ -а и ПОСТ -а који прима вредност:% с'% валуеПриликом позивања руте из прегледача методом ДОБИТИ добијамо следеће:
Затим уписивањем нечега у поље за текст и притиском на Ентер шаљемо образац на исту путању, али са методом ПОШТА, што нам даје резултат попут следећег:
Овде смо тада написали прави приказ заснован на функцији, који нам омогућава да користимо и искористимо обе методе ХТТП да обављамо наше операције.
Погледи засновани на класи
Како је стварање функција, иако служе нашим циљевима, понекад врло незграпно и подложно је томе да има више кода него што је потребно, Фласк спровео позиве класно засновани погледи, концепт од кога је позајмио Дјанго, и то нам омогућава да напишемо класе помоћу којих ћемо генерисати погледе, те класе могу бити генеричке са којима можемо да наслеђујемо ако желимо.
Да бисмо користили ову врсту компоненте, морамо прво да увеземо из фласк.виевс, где је класа Поглед То је генеричка класа која ће нам омогућити додавање основних функционалности како бисмо могли слати руте и дефинисати методе.
Креирање нашег приказа заснованог на класи
У овом примеру ћемо створити исти приказ који смо радили у претходном примеру, али из приступа заснованог на класи, на овај начин можемо установити разлике између оба облика, имајте на уму да, иако се то не појављује у примеру кода, направили смо увоз класе Виев.
Погледајмо код за наш пример:
цласс ВиевЦласс (Виев): метходс = ['ГЕТ', 'ПОСТ',] деф диспатцх_рекуест (селф): иф рекуест.метход == "ГЕТ": ретурн '' 'Схов Виевс' '' иф рекуест.метход == " ПОСТ ": валуе = рекуест.форм.гет ('цонтент', 'сампле') ретурн 'Ово је приказ помоћу ГЕТ-а и ПОСТ-а који прима вредност:% с'% валорапп.адд_урл_руле ('/ виев-цласс', виев_фунц = ВистаЦласе.ас_виев ('виев-цласс'))Ово је најосновнији облик овог стила гледишта, међутим видимо да више не зависимо од декоратер, оно што ми радимо називамо методом диспатцх_рекуест и прошли смо поред њега себе тако да прима исти објекат са овим можемо одредити захтеве које примамо, затим означавамо да ћемо примити обе методе и на крају дефинишемо наше понашање, резултат по прегледачу ће бити исти као и претходни, имаћемо поље и када га пошаљемо примићемо наведени одговор.
Али шта ако желимо да напишемо много чистији код? За ово можемо користити класу МетходВиев оф Фласк што нам омогућава креирање метода унутар класе за дефинисање метода ХТТП на једноставнији начин.
Погледајмо следећи пример где смо преписали претходни код да бисмо користили овај режим:
цласс ВиевЦласс (МетходВиев): деф гет (селф): ретурн '' 'Схов Виевс' '' деф пост (селф): валуе = рекуест.форм.гет ('цонтент', 'сампле') ретурн 'Ово је приказ који користи ГЕТ и ПОСТ који прима вредност:% с '% валорапп.адд_урл_руле ('/ виев-цласс ', виев_фунц = ВиевЦласс.ас_виев (' виев-цласс '))Као што видимо, одустали смо од дефиниције метода које ћемо примити, осим тога више не користимо методу депеша, једноставно дефинишемо шта ћемо радити у методи ПОШТА, и шта ћемо радити у ГЕТ -у, дајући тако много више очију нашем виду.
Још увек постоји расправа да ако је боље да ставови засновани на улогама таласи на основу класе, али заиста не постоји један бољи од другог, постоје једноставно два начина рада, препорука је да ако је приказ врло једноставан можемо то учинити с функцијама, а ако већ има потпунију логику то радимо с класама .
Овим смо завршили овај водич у којем смо изградили важну базу знајући како погледи функционишу и како можемо радити са њиховим различитим методама ХТТП, будући да је ово темељ који можемо користити за креирање напреднијих апликација.