[Мусиц плаиинг] Езра Зигмонд: Здраво свима. Хвала што сте дошли данас. Овај семинар је "Питон Веб Аппс са балон. " Дакле, ја ћу да разговарам мало о томе зашто можда ћете желети да користите Пљоска да веб апликације са Питхон, насупрот неким другим оквирима вани, као што су Дјанго, који је најпознатији. Поднаслов је "и пеевее ", што је нешто ћемо разговарати о томе како интеракцију са СКЛ базама података. То га чини веома лепо. Дакле, овде је само брз резиме шта желим да одем. Дакле, прво, само један слајд који ће бити Брзи, који је како добити све подесите на рачунару. Идем да се демонстрира ово на мом локалном Мац рачунару, само зато што тамо сам ово пре, ја сам најудобније са њим, али ово је дефинитивно могуће на ЦД50 ИДЕ. Дакле, после тога, желим да уведе оно што је Чутура, и уверити вас зашто би користите га на првом месту. Онда ћу дати брзо Пример онога што може да уради у боци, брзи пример шта можете да урадите у Пеевее, а онда ћу вам показати више комплетан пример апликација да сам ставио заједно да смо ми може пролазити кроз заједно. И коначно, у последњи слајд, имам нека средства да погледате на веч више информација. Ово није комплетан туторијал како да користе посуду. А ја ћу надам се да одем мало времена за питања. Свако гледа локално, само као, викати у средини Ако имате било каквих питања. Тако брза монтажа ствари, Ако желите да пратите, или ако желите да добијете ово се на својој машини, Ја ћу користити Питхон 2.7.10. Чутура ради са Питхон 3, али ја волим користећи Питхон 2, јер је неки пакети који Питхон не раде са 3 још. Ако сте Пип инсталиран, која је менаџер Питхон пакет, Мислим да ако је ваш Питхон је већи или једнак 2.7.9, имате већ инсталиран, то је супер лако да инсталирате ове пакете. Можете да инсталирате бод Чутура, пип инсталл Пеевее, обично морате да покренете судо само тако да дозволе успело. А, ако се користећи Супер стара верзија Питхон, Препоручујем ажурирања Питхон, или коришћењем ЕасиИнсталл да инсталирате пип. Дакле, следеће питање је, шта је Чутура? И претпостављам, прво разумно питање Питао сам се за дуго времена, шта је веб апликација? Јер то је реч коју ја мислим да је бачен око много да ја нисам знао. И ја мислим да је најбоље пример шта веб апликација је, Заиста је ЦС50 финансија, где то није стварно само сајт, али то је нешто што вас могао некако интеракцију са. Постоје кориснички налози и све врсте различитих ствари. Па, где сте тачно нацртати линија између онога што је сајт, и оно што је веб апликација, је врста произвољно, али мислим да ту идеју, то је нешто више од сајту и то је корисна апликација. Дакле, Чутура је оквир за израде веб апликација помоћу Питхон. И надам се, до краја ово, ја ћу вас уверити да би стварно могао нешто написати као ЦС50 финансија користећи Питхон, који сам као да је много боље него ПХП, лично. Дакле, Чутура је, зову мицрофрамеворк, чиме, они значе врло је једноставно, али проширив. Дакле, има само оно што вам треба, али ако желите више функција, лако да их доведем. Али само зато што је то мицрофрамеворк, не Мислим да је само за мале пројекте. Имам везу овде да каже да Обама користи посуду у 2012. за своју кампању сајт, који надам се, је нешто одобравање. Али оно што сам заиста свиђа Фласк да, то стварно не би било каква одлука за вас. Само зато што смо говоримо о веб апликацијама, Морам да га упоредим са Руби он Раилс и Дјанго, од којих су оба су велики оквири, али Обојица су се претпоставке о томе како желите да интеракцију са базама података, како желите да представите своје прегледа, а они дефинитивно добри аспекти на то. На пример, Руби он Раилс има ту активно снимање систем, што је заиста лепо начин да комуницирају са подацима, али ако желите да користите Руби он Шине, ти си некако везан у то. Али са боци, као што ћу показати вам Пеевее, можете користити било какве базе података желите, а ви само може да извуче да је у као продужетак у посуди. Зато сам стварно као боци, то је то то не правити претпоставке за вас на основу ствари које не стварно треба. Па, зашто би требало да користите Пљоска? Предности су, само је заиста основне карактеристике уграђени у њега да вам је потребна. Дакле, не морате да бринете о разумевање гомилу ствари да не стварно треба. Не морате да морате да бринете о искључивања функције да не стварно треба. И, као што сам поменуо, то је супер лако додати у наставцима ствари да не треба. Неки од њих, Чутура има своје подршка за њу. Дакле, постоји нешто што се зове Чутура Админ, што одражава ту админ панел који обезбеђује Дјанго, што вам даје леп визуелни начин да управља свој сајт. Али опет, ако сте чинећи нешто једноставно, вероватно не треба велики админ Панел, тако да мислим да је супер лепо. А недостаци су, да имате мање снаге из кутије. Дакле, када се први пут отвори боци, и у вашем Питхон програму, само укуцајте од Фласк увоз *, или шта год, не баш добити све карактеристике можда ћете желети. И тако да ћете морати више експлицитно листу функције које желите. Дакле, то је једна мана, али ја Мислим да је за изградњу мале веб апликације као што ћу се приказује ти, то није стварно проблем. А шта је последња ствар требао да кажем, што је грешка у куцању, је да постоје мање стандардизоване конвенције за како да користите балон, само зато нема онолико људи који га користе професионално у односу на Дјанго. Дакле, ако погледате нешто слично, "како то да урадим к" у Дјанго, вероватно ћете га наћи. Постоји добар дизајн обрасци које можете користити, али са боци, то је некако иде својим путем, само зато што је то прилично мала библиотека. Дакле, то су мане, али мислим да је још увек добро библиотека за коришћење. Дакле, хајде да скочи право у боци. Ово је дефинитивно неће да буде комплетан туторијал, али то је да вам дам идеју како да изгради ствари, и тако се осећате угодно иде офф и гледа у документацији и сазнате више. Дакле, дозволите ми да отворим стварно Једноставан пример на први поглед, и показати вам шта да изгледа, а онда ћемо бреак ит довн мало више. Дакле, ово овде, дај ми то ради. Дакле, ја сада имам апликације. Ја ћу да отворим Сафари, и он ради на свом локалном домаћина. Зато Идем само да ово веће. Али лоцалхост: 5000 И тако, сада, све ово ради је, када посетите сајт, се исписује "Хелло боци," што није супер корисна, али мислим да је кул да у овој малој датотеци овде, имамо веб сервер руннинг да се штампа нешто. Дакле, хајде да погледамо ствари у коду за секунду, и разбити га мало. Да ли је величина добра за све овде? Дакле, надамо се, ви сте нешто удобно користећи Питхон. Претпостављам да можемо да погледамо Питхон и прочитајте кроз њега. Ако имате било каквих питања у вези ништа, ја могу да одем да. Дакле, прва линија је од боци, увозимо, боцу са великим "П" који је некако све кључне карактеристике које су вам потребне. Кад год пишеш фајл и помоћу Чутура, ти ћеш желети да увезете да, само зато што има све главне ствари. Следећа ствар коју радимо, је да позовите ову функцију боци, само да створи апп објекат, а ти си увек хтети да уради. А онда, скакање доле до дно брзо, овај део овде је, 'иф_наме _ == "_ маин_"' који је нека врста Питхон конвенције. Дакле, ово ће извршити само ако покрену овај фајл директно користећи Питхон. Затим, зовемо апп.рун, који ће заправо покренули апликацију иде. Дакле, то је главна структура која мораћете у било којој боци апликације, се имаћете ово апп = Фласк (_НАМЕ_), а затим апп.рун. Дакле, две ствари које имам овде, су оно што ми зовемо путеве. Дакле, хајде да разговарамо о роутинг мало више. Ја ћу се вратити на слајд. Тако је најосновнија концепт у Балон је рутирање. И то је идеја која вас доделите функције у Питхон на одређене адресе на својој веб страници. Дакле, кад год пожелите да створи нову руту, користите овај @ апп.роуте Функција декоратер. Дакле, ако сте упознати са функција декоратери у Питхон, то је тај концепт који омогућава вам да се функција и окружују га са нечим другим. Па стварно, шта је ово декоратер ради, је да је потребно функције испод ње, и додаје више информација на то, али шта заправо Чутура не би се то десило није супер пресудан, али оно што је важно, је да је пре путу, ви ставити овај @ апп.роуте, а затим адреса трасе, тако да је коса црта је оно што смо видели када смо отворити веб страницу. Дакле, то је страница. То је само коса црта пут. И онда имате ову функцију. Назив функције може да буде шта год хоћеш. Не мора да нужно има везе са трасе. И онда, шта год повратак ове функције, функција треба да врати стринг. И то може ниска садржи ХТМЛ или ништа, а то је заправо оно што ће добити вратио на своју интернет претраживача као ХТМЛ, и то ће донети то. Дакле, ово је исти број то је од примера да сам побегао, па када смо посету Сласх, она зове Хелло Ворлд функцију, што само враћа стринг, Добро Чутура, и који бива одштампан на екрану. Дакле, ту је још један пример, који је, приликом посете / здраво, се исписује Хелло реч, која би заправо требало рећи, Хелло Ворлд, али хајде да се претварамо да је то намерно. Дакле, хајде да повуче који се јако брзо. Дакле, ако одете на лоцалхост / здраво, сада ће штампати нешто друго. Дакле, то је само брзо пример како можете направити два различита тренда. Тако, до сада ово није супер корисна, не постоји много можете да урадите, бисте могли учинити све да са имају различите ХТМЛ странице, и када посетите одређени страна само учитава страницу. Па да видимо још корисне ствари које можете да урадите. Дакле, једна ствар коју ћете можда морати Приметио у примеру који сам извукао горе, је да сам апп.рун (дебуг = Труе). И тако, шта је ово дебуг Аргумент ради, је да када покренете веб сервер, када сте у вашој апликацији, ако промените датотеку, она ће аутоматски релоад сервер. И тако да заправо не морате да Рестарт Питхон што је супер корисно. Могу показати да. Дозволите ми да подигне свој код са куцању у њој, и претварати се да грешка је тамо ставио намерно за инструктивне сврхе. Дакле, хајде да додамо ово назад. Дакле, сада се каже Здраво свете. Ја ћу га спасити. А ако се повуче горе терминал, ви ћете кажу да је то поново покреће, јер детектује промену, па сада када смо релоад тхис паге, она ће одштампати исправну ствар. Тако дебуг је супер корисно за то. Такође, ако имате било врста судара, тако дозволите ми да ову апликацију судар тако што се не враћа стринг. Дакле, хајде да га Ноне врати из неког разлога. И онда када ја посетим ово страна, само ће срушити, али сервер не само срушити, то Заправо вам даје супер користан леђа траг свему што је пошло наопако. А шта је стварно лепо, да се у сваком кораку у овом задњем трага, можете отворити интерактивни схелл овде, и нека врста одштампати шта варијабле желите да погледате. И тако је стварно отклањање грешака корисно за фигуринг оут шта се дешава са вашим Сервер, него само види нешто у ПХП Лике А 500 интерни сервер еррор, што је супер бескорисно. Једна ствар да буду свесни, је да ако ставите апликацију на мрежи тако да је видљив у јавности, ви Не желим да напустим дебуг моде на, јер људи могу заправо користити ту конзолу да Показали сте да извршите произвољног кода. Дакле, они могу одштампати као и сваки тајни кодови имате тамо, могу погледати тачно како ваш сајт ради. Дакле, то је заиста корисно за тестирање, али увек уверите се да га изваде пре објавите нешто на мрежи. Дакле, када користите нешто као ПХП, ту је ова идеја да можете проћи информације између веб странице стављајући информације ствари у УРЛ, који је ГЕТ захтев, али у боци, заправо можете урадите нешто некако тако, тако што путању која има променљиву као део тога. Дакле, ако погледате ово Пример на екрану овдје, имамо пут који је ('/ здраво /'), и тако, ако посетите / здраво / нешто, да нешто ће заиста добити попуњен у име променљиве. А приметити да функције који долази са тог пута мора да узме у параметру име, тако да стварно хоће се прошло у функцији. А онда, када сте унутар те функције, можете третирати то као нормална Питхон променљива, па онда, то ће одштампати Здраво, и то ће попунити у име користећи неки низ форматирање. Тако да додате променљиве делове на рутирање, користите угао носач ознаку. И опционо, можете користити како се зове претварач. И тако, ако сте ставили ово аннотатион са дебелог црева, можете одредити да је инт или флоат, или пут, и она ће се аутоматски претворити то. Можете направити конверзију у оквиру функције Питхон, само помоћу гипс, али понекад ако желите да будете сигурни да је инт, можете ставити да Правило конверзије тамо. Дакле, хајде да подигне пример неких променљивих правила. Па ево, ово је исти основни структура са Чутура из увоза Чутура, апликација = Чутура (_НАМЕ_), и онда се ради на крају. Имамо ова два различита променљиве руте овде. И прва је онај који сам показао у клизачу, што је тај потребно је у имену стринг само и то ће одштампати Хелло, име. А онда, други једна користи конверзију. Дакле, ово ће аутоматски га претворити на инт, а затим двоструко инт, и одштампајте то. И, ми не радимо неку врсту конверзије у њој јер Чутура брине о томе. Дакле, хајде да ово ради. Када имате балону апликације, можете Цонтрол-Ц од тога да се заустави сервер покренут. А онда ћу покренути варијабле. Дакле, идемо да лоцалхост / Хелло / Езра и надамо се, ово ће поздравити са мном. Тако да је у моје име, у променљивој пут, а то је попуњен овде. Зато ћу такође показују брзо Пример дуплирања. Дакле, ако одете у / дупло / 3, она ће одштампати 6. Дакле, ово је бринула о конверзија за нас. Дакле, можете то учинити са пловак, а нешто посебно, ако је потребно да наведете нешто слично пут, који вам омогућава да прихвати косе црте, али то не би требало обично бити проблем. Тако смо сада, још увек има управо враћа жице, што није веома интересантно. Могли би заправо вратити буквално ХТМЛ-стринг. Дакле, у коду можемо убацити нешто као Б-ознака да буде храбар, али већина, да сте време не заправо желим да буде писање ХТМЛ код у вашем Питхон кода. Постаје заиста неуредан, и то није добро време. Чутура нам омогућава да се одвоје Оут тхе ХТМЛ-у оно што се зове Шаблон, па ако размишљате у смислу МВЦ модела да сте упознати са, надамо се, од рада са ЦС50 финансија мало, можете да Питхон датотека као више контролера, где они су у интеракцији са год Модел податке које можда има. А онда су се дозива Виевс и преношења информација до тог Виев да попуните информације у ХТМЛ да је потребно. И оно што ми зовемо оне Виевс Шаблон су у класи. Дакле, Чутура користи другу Питхон модул који аутоматски ће инсталирате када инсталирате Пип Чутура зове Јиња, који омогућава вам да додате ове ознаке на ХТМЛ да видите на екрану, који омогућава сте ставили у ствари као што су уредаја, и петље у ХТМЛ. Тако то изгледа помало како сте могу користити ПХП у ХТМЛ датотеку, али ово је само кад је Фласк Сервер сервира ХТМЛ фајл, она ће покренути ову темплатинг мотор и парсе кроз ово и попуните ствари у. Дакле, Чутура има функцију рендер_темплате да можете да видите на дну овде. И тако када посетите ову страницу, ит би учинило ову хелло.хтмл Темплате, а затим попуните овај ХТМЛ страницу. Дакле, хајде да водим ово стварно брзо, и видите како то изгледа, и онда ћу ићи кроз мало детаљније. Дакле, калупе иду да се у фолдеру Обрасци. То ће аутоматски тражити у оквиру Фолдер Обрасци за тај Темплате. Дакле, хајде да отворимо ово. Дакле, ја ћу покренути темплатинг пример. Дакле, ако одем у / хелло / Езра, има то страшно, одвратан надстрешница ознака које сам ставио у. Врло лепо, врло динамичан. Ја сам велики фан. Али, шта се дешава ако Само идите на, / здраво? Тако да само каже Здраво свете. Нисам му донесе име, и да га попуњава аутоматски. Дакле, хајде да видимо како је то урадио, и како можемо се ослободити тог Маркуее можда. Дакле, овде, ово је врста занимљив пример, Ако сте упознати са колико прекидач изјаве ради на језику. Кажу да је то нешто као, такве пада преко, где сте заправо у прилогу два различити путеви на исту функцију. Зато смо повезали / Хелло пут и у / здраво / име пут до Хелло, а ми навести усинг-- Питон вам омогућава навести подразумевани функције аргументс-- па ако нема имена, тако ако одемо на само / здраво, она ће аутоматски филтрирати да наведемо једнака Ноне. Дакле, ми је учини Шаблон са НАМЕ = Име, тако да ће проћи у име параметра једнака овај назив функције параметра, у Темплате. То још увек не објашњава како је одлучивању да ли да штампа Хелло Ворлд, или штампање моје име. Дакле, хајде да погледамо ствари у самом Темплате, и види где то долази. Дакле, у овом Темплате смо заправо имају неку условну логику, што неки људи би тврде, заправо не би требало да имају доста условна логика унутар вашег саме Темплате. Требало би да буде унутар самог Контролер, али у овом примеру то је нешто прилично мали. Дакле, овде смо проверили, ако је име, тако ако име није једнак Ноне, ако име је заправо донет, онда ћемо саи Хелло, име и заглавље и надстрешница, све ово нормално, ХТМЛ, у супротном, ми ћемо одштампати Хелло Ворлд само нормално. Дакле, неколико ствари приметити овде о томе како форматирати темплатинг, је то, сви ови условне изјаве, нешто као како смо га када ПХП желите да унесете мало ПХП, користите мање-него питање Марк, то је нека врста аналоган овде sa {%. Дакле, овде, имамо условну код. А онда, када заправо желе да буквално проценити нешто, и штампање да се на екрану, користити дупле заграде. Дакле, овде су двокреветне протезе, и онда навести име, у року од тога ће проценити на варијабилни именом, које донет је у од рендер функцију шаблона, него само штампање да, ако смо се отарасили њих, само би одштампати реч "име". Дакле, то је нешто што пазити. Дакле, друга ствар је Обавештење је да, када смо желите да користите рендер_темплате функција, ми заправо морамо да увозимо је изричито од балон. И ово је пример модуларност боци, да не морају да увозе ствари које не треба. Само могу довести у Функције ви у ствари Не треба, што је понекад лепо, тако да не имати све ове функције седели које не користите, али и ако заборавите да вас треба да увезете рендер_темплате, вероватно ћете добити упозорење који ће да вас обавестим о томе. Дакле, то је Темплатинг. Дакле, показали смо како да једноставне веб странице, и додајте мало више логике да ит, у смислу променљиве трасирања. То вам омогућава да раде различите ствари на основу оно УРЛ адреса одете у, као и онда, дај ХТМЛ мало више смисла услови како желите да донесе ствари. Не морате да све Ваш ХТМЛ у вашем Питхон, али прилично свака веб апликација, ти ћеш желети неку врсту модела података у вези са тим. И тако традиционално, ово би бити нешто као СКЛ бази података. А ви само да интеракцију директно са СКЛ. Питхон има, мислим да се зове. СКЛите 3. Само да увезете СКЛите 3 и извршава СКЛ упита директно, али ја не знам за вас, али ја стварно не волим, само, писање СКЛ упита. Она има тенденцију да се стварно дуга и компликована. И тако, нешто што Ја волим да користим је оно што је познат као ОРМ, што је Објекат-релација мапирање. И тачка Објекат-релација мапирање, је да постоје два различита начина на које можете мислити о базама података. Тако је на пример да Професор Малан обично користи у разреду, је Екцел табела, гдје имате ове редове и ове колоне, и то је заиста корисно за како је представљена у СКЛ и како сте у интеракцији са њим, али још један начин да се заправо корисно понекад размишљам о томе, у смислу класа и објеката. Дакле, уместо размишљања сваког стола да имају Овај ред да има одређени информације, заправо могу мислите о томе као сваки сто је класа, и онда сваки случај од класа има одређене особине. Дакле, у овом примеру, случајеви класа су редови у табели, и онда сваки имовина би постаће колона у табели. Дакле, ОРМ да волим користити се зове ПееВее. То је заиста мали, нешто као балон. Мислим да су они добро иду заједно, али постоји много других Ормс да можете користити. Много популаран један је познат као СКЛАлцхеми, а ја не могу да се сетим зашто сам првобитно изабрао пеевее преко СКЛАлцхеми, или бих вам рећи зашто сам Мислим да је најбоља, али ми ћемо користити ово један зато што знам како да га користим. Дакле, једно питање је, зашто треба да смета користите ОРМ, уместо да директно писање СКЛ упита? И мислим да најбољем случају, је да не стварно морају да пишу СКЛ упита. То је много лакше, јер ја ћу вам показати, да раде ствари као што су избор, уметање, брисање, посебно креирање табела. Много је лакше напиши структуру класе, него што је на структуру а Креирајте Табела изјава, али једна ствар да буду свесни, да ОРМ ће покушати све од себе да схватим шта је највише ефикасан СКЛ упит ће бити, али понекад постаје погрешно. А поготово ако сте рад са великом базом података, можете приметити да упита који треба да се брзо ради, заправо траје дуже. И ако погледате испод хаубе колико ОРМ је тумачење да је у СКЛ, могло би се радити нешто Стварно смешно, Само зато што некако махну твоје намере погрешно. И, било је времена, када Морао сам да га замени, и само изврши своје СКЛ упита, само јер је граматичку анализу на чудан начин. Дакле, постоји нека изнад, само на путу да саставља свој изјаве доле у ​​СКЛ. Дакле, хајде да погледамо Супер брзо на једноставан пример модела података да би сте користили. Дакле, ово је Питхон кода, и тако Прва ствар коју желите да урадите је из пеевее увоз *. Дакле, за разлику од боци, где имате Сви ови појединачни модули, и желите да увезете балон, и напише шаблон, и неке друге да ћемо видети касније, од Пеевее, само да увезете све, јер је то прилично мала библиотека. Дакле, прва ствар коју желите да урадите је правите ова база података објекат. Дакле, имате ДБ = СклитеДатабасе, а затим име ваше базе података. И то ће створи базу података објекат да можете да интеракцију са, са пеевее. А онда, имамо стварни модел који желимо да створимо. Дакле, сто ми желимо да створимо. Дакле, у оквиру Пеевее, свака класа има сопствени сто у својој бази података. Тако сви класама наследио од основног модела, и главни П модел нешто што је дефинисано у ПееВее. Дакле, све своје моделе треба наслеђују као свој највиши суперцласс, они треба да наслеђују од модел, али оно што је стварно кул, је да заправо може имати свој моделс наследити од међусобно. И много времена, ваш модели подаци не нужно направити леп хијерархију наслеђивања, али пута где они раде, то је лепо, јер имате модел инхерентна једни од других. Дакле, дефинисали смо ову класу 'студент' који наслеђује модел, и има три својства. Има ИД, што је ПримариКеиФиелд, која је нешто што дане од пеевее, име је ЦхарФиелд, а оцена је ИнтегерФиелд. Тако да то може или не морају бити како ЦС50 заправо чува све Студентски разреда. Није, али ово је како бих ја то урадио. А онда је, у оквиру ова класа, и ово је нешто што можете да урадите са Питхон можете имати уметнуте часове. И то је нешто што је потребно за ПееВее. Дакле, ова класа Мета имате да прецизира да је база података једнак до објекта које смо горе створили. И то каже шта фајл је ова табела заиста троше бити садржана у. Дакле, ово је нешто што имате да раде у свим својим моделима. Потребно је само да одредите у оквиру ове класе Мета Та база података је једнак дб. Дакле, оно сто обицно радим, ако имам гомила различитих модела, је да имам једну базу модел који обично само зови "основни модел" да има Мета класа, и поставља базу података једнак дб. А онда су сви моји каснијих модела ће наследити из тог основне класе. И онда ја не морам да бринем о одређивању Мета класу. Дакле, када се то заправо добија састављен доле у ​​СКЛ изјаве, то изгледа овако јаког ствар доле Овде, "Креирај табелу Студент ИД цео број, " šta god. И, мислим да је краћи, ово СКЛ овде, али ако погледате ове класе овде можете видети тачно шта се дешава. Можете видети Које области постоје, оно што они називају, па, мислим да гледајући ове Питхон кода је много више него читати Покушавам да напишем овај СКЛ упит. Дакле, да би да заправо користи базу података, морамо да се повеже са њим у Питхон. Дакле, ја обично пишем функцију која се зове инитиализе_дб да ради две ствари. Потребно је у бази података Објекат ДБ и повезује на њега, што само отвара до секције за базу података. Ако си само трчање, иако сајт на локалном рачунару, то није супер велика ствар за бригу о повезивању и раскид, али ако радите је на веб сајту, ви Желим да се уверите да, кад год корисник повезује на њу, кад затворити веб сајт, они искључите тако да немају гомилу људи повезаних на вашу базу података одједном. А онда, када вам повезивање са базом података, желите да позовете дб.цреате_таблес, и навести моделе за оно што желите креирање табеле. Дакле, овде, само желим да креирајте га овом ученику. А онда, оно што је важно, јесте да навести безбедно = Труе највише времена. Дакле, оно што ова изјава ће учинити, је ли то ствара столови за студент модел, али само ако то сто нема већ направљена. То је оно што сигурне наводе. Тако да неће преписати Ваш постојећи сто, то ће само створити нова табела ако нема никог. Дакле, можете само да креирате столови некада користећи СКЛ. А онда има ту базу података седење тамо, а затим прикључите сваком тренутку, али то је обично лепо само пут у овом цреате_таблес позиву, тако да, ако икада избрисати своје База података када покренете свој веб Апп опет, то ће га поново. Дакле, само пазите да безбедно је наведено да би било истинито, или ћете пронаћи своје податке само узимајући разбили сваки пут. А онда, само да позовете инитиализе_дб да успостави веза, и створити столови ако је потребно. Дакле, најчешћи ствар који ће желите да урадите, или један од најчешћих ствари, је заправо убацили ствари у својој бази података. И тако, уместо да да напише убаците у Изјава са свим вриједности наведено, заправо можете звати функција на студентске класе. Дакле, када креирате класу која наслеђује од модела, има то створити метод. Дакле, ти класе наме.цреате, а ви одредите параметре да желите да прође у. Дакле, ако желим да додам неке ученике нашем ЦС50 разред књига пример, Ја ћу ставити у Давида, који има врло добар разред, има 95. И ја, ко не ради тако добро у ЦС50, имам 50. И тако, добра ствар о шта је ово креирање функција ради, је да враћа инстанцу или ред, да је створен у табели, па онда чувате да је у променљива, и рад са њим касније. Можете да промените около, која Ја ћу показати пример. Приметите да нисам треба да наведете ИД, јер од је то ПримариКеиФиелд, аутоматски ће инкрементирање га ако га не прецизира. А, у ствари, вероватно Не би требало да прецизира, јер сте случајно можда разбије туђе ИД. И желите да се сигуран да је то јединствена. Дакле, у ствари, највише уобичајена ствар коју желите да урадите, вероватно изаберите из базе података једном вас има доста информација тамо. И тако, ако желите да добијете све, тако да је еквивалент изаберите звезде од ученика изјаве, то би само студент.селецт. И то ће вам вратити низ са свим студента објеката у њему да прелазили преко желите. Можете добити ствари из ње. И већину времена, ви не само желим да радим изаберите, заправо желео да прецизира нешто. И тако, можете ланац заједно ове функције позива, Свиђа ми се како ти би ланац заједно су изјаве у СКЛ. Дакле, можете да урадите студент.селецт (). Гдје у овом примеру. А онда, можете прецизира услове, користећи само нормалан Питхон Боолеанс да провери ствари. Дакле, у овом случају, желите да ограничи оно што изаберете да, где је студент.граде је једнако 50, и студент.наме је једнак Езра, тако да ће ме изаћи из ње. И приметио, један заиста суптилна ствар овде је да, ако желите да одредите и / или и ор / или, у Питхон-у, ви иначе користите, Мислим да је реч "и" ствари, али овде користи јединствену амперсанд, што је нормално оператор битовима, али у овом посебан случај, баш онако како ПееВее то ради, користите сингл Амперсанд да одредите "и". То је нешто што Ја се мешају много, али не долази до толико у пракси. А онда, када имате све студенти од базе података, Једном сте урадили да сте изаберите и ваш хабање или шта год, можете користити фореацх петље, баш као нормалан у Питхон-у, са било какве итератору или било какве низа. Дакле, можете да урадите за с у студент.селецт (). ухе Ре (Студент.граде <75), те ће Посматрајте преко сваког студента у табели чија оцена је мањи од 75 који у овом случају, и даље само ја. А онда можете да урадите нешто у да петља, као и пошаљите ми е-маил и реци ми да стварно окрените у мојим проблем поставе. Дакле, још једна ствар коју можете да уради, је да је стварно лако да ажурира редове у оквиру табеле. Дакле, запамтите овде, Ваш када сам убаци, Узео сам вредност која је вратио студент.цреате, и ја га добио на име зове Езра. И сада, можете да промените вредности унутар том случају, баш као што си би једна нормално класе у Питхон. Дакле, можете да подесите езра.граде = 95 и који ће ажурирати локалну копију, али ако заиста желите да обавезују да промене у бази података, морате да позовете езра.саве, тако да се зове .саве метода на пример. И тако сада сам успешно промењен моја оцјена унутар базе података. Дакле, хајде да кажем да ме ухвате мењам разред унутар базе података. Професор ће вероватно Малан да жели да ме избрисали из класе, и тако да можете позвати .делете инстанца метода само на ту ствар. Дакле, ако желиш да идеш назад у ову петљу овде, и заправо, уместо слања е-поште све ученика чији степен мање од 75 година, си хтео да их обришете, у овој петљи сте могли позовите с.делете инстанце. И последња ствар желите да урадите, је кад год успоставите везу, а ви завршите са својим радом, желите да позовете дб.цлосе, где ДБ је да база података приговорити да смо раније имали. И желите да се уверите да све бива затворен од. Кул. Дакле, сада имам пример апликацију. Ја сам некако пре-маде све само тако да неће бити никаквог уживо кодирање грешке, али можемо проћи кроз па да видим како би ставио Пљоска и пеевее заједно, и направити једноставну апликацију. Ја то зовем ЦС50 рант, а то је врста једноставног блог платформи. Дакле, прво, ја ћу га покренути и показати како то изгледа, и онда можемо да погледамо још у коду. Океј, хајде да ради ово. Супер, ја ћу направити ово мало мања. Није Веома је лепа, само зато Нисам се много ЦСС, али оно што ради јесте да има ова база података о блогу, и пролази кроз све их, и то ће их приказати на страници у поретку најновији. И тако су само неке поруке да сам чувају у бази података. Дакле, ако желимо да створимо нови порука, можемо да додате нови Пост, и можемо ући наслову порука, па нешто као, ЦС50 Семинар. Вов, стварно ужива семинар. Кул. Онда притисните пост, и то ће преусмерава вас вратим на почетну страну, и онда ћете видети да је последњи пост је додат. И даље имамо све оне тамо. Дакле, сада, хајде да корак кроз све од број и види како се то спроводи. Дакле, мислим да је прва ствар која ЛЕТ'С Погледајмо, заправо модели. Много времена, када да ли дизајнирате нешто, желите да мислите прво о томе како ти ће представљати своје податке, и онда дизајнирати ствари око тога, тако да је све има смисла. И то је заправо како сам је то урадио када сам правио ово, Ја сео и размислио, шта желим у пост. Дакле, овде имамо исту структуру да сам раније споменути, где радимо ДБ = Склдатабасе ('постс.дб'). У стварности, вероватно не желите на хард кода у базама података Ваше име екипе. То би вероватно бити параметар који је ускладиштен негдје, можда у конфиг фајлу, али у мали пример овако, да је у реду да се тврди да је у коду. Дакле, сада имамо овај пост класу, које наслеђује од основног модела. И то је, опет, ИД = ПримариКеиФиелд. У ствари, ако не наведете, ако стварно се ослободила од тога, онда пеевее ћемо се побринути за аутоматски ствара ту област ИД, и аутоматски ће чине га ПримариКеи који Мислим да је стварно лепо, јер обично, То је нешто што желите да имате, али волим да га ставим у посебно, тако Сећам се да је унутра. Али ако не наведете да, да ће бити тамо аутоматски. Дакле, имам састанак који је ДатеТимеФиелд, и све ови различити поља, ако вас погледате Пеевее документације, то ће вам дати списак различитих врсте поља које можете користити. У највећем делу, то је аналогно шта сте могли да видите у СКЛ. Дакле, постоји ЦхарФиелд, А ВарЦхарФиелдс, ТектФиелдс, који су дуго текстови, као свом блогу потенцијално, ДатеТимеФиелдс, ДоублеФиелдс, ФлоатФиелдс, све такве ствари. И ви можете проћи у други аргументи на то што нисам навести овде. Рецимо, на пример, није желео да дозвољавају две поруке да има исту титулу, можете да одредите нешто као јединствена = Истина, и то је само додатни параметар поље да, када је то саставља доле у СКЛ, то ће навести да то мора бити јединствен. Такође можете да наведете нешто Не ништавним и све остале ствари обично ради у СКЛ. Дакле, ово је прилично једноставан модел који има датум. Обратите пажњу овде, у ДатеТимеФиелд, Ја прецизирао шта стандардно је. Ја га прецизирао да је датетиме.датетиме.нов, због начина на који ово буде процењена, заправо процењује датетиме.нов када бива убачена у базу података. Мислим да, имао бих да проверите ово, али ако си урадио нешто овако, онда заправо би оцењују да је једном, а затим ДатеТиме ће увек бити исти. Дакле, само ако радите нешто са датетимес, двоструко провера да је вредновање када заправо бива убачена, или другде можда бити збуњени. Наслов је само ЦхарФиелд, која има су више аргумената можете проћи у наводећи тачно колико дуго Желим да то буде, али овде, то није битно. И Текст ће бити текст целе поруке, и да ће то бити ТектФиелд само зато што желите како би се омогућило да буде прилично дуг низ. Онда имамо ову Мета подкласа да само прецизира да желимо базу где је то заправо отвара у бити ДБ објекат који имамо овде. И последња ствар коју морамо овде, само ова функција да ћемо користити из нашег главног апп да покрене базе података за повезивање са је, а затим да се створи Пост табелу. Сада, хајде да погледамо самом главном апликације. Дакле, ово је прилично мало дуже од оних које смо раније видели, али надам се не тако лоше. Дакле, дозволите ми да продужи ово. Dobro. Дакле, приметите и врх сам увезао гомила других ствари од колбу да немамо стварно видела. И надамо се, можемо да прођемо кроз Сваки од ових једну по једну и још мало причати о их, сортирано по пример. Значи, имамо посуду, и рендер_темплате, што смо раније видели, овај захтев објекат, који ће доћи када погледамо како образац који сам заправо показује ради. Редирецт, који вам омогућава да преусмерите назад од Направи нови пост Назад на оригиналну страницу, а затим УРЛ адреса, што је нешто што вам омогућује схватим где на сајт одређени страница. Дакле, следећи ствар коју ја радим, је да увоз све информације из модела датотеке које смо гледали. И, да. Дакле, нешто ново што долази када имате посла са, нарочито базе података, је да можете одредити функција која буде звао пре сваки захтев, и функција које добија зове после сваког захтева, користећи ово фунцтион декоратер апп.бефоре захтев. И то ће се извршити где год је ова функција. То не мора да буде звао пре захтјев, али обично је то нешто разумно да га зову. Можете одредити функцију без обзира желите да се се зове, тако да сам прецизирао ову инитиализе_дб функција која смо се вратили имали у моделима фајл, тако да пре сваког захтев, ви желите да се повежете са базом података. Постоје два различита начина на које можете урадити. То можете учинити@апп, ја. Верујем да је то афтер_рекуест. А разлика између афтер_рекуест и теардовн_рекуест, је да ће се десити само афтер_рекуест ако је захтев заправо био важећа. И тако, само ако је Захтев је био успешан, ако ништа кренуло наопако, али теардовн_рекуест се дешава у случају успешног захтјев, или у случају грешке. Дакле, обично, хоћеш користити теардовн_рекуест, осим ако желите да урадите нешто посебно другачије у случају грешке. Али само за затварање базе података, да ли успе или ако не, радимо желите да искључите из базе података. Тако се зове, дб.цлосе на дб објекту. Обратите пажњу на то теардовн_рекуест узима у изузетак. Дакле, можете да проверите да ли заиста није било грешка када је затварање, али овде, надам се, ту нису пуно грешака, тако да смо некако игнорисање тога. Ок, а остало није тако лоше. Дакле, кад одемо на почетну страницу, ми донео ову хоме.хтмл Темплате који ће отворити. Пролаз је у пост једнак, и шта је ово ради се, сећам се да имамо овај пост Модел, па смо изабрали све постове, а онда друга ствар можете да урадите, можете да наведете ВХЕРЕ, Можете прецизирати наложити, па узмемо сву посту који гет селецтед, и онда их наручити од стране пост.дате.десцендинг. И то ће одредити када они заиста изаћи, најскорију ће бити веома први. А онда, пролазимо то у хоме.хтмл шаблон, па хајде да заправо отворити Шаблон који заиста брзо, и да погледамо како се то ради. И то није велика, ХТМЛ, али надамо се, можемо се фокусирати на Питхон. Дакле, постоји линк ка додате нове Порука, и тако то прецизира пут унутар Фласк који смо дефинисати, која је овде. Ово је нова порука пут, и ми навести да овде. И то је линк који ће онда то том путу у посуду серверу. Што више занимљива ствар је ово за петљу овде. Тако смо навести да је ово Пост параметар који је прешао у рендер_темплате функција, за сваки пост у пост-тих објекат који бива усвојен у. Желимо да одштампате пост наслов, у Х1, а онда у наставку, желимо да одштампате је текст поруке у оквиру става. И овде, можемо да позвати Питхон функцију, тако да можемо назвати стрфтиме СТ-РФ-време, и можете проћи у формату стринг да желите да одштампате податке у. Дакле, то је је лепо да можете заправо зову ову функцију Питхон изнутра овде. Не морате да урадите форматирање на контролор страни, јер заиста, форматирање датум је нешто што желите да се унутар Виев. И све ове одсто ствари није битно супер. Ако погледате документацију за стрфтиме функцију у Питхон, прецизира се све ово ствари, али да је како, када смо тражили на насловној страни овде, да форматира са лепо датум, и прецизира АМ или ПМ, али нормално, ако нисмо имали овде, вероватно ћете добити мало ђубре Датум који нису изгледали веома добро. И онда наведете пост.тект, и сам могао ставили пар лине бреакс хере, само ставити неке просторе између сваког пост. Дакле, мислим да је најважније ствар у овом примеру, је да можете користити за петљу. А ово је аналогно ствари које можете да урадите у ПХП. Можете прелазили преко, све бива усвојен, и тако, уместо да раде Цопи / Пасте, цопи / пасте све ХТМЛ, само треба да га напишем једном, а затим можете поновити над свим порука. И то је нешто уобичајено да желите да уради, када имате много података, јесте да за све у вашим подацима, желите да урадите нешто слично. А онда, само запамтите, да кад вас Желим да одштампате нешто експлицитно у ХТМЛ, користите Двоструки протеза овде, али онда када желите да одредите неке информације о стању, или око фор петљу, ви користити одсто носач. Дакле, да се вратимо на Питхон код, тако да објашњава шта се дешава у главни пут када одемо тамо, то само показује све порука, али онда се поставља питање је, како ћемо заиста добити порука у базу података, која је мало занимљивије. Дакле, када кликнете на Нови Пост Линк, који смо овде видели, да вас преусмерава на овом облику. А то је само једноставан позив на рендер_темплате функција, који онда пролази у новом пост у ХТМЛ облику. Дакле, хајде да погледамо то. Дакле, ово је прилично једноставан. Она има једноставан ХТМЛ форму која ће изгледати мало познато, на основу облика у ЦС50 финансија. И тако, ми навести овде, акцију. И овде, ако радите са ПХП, нормално је, би било нешто као, цреате.ПХП, али овде Ми смо заправо навести пут унутар ФЛАСК серверу. И тако, ове трасе одговара да створи трасе да имамо овде, који идемо у у секунди. И тако смо навели да То је порука метода, јер желимо послати овај облик података, и обично када шаљете податке из форми, можда ћете желети да користите пост захтјев, само да се не завршавају са овом великом, гломазну УРЛ. Али такође може користити ГЕТ захтев, и пролазе га са променљивим роутинг, али форме, лепо на захтев пост овде. И онда, само ми се би урадио са ХТМЛ и ПХП, можете да наведете ове текстуалне улаза, и можете да наведете име њих, а то је име које ће се прошли у захтеву објекат у балону. И онда имамо Пошаљи дугме на коме пише порука. И овде, порука је име од дугме, јер је то блог пост, али овде, порука је метод захтев. Дакле, то су иста реч али заправо нема везе. Да Враћамо се на Питхон кода, када смо се зове створити метод, приметити овде да можете заправо навести у оквиру трасе методе захтев да ли желите да прихватите, па овде сам навести да сам Само желим да прихватим Пост метод. Дакле, ако заиста покушати да посетите страницу директно, која се користи ГЕТ захтев, то ће ми рећи "Метод није дозвољено." И тако, имате странице, нешто као ово креирање страница, које сам само ја Заиста користећи је као начин за образац да се подноси, можете одредити да не да људи могу да идем тамо директно преко ГЕТ захтев, или ако не желите, из неког разлога, Објави потражњу, бисте могли да наведете ГЕТ овде, али у овом примеру, само смо Желим Пошта захтев да изађе. Дакле, када се назива цреате_пост, када идемо у посету да преко порука захтјев, кад одеш у одређени пут, ту је овај захтев објекат, и ми смо морали да увозимо захтеви у самом врху, али је овај захтев објекат који добија усвојен у, и можете да приступите податке обрасца, што ће аутоматски бити испуњена Када пошаљете захтев из форме. И онда, шта ја мислим је стварно кул, је да форма објекат који се прошло у, само Питхон речник који садржи, ако аццесс-- ево, нека ја повуците ХТМЛ поред њега, само тако да можете имати да као референцу, да, тако имена која смо овде одређују за различите области, тако наслов и текст, ми онда само користити онима овде као индекса у податке обрасца. Дакле, то је супер згодно. Онда ми зовемо пост.цреате, која ће створити и аутоматски убаците Ова нова порука објекат у базу података. И мислим да је ово створити функцију овде је стварно супер пример како моћни Чутура је и рад са овим, јер ако сте радили нешто у ПХП, можда ћете морати да уради много валидације, бисте морали да онда успостави везу базе података, бисте морали да онда изврши СКЛ упита, али овде имамо само ово лепо пост.цреате, који онда могу само добити информацију од захтева објекта, и онда прелазе у нову пост да смо стварања. А онда, последњи ствар коју желите да урадите, је преусмјерити корисник врати у дом. И тако смо користити Чутура преусмери функцију. И нешто што нисмо видели раније, био овај УРЛ функција. Тако УРЛ за функцију омогућава прођете у заправо име од функцију у свом Питхон коду, уместо одређене руте да је на. Тако сам могао тако лако преусмерен корисника смањити, што би га послати назад кући, али користећи УРЛ за функција је лепо, јер ако промените место где су ствари, па рецимо да сам промијенити кући бити на / хоме уместо тога, то би и даље онда се врати / кући, јер заправо иде и гледа име функције, а ће вам дати подржати УРЛ за то. Дакле, некако на претпоставка да сте чешће мењати где ствари су, од имена функција. Можете користити ово стварно лепо УРЛ за функцију. И још једна ствар да буде свестан то је мало незгодно, да мислите да сте само могли позовите преусмеравање на УРЛ за, али заправо све путева има да се врате неку врсту текста и ХТМЛ, тако да заправо треба да врати преусмеравање позива. У супротном, добићете нешто неважећи о не враћа стринг, јер сви они имају да се врати ХТМЛ заправо желите да учини. И тако, када зовете редирецт, да вас преусмерава на страницу, али то је заправо враћа ХТМЛ треба да изврши ту преусмеравање. Вратите се на почетну страницу. Дакле, имамо ове две различите ставове. Имамо домаћу поглед. Или, мислим да треба да кажем шаблоне. Имамо ова два шаблона, дом шаблон који приказује све наше поруке и онда имамо овај оглас ствар, и када кликнете на пост, иде на нове трасе унутар посуду, али тај правац не нужно имају одговарајући шаблон. Не морате да видите ништа, али и даље можете Имам овај посао иде на иза сцене. И онда се преусмерени Назад на почетну страницу. И дефинитивно, лако је радити у неком лепшем ЦСС у шаблону и да ово изгледа много лепше, али све главног логике постоји у Питхон. Сва питања о том примеру? Знам да има доста различите ствари дешава тамо, Многе ствари нисмо видели и раније, али као и све. Да. ПУБЛИКА 1: Да ли треба да урадите ништа Посебан да обришите података који је долази из форме? Приметио сам само рекао "створити" Езра Зигмонд: Да, тако је то Заправо, то је стварно добра ствар. Дакле, питање је било, зар не треба да проверите и уверите се да су подаци валидни, и било какву врсту рибање да се уверите да је важећа, јер као што можете видети овде, Ја не радим то. Дакле, хајде да видимо шта се дешава ако сам писати нешто празан. Дакле, то ће у ствари само направити празно порука и попуните ДатеТиме. Дакле, у стварности, вероватно би Желим да урадим нешто слично, можда навести да ли наслов једнака празан стринг, онда немој то да радиш. Или, само то уради, ако наслов није једнака празан стринг. Дакле, не ради ствари аутоматски брину те рибање за вас, тако да и даље треба да урадим. Да, добро питање. ПУБЛИКА 2: Доес ит рибање за наставак ињекције? Da li znate? Езра Зигмонд: Надам се, пеевее то ради. Мислим да би свакако било прилично лоше библиотека ако то није урадио. Ја не знам тачно. Морао бих да погледамо упита да генерише. Мислим да, ако сам откуцао у А Блог пост та врста изгледала као напад на СКЛ ињецтион, овако нешто, ако је ово је као поље лозинком или тако нешто, можда овако нешто. Мислим да ће и даље да буквално постед, али мислим да ПееВее не раде нека рибање од података пре него што заправо извршава. ПУБЛИКА 1: То поље текст је дизајниран да обичан текст, зар не? Езра Зигмонд: Да, јесте. Да. Тако да мислим да су сви, тако да је ово Исправно понашање, да ће то урадити, Али мислим да пеевее надам се не уради нека врста заштите на њиховог краја. А ако желите да двоструко провера тога, начини када остварују упит. тако да не морате да изврши га директно. Морао бих да узмем погледај документације, али заправо да видите СКЛ да је генерисање, и да погледамо то, и да сигурни да се побегне ствари. Други разлог зашто би могао желите да погледате СКЛ да пеевее је излаза, ако је ствари чини се да ће заиста споро, можете погледати и видети шта је заправо ради, јер понекад је лако случајно додати у, како си написала, сте случајно да га прво одаберите целу базу података, а онда нека врста операцију о томе, да ли заиста кад значило да изаберете подскуп. И тако, ако ствари нису сасвим иде како треба, добро је да погледамо захтев то је стварно узимајући генерише. Да. ПУБЛИКА 2: Када сте први пут почео, сте ставили у луци као 5000. Езра Зигмонд: Да. ПУБЛИКА 2: Да ли је подразумевани са Пеевее, или је то нешто што можете да промените? Езра Зигмонд: Да, тако да је порт је подразумевани са балон. Ако га покренете без наводећи ништа, она ће се аутоматски урадити. Верујем, имао бих да проверите ово, али можете да наведете да је у апп.рун, Мислим да могу да урадим нешто слично, Порт = 8080. Дајмо да покушате веома брзо. Да, тако да само могу одредити Порт = 8080, и она ће га покренути ту, што мислим, ако си хтео да га покренете на ИДЕ, нисам пробао ово, али мислим да ако водио га на порту 8080, вероватно би могли за приступ серверу, баш као да сте на сајту. Да, али то је лако да промените да ако имају било какву попут Порт-прослеђивање ствари које треба да урадите. Има ли још питања? Да? ПУБЛИКА 1: Па, видео сам у твојим модели који, као што сте поменули, морате да наведете База података за сваки објекат. Да ли је вама познато, да ли да буде стварно лако ако вас има много СКЛите база података које сте желите да користите за једног веб апп, да можете да наведете гомилу различитих оне у свој модел? Езра Зигмонд: Да, пусти ме отвори да се јако брзо. Дакле, ви кажете, ако желите да имате гомила различитих нешто, можда волим и студенти, за неке Разлог, тако нешто? Да, тако да мислим да ипак, сваки модел би требало да и даље имају само једна база података које јој је додељено, али ако желите да имате различити модели који су различити објекти базе података додељен на њега, дефинитивно могу то да урадим. Дакле, ако сам креирао нови, ovako nešto, а сада је студент који Изгледа чудно као блог пост, Могао бих навести да је База је једнак дб_2 овде. Дакле, мислим да је то Главни начин можете то да урадите. Кул. Има ли још питања? Дакле, само да завршим мало мало, ево неких ресурса, и ови слајдови ће бити објављен на мрежи тако да заиста може доћи до ових линкова. Најбољи извори су заиста документација за Фласк и пеевее себе. Они јако добро написан, ја мислим. Дакле, сајт Чутура је овде, и имају Брзи туториал који ће проћи кроз сличан ствари на оно што сам прошао кроз, али ако желите било какву врсту прегледа ствари које сам отишао тамо, или сте мислили да сам објаснио нешто у збуњујући начин, они ће тамо имати сличне примере. Пеевее има документацију и они имају Брзи туториал који иде преко главних параметара да ли желите да користите. Дакле, ствари које сам говорио о с јединствени, и прецизирање подразумевано, различите врсте областима које можете да користите, они ће сви бити тамо. Такође, ако имате питања о пеевее, а ви их поставити на Стацковерфлов, момак који је заправо пеевее иде даље и одговори оне понекад. Ако имате питање, надам се он ће бити у стању да одговорите, јер је написао целу ствар. Мислим да је то све Хтео сам да покрије. Хвала што сте дошли.