[TÓNLIST spila] EZRA Zigmond: Hi, allir. Takk fyrir að koma út í dag. Þetta námskeið er "Python Web Apps með flösku. " Svo er ég að fara að tala svolítið um það hvers vegna þú might vilja til að nota flösku til að gera vefur apps með Python, öfugt sumum öðrum ramma þarna úti, eins og Django, sem er mest vel þekkt. Undirtitlls er "og Peewee ", sem er eitthvað við erum að fara að tala um hvernig að hafa samskipti við SQL gagnagrunna. Það gerir það mjög gott. Svo, hér er bara fljótur samdráttur af því sem ég vil fara yfir. Svo, fyrst bara einn renna það er að fara að vera QuickStart, sem er hvernig á að fá allt sett upp á tölvunni þinni. Ég ætla að vera sýna þetta á þinni Mac tölvunni minni, bara vegna þess að það er þar sem ég hef gert þetta áður, ég er mest ánægð með það, en þetta er örugglega hægt á CD50 IDE. Svo, eftir að ég vil kynna hvað flösku er, og sannfæra þig af hverju þú ættir nota það í fyrsta sæti. Þá mun ég gefa a fljótur dæmi um hvað þú getur gert í flösku, fljótleg dæmi um hvað þú getur gert í Peewee, og þá mun ég sýna þér meira heill dæmi umsókn sem ég setti saman að við Hægt er að ganga í gegnum saman. Og svo að lokum, í síðasta renna, ég hef nokkrar leiðir sem þú horfir á netinu fyrir frekari upplýsingar. Þetta er ekki tæmandi einkatími um hvernig á að nota flösku. Og ég vona að fara nokkurn tíma fyrir spurningar. Einhver að horfa á staðnum, bara eins, hrópa út í miðju ef þú hefur einhverjar spurningar. Svo fljótur uppsetningu efni, ef þú vilt að fylgja eftir, eða ef þú vilt fá þetta upp á eigin vél, Ég ætla að vera með Python 2.7.10. Flaskan virkar með Python 3, en ég eins og nota Python 2, vegna þess að það er sumir Python pakkar sem virka ekki með 3 enn. Ef þú hefur PIP sett, sem er Python pakki framkvæmdastjóri, Ég held að ef Python er stærra en eða jafnt og 2.7.9, þú hefur það sett upp nú þegar, það er frábær auðvelt að setja þessa pakka. Þú getur ekki setja Pip Flösku, PIP setja PEEWEE, Venjulega þú þarft að hlaupa sudo bara þannig að heimildir vinna út. Og ef þú ert að nota a frábær gamall útgáfa af Python, Ég mæli með því að uppfæra Python þitt, eða nota EasyInstall að setja PIP. Svo er næsta spurning er, hvað er flösku? Og ég held, fyrst sanngjarnt spurning sem ég velti fyrir mér fyrir löngu er, hvað er vefur app? Vegna þess að það er orð sem ég held er kastað í kring a einhver fjöldi að ég vissi í raun ekki vita. Og ég held að besta dæmi um hvað vefur app er, raunverulega er CS50 Fjármál, þar það er í raun ekki bara a website, en það er eitthvað sem þér gæti konar samskipti við. Það eru notandi reikningur og alls konar mismunandi hluti. Svo, hvar nákvæmlega þú sýgur lína á milli þess sem er vefsíða, og hvað er vefur app, er tegund af handahófskennt, en ég giska á hugmynd, það er eitthvað meira en a website og það er gagnlegt forrit. Svo, flösku er rammi fyrir gera vefur apps með Python. Og vonandi, í lok þetta mun ég sannfæra þig að þú gætir í raun skrifa eitthvað eins CS50 fjármálaráðherra með Python, sem ég eins mikið betur en PHP, persónulega. Svo, flösku er, kalla þeir á microframework, en þannig fást, þeir meina það er mjög einfalt, en teygjanlegur. Svo, það er bara það sem þú þarft, en ef þú vilt fleiri aðgerðir, það er auðvelt að koma þeim í. En bara vegna þess að það er microframework, ekki meina að það er aðeins fyrir smærri verkefni. Ég er með tengil hér sem segir sem Obama notaði flösku árið 2012 fyrir herferð sinni website, sem vonandi er eitthvað af áritun. En það sem ég raunverulega eins og óður flösku er að það er í raun ekki að gera hvers konar ákvarðanir fyrir þig. Bara vegna þess að við erum að tala um forrit vefur, Ég verð að bera saman það að Ruby á Teinar og Django, bæði sem eru frábær ramma, en þeir báðir gera ályktanir um hvernig þú vilt samskipti við gagnagrunna, hvernig þú vilt að kynna þinn skoðanir, og þeir eru örugglega góðar hliðar sem. Til dæmis, Ruby á Teinn hefur þetta virka skrá kerfi, sem er mjög gott leið til að hafa samskipti með gögn, en ef þú vilt nota Ruby á Teinar, þú ert svona bundinn inn í það. En með flösku, sem ég ætla sýna þér Peewee, þú getur notað hvað sem einhverskonar gagnagrunns sem þú vilt, og þú getur bara draga það í sem framhald í flöskuna. Svo er það hvers vegna ég virkilega eins flösku, er það að það ekki gera ályktanir fyrir þig byggt á hluti sem þú þarft í raun ekki. Svo, hvers vegna ættir þú að nota flösku? Kostir eru, það er bara hefur í raun algerlega lögun byggt inn í það sem þú þarft. Svo, þú þarft ekki að hafa áhyggjur af skilning a heild búnt af hlutum sem þú í raun ekki þörf. Þú þarft ekki að hafa áhyggjur um að slökkva aðgerðir sem þú í raun ekki þörf. Og, eins og ég nefndi, það er frábær auðvelt að bæta við í eftirnafn hlutum sem þú þarft. Sumir þeirra, flösku hefur eigin stuðning þeirra fyrir það. Svo er það eitthvað sem kallast flösku admin, sem speglar að admin spjaldið sem Django veitir, sem gefur þér gott sjón leið að gefa vefsvæðinu þínu. En aftur, ef þú ert gera eitthvað einfalt, þú sennilega þurfa ekki stór admin spjaldið, þannig að ég held að það frábær ágætur. Og Ókostirnir eru að þú ert með minna afl út af the kassi. Svo, þegar þú opnar upp flösku, og í Python program, þú skrifar bara frá flösku innflutningur *, eða hvað, þú ert ekki nákvæmlega að fá allar aðgerðir sem þú vilt kannski. Og svo þú verður að fleiri skýr listi aðgerðir sem þú vilt. Svo er það einn ókostur, en ég held að til að byggja lítið vefur forrit eins og ég ætla að vera að sýna þú, það er í raun ekki vandamál. Og hvað það síðasta sem er ætlað að segja, sem er prentvilla, er að það eru minna stöðluð samninga um hvernig á að nota flösku, bara vegna þess að það eru ekki eins margir fólk sem nota það faglega samanborið við Django. Svo, ef þú lítur eitthvað eins og, "hvernig á ég að gera x" í Django, þú munt sennilega finna það. Það er góð hönnun mynstur sem þú getur notað, en með flösku, það er konar fara eigin leið, bara vegna þess að það er ansi lítið bókasafn. Svo þeir eru gallar, en ég held að það er samt góð bókasafn til að nota. Svo skulum hoppa bara rétt inn flösku. Þetta er örugglega ekki að fara að vera heill einkatími, en það er að gefa þér hugmynd um hvernig á að uppbygging hluti, og svo þú ert ánægð að fara burt og horfa á gögnum og finna út meira. Svo, láta mig opna mjög einfalt dæmi í fyrstu, og sýna þér hvað þessi lítur út eins og, og þá munum við brjóta hann niður svolítið meira. Svo þetta hér, láta mig fá það í gangi. Svo hef ég nú forrit í mínum. Ég ætla að opna Safari, og það er í gangi á þessari vél mína. Þannig að ég ætla bara að fara að gera þetta stærra. En localhost: 5000 Og svo, núna, allt þetta gerir er, þegar þú heimsækir vefsíðu, það prentar út "Hello flösku," sem er ekki frábær gagnlegt, en ég held að það er ótrúlegt að í þessu litla skrá hér, við höfum vefur framreiðslumaður hlaupandi sem er prentun út eitthvað. Svo, við skulum í raun líta á kóða fyrir annað, og brjóta það niður smá. Er stærð gott fyrir alla hér? Svo vonandi ert þú nokkuð þægilegt að nota Python. Ég er að því gefnu að við getum litið á Python og lesa í gegnum það. Ef þú hefur einhverjar spurningar um eitthvað, ég get líka fara yfir það. Svo er fyrsta línan frá flösku, Við flytjum, flösku með höfuðborg "F" sem er tegund af öllum lykill lögun sem þú þarft. Alltaf þegar þú ert að skrifa skrá og nota flösku, þú ert að fara til að vilja flytja það, bara vegna þess sem hefur öll helstu atriði. The næstur hlutur sem við gerum, er að við kalla þessa aðgerð flösku, bara til að búa til app hlut, og þú ert alltaf að fara til að vilja gera það. Og þá, stökk niður til botn fljótt, þessi hluti er hér, "if_name _ ==" _ main_ "'sem er konar Python venju. Þannig að þetta mun aðeins framkvæma ef þú keyra þessa skrá beint með Python. Þá köllum app.run, sem mun í raun að byrja app fara. Svo, það er helsta uppbyggingu sem þú þarft í hvaða kolbu umsókn, er þú verður að hafa þetta app = flösku (_NAME_), og þá app.run. Svo, tveir hlutir sem ég hef hér, eru það sem við köllum leiðum. Svo, við skulum tala um vegvísun svolítið meira. Ég fer aftur til renna. Svo flest grundvallaratriði hugtak í flösku er vegvísun. Og það er sú hugmynd að þér tengja aðgerðir í Python tilteknum heimilisföng á vefsíðu þinni. Svo, þegar þú vilt til að búa til nýja leið, þú notar þetta @ app.route virka decorator. Svo, ef þú ert ókunnur með virka skreytingamenn í Python, það er þetta hugtak sem gerir þér kleift að taka virka og umlykja það með eitthvað annað. Svo í raun, hvað þetta Decorator gerir, er að það tekur aðgerðina undir það, og það bætir fleiri upplýsingar við það, en það flösku raun er að gera það gerast er ekki frábær mikilvæg, en það er mikilvægt, er að áður leið, þú setja þetta @ app.route, og þá veffang leið, svo rista er það sem við sá þegar við opna bara upp vefsíðu. Svo er að heimasíðan. Það er bara rista leið. Og þá verður þú þessa aðgerð. The nafn af the virka getur verið hvað sem þú vilt. Það þarf ekki að endilega hafa að gera með leið. Og þá, hvað ávöxtun fallsins, virka skal skila streng. Og það string getur innihalda HTML eða neitt, og það er í raun það sem mun fá aftur til þinn vefur flettitæki eins og HTML, og það mun láta það. Svo er þetta sama kóða sem var frá dæminu að ég hljóp bara, þannig að þegar við heimsækjum rista, það kallar Hello World virka, sem bara skilar streng, Hello flösku, og sem fær prentuð á skjánum. Svo er það annað dæmi, sem er, þegar þú heimsækir / halló, það prentar út Hello Word, sem ætti í raun að segja, Halló heimur, en við skulum láta sem var viljandi. Svo skulum draga það upp raunverulegur fljótur. Svo ef þú ferð til localhost / halló, það mun nú prenta eitthvað annað. Svo er það bara fljótur dæmi um hvernig þú getur búið til tvær mismunandi leiðir. Svo, ef slíkt er ekki frábær gagnlegt, það er ekki allt fullt sem þú getur gert, þú gætir bara gert allt sem með hafa mismunandi HTML síður, og þegar þú heimsækir viðkomandi síðu það hleðst bara á síðunni. Svo skulum sjá meira gagnlegur hlutur sem þú getur gert. Svo er einn hlutur sem þú gætir hafa tekið í dæminu sem ég dró upp, er að ég hafði app.run (kemba = True). Og svo, hvað þetta kemba rök gerir, er að þegar þú keyrir vefþjón þinn, þegar þú ert í umsókn þinni, ef þú breytir skrá, það vilja sjálfkrafa endurhlaða miðlara. Og svo þú ert ekki í raun að endurræsa Python, sem er frábær gagnlegt. Ég get sýnt það. Leyfðu mér að draga upp númerið mitt með prentvilla í það, og þykjast að prentvilla var sett það viljandi fyrir lærdómsríkt tilgangi. Svo skulum bæta þetta aftur í. Svo nú segir hún Hello World. Ég mun bjarga því. Og ef við draga til baka upp flugstöðinni, þú munt segja að það er að endurræsa, vegna þess að það fann breytingu, og svo nú þegar við að endurnýja þessa síðu, það mun prenta út rétta hlutur. Svo er kemba frábær gagnlegt fyrir það. Einnig, ef þú hefur einhverjar konar hrun, svo láta mig gera þetta forrit hrun með því að hafa það ekki aftur a band. Svo, við skulum bara hafa það aftur Ekkert af einhverjum ástæðum. Og svo þegar ég fer þetta síðu, það verður bara að hrun, en þjóninn ekki bara hrun, það reyndar gefur þér frábær gagnlegt bak ummerki um allt sem fór úrskeiðis. Og hvað er mjög gott, er að hvenær skref í þessu aftur rekja, þú gætir opna gagnvirkt skel hér, og tegund af prenta út hvað breytur sem þú vilt að kíkja á. Og svo er kembiforrit raun gagnlegt fyrir vangaveltur út hvað er að gerast með miðlara, frekar en bara að sjá eitthvað í PHP eins 500 innri villa miðlara, sem er frábær gagnslaus. Eitt sem þarf að vera meðvitaðir um, er að ef þú setur app netinu svo það er sýnilegt almenningi, þú aldrei vilja fara kemba háttur á, vegna þess að fólk getur í raun nota þessi vélinni sem ég sýndi þér að framkvæma handahófi kóðann. Svo að þeir geta prentað út eins og allir leyndarmál merkjamál þú hefur í það, þeir geta horfa á einmitt hvernig vefsvæði þitt er að vinna. Svo það er mjög gagnlegt fyrir próf, en alltaf ganga úr skugga um að taka það út áður þú birtir eitthvað á netinu. Svo þegar þú ert að nota eitthvað eins og PHP, það er þessi hugmynd að þú getur framhjá Upplýsingar á milli vefsíðna með því að setja þær upplýsingar í raun og veru í URL, sem er GET beiðni, en í flösku, getur þú í raun að gera eitthvað svoleiðis svoleiðis, með því að hafa leið sem hefur a breyta sem hluti af því. Þannig að ef þú horfir á þetta dæmi á skjánum hér, höfum við leið sem er ('/ halló /'), og svo, ef þú heimsækir / halló / eitthvað, að eitthvað er að fara til raunverulega fá fyllt í nafni breytu. Og eftir að virka sem kemur með þeirri leið hefur að taka í breytu nafn, þannig að það mun í raun fá liðið í aðgerð. Og þá, þegar þú ert inni að virka, þú getur meðhöndla það eins og eðlilegt Python breyta, og svo þá, það mun prenta út Halló, og það að fylla upp í nafni með einhver strengur formatting. Svo til að bæta við breytilega hluta til venja, þú notar oddklofi merkið. Og mögulega er hægt að nota það sem er kallað breytir. Og svo, ef þú setur þetta umsögnina með ristli, þú getur valið að það er int eða fljóta, eða slóð, og það vilja á sjálfvirkan hátt umbreyta það. Þú getur líka gert viðskiptin innan Python virka, bara með því að nota kastað, en stundum ef þú vilt tryggja að það er int, þú getur sett það viðskipti regla þar. Svo skulum draga upp dæmi sumra breytilegum reglum. Svo hér, þetta hefur sama grunn uppbyggingu með frá kolbu innflutning Flaskan er app = Flaskan (_NAME_), og þá er í gangi í lok. Við höfum þessar tvær mismunandi breytilegum leiðum hér. Og sá fyrsti, er sá sem ég sýndi í mynd, sem var að það tekur bara í streng nafni og það mun prenta út Halló, Nafn. Og þá, seinni einn notar umbreytingu. Þannig að þetta mun sjálfkrafa umbreyta það að int, og þá tvöfaldur int, og prenta það út. Og við gerum ekki hvers konar umbreytingar innan þess vegna flösku sér um það. Svo skulum við fá þetta gangi. Þegar þú ert með flösku umsókn í gangi, Þú getur stjórnað-C út af því til að stöðva framreiðslumaður hlaupandi. Og þá mun ég hlaupa breytur. Svo við skulum fara að localhost / Hello / Esra og vonandi mun þetta segja halló við mig. Svo það tók í mínu nafni, í breytunni leið, og það fyllti það hér. Svo ég mun einnig sýna a fljótur dæmi um tvöföldun. Svo ef þú ferð til / double / 3, það mun prenta út 6. Svo tók þetta hugsa um viðskiptin fyrir okkur. Svo þú getur líka gert það með fljóta og eitthvað sérstakt, ef þú þarft að tilgreina eitthvað svona leið, sem gerir það að samþykkja skástrik, en það ætti ekki yfirleitt að vera málið. Svo langt að við, enn bara verið að skila strengir, sem er ekki mjög áhugavert. Við gætum í raun aftur bókstaflega HTML band. Svo í númerið við getum sett eitthvað eins og b-tag til að gera það feitletrað, en mest þeim tíma sem þú í raun ekki vilja að vera að skrifa HTML kóða í Python kóðann þinn. Það verður mjög sóðalegur, og það er ekki góður tími. Flaskan leyfum okkur að skilja út HTML í það sem er kallað Snið, og svo ef þú ert að hugsa í skilmálar af MVC líkan að þú ert kunnuglegur með, vonandi, að vinna með CS50 fjármálaráðherra svolítið, þú getur hugsa um Python skrá eins og að vera meira af Controller, þar þeir eru samskipti við hvað gögn líkan sem þú gætir hafa. Og þá eru þeir að kalla á Views og liggur upplýsingar til þess View að fylla í upplýsingar í HTML sem það þarf. Og það sem við köllum þá Views eru Sniðmát í bekknum. Svo flösku notar annan Python eining sem það vilja á sjálfvirkan hátt setja upp þegar þú PIP setja Flaskan heitir Jinja, sem gerir þér kleift að bæta þessum textaskýringar til HTML sem þú sérð á skjánum, sem leyfir þú setur í hlutum eins og conditionals, og lykkjur í HTML. Svo það lítur svolítið eins og hvernig þú gæti notað PHP innan HTML skrá, en þetta er bara þegar flösku Miðlarinn þjónar upp HTML skjalið það mun keyra þetta sniðmát vél og flokka í gegnum þetta og fylla það í. Svo hefur flöskuhálsinn render_template virka að þú getur séð neðst hér. Og svo þegar þú heimsækir þessa síðu, það geri þetta hello.html Snið, og þá fylla í þessari HTML síðu. Svo skulum keyra bara þessa alvöru fljótur, og sjá hvað það lítur út eins og, og þá mun ég fara í gegnum a svolítið nánar. Svo eru sniðmát fara að fara í möppunni Sniðmát. Það mun sjálfkrafa líta innan Skjalasniðamappan fyrir þessi Snið. Svo skulum opna þetta upp. Svo, ég keyra sniðmát dæmi. Svo ef ég fer til / Hello / Esra, það hefur þetta hræðilegt, andstyggilegur hátíðatjald tag sem ég setti í. Mjög gott, mjög breytilegt. Ég er mikill aðdáandi. En hvað gerist ef Ég fer bara til, / heilsa? Svo það segir bara Hello World. Ég vissi ekki að fara framhjá það nafn, og fyllti sjálfkrafa upp. Svo skulum sjá hvernig það gerði það, og hvernig við getum fá losa af þeim hátíðatjald kannski. Svo hér, þetta er tegund af áhugavert dæmi um, ef þú ert kunnuglegur með hvernig skipta yfirlýsingar vinna í tungumáli. Segja að þetta er tegund af eins og, þessi tegund af falla í gegnum, þar sem þú fylgir í raun tveir mismunandi leiðir til sömu virkni. Þannig að við að festa / hello leið og í / halló / nafn leiðina til Halló, og við að skilgreina using-- Python leyfir þér tilgreina sjálfgefinn virka arguments-- þannig að ef það er ekkert nafn, svo ef við förum bara / halló, það vilja á sjálfvirkan hátt sía nafni er jafn Enginn. Svo, gera við það Sniðmát með name = nafni, svo það mun líða í nafni breytu jafnt þessu heiti virka breytu, í Snið. Sem enn er ekki að útskýra hvernig er ákveða hvort að prenta Halló heimur, eða prenta nafn mitt. Svo skulum raun líta í Snið sig, og sjá hvar það kemur frá. Svo, í þessari sniðmáti við reyndar hafa sumir skilyrt rökfræði, sem sumir myndu halda því fram, að í raun og veru ætti ekki að hafa mikið af skilyrt rökfræði í sniðmátið sig. Það ætti að vera meira innan Stjórnandi, en í þessu dæmi það er eitthvað ansi lítið. Svo hér við athugum, hvort nafn, svo ef nafn er ekki jafn Enginn, ef nafn er í raun samþykkt í, þá munum við segja Halló, Nafn með haus og hátíðatjald, allt þetta eðlilegt HTML, annars, munum við prenta út Hello, World bara venjulega. Svo nokkra hluti til tilkynningar hér um hvernig þú forsníða sniðmát, er að allir þessir skilyrt yfirlýsingar, svona eins hvernig við PHP það þegar þú vilt setja smá PHP, þú notar minna en um ræðir merkja, það er tegund af hliðstætt hér með {%. Svo hér höfum við skilyrt kóða okkar. Og þá, þegar þú vilt í raun að bókstaflega meta eitthvað, og prenta það út á skjánum, þú nota tvöfalda axlabönd. Svo hér eru tvöfaldur axlabönd, og þá erum við að gefa upp nafn, innan þess, mun það mat til breytu nafni, sem var samþykkt í frá láta sniðmát virka, frekar en bara prentun út, ef við fengum losa af þessu, það myndi bara prenta út orðið "nafn". Svo, það er eitthvað að horfa út fyrir. Svo annar hlutur að tilkynning er að þegar við vilt nota render_template virka, við höfum í raun að flytja það skýrt frá flösku. Og þetta er dæmi um að sveigjanleiki á flösku, að þú þarft ekki að flytja hlutir sem þú þarft ekki. Þú getur bara koma í aðgerðir sem þú í raun og veru þarft, sem er stundum gott, svo þú ert ekki að hafa allar þessar aðgerðir lota í kring að þú ert ekki að nota, en einnig, ef þú gleymir að þú þarf að flytja render_template, þú munt sennilega fá viðvörun sem mun láta þig vita um það. Svo, það er sniðmát. Svo höfum við sýnt hvernig á að gera einfaldar vefsíður, og bæta svolítið meira rökfræði til það, í skilmálar af breytunni venja. Það leyfir þér að gera mismunandi hluti byggt á hvað URL þú ferð til, og einnig þá, gefa HTML svolítið meira vit í Skilmálar hvernig þú vilt að veita það. Þú þarft ekki að setja alla HTML þitt í Python þinn, en fyrir ansi mikið sérhver vefur umsókn, þú ert að fara að vilja einhverskonar gögn líkan í tengslum við það. Og svo jafnan, þetta myndi vera eitthvað eins og SQL gagnagrunn. Og þú getur bara samskipti beint við SQL. Python er, ég held að það heitir. SQLite 3. Þú getur bara flutt SQLite 3 og framkvæma SQL fyrirspurnum beint, en ég veit ekki um þig, en ég virkilega líkar ekki, bara, skrifa út SQL fyrirspurnum. Það hefur tilhneigingu til að fá raunverulega löng og flókin. Og svo, eitthvað sem Ég vil nota er það sem er sem þekkt er sem Ormur, sem er hlut-Vensla kortlagning. Og benda á að hlut-Vensla kortlagning, er að það eru tvær mismunandi leiðir sem þú getur hugsa um gagnagrunna. Svo dæmi sem Prófessor Malan yfirleitt notar í bekknum, er Excel tafla, þar þú hefur þessar línur og þessa dálka, og það er mjög gagnlegt fyrir hvernig það er táknuð í SQL og hvernig þú samskipti við það, en önnur leið sem það er í raun gagnlegt að hugsa um það stundum, er í skilmálar af bekkjum og mótmæla. Svo í stað þess að hugsa af hverri töflu sem hafa þessi röð sem hefur ákveðnar upplýsingar, getur þú í raun að hugsa um það eins og að vera Hvert borð er a tegund, og þá hver dæmi af tegund hefur tiltekna eiginleika. Svo, í þessu dæmi, en dæmi af bekknum eru raðir í töflunni, og þá hver eign myndi vera dálkur í töflunni. Svo er Ormur sem ég eins og að nota er kallað Peewee. Það er í raun lítill, tegund af eins flösku. Ég held að þeir fara vel saman, en það eru fullt af öðrum ORMs að þú getur notað. A vinsæll einn er þekktur sem SQLAlchemy, og ég man ekki af hverju ég upphaflega valdi PEEWEE yfir SQLAlchemy, eða ég myndi segja þér af hverju ég held að það sé best, en við erum bara að fara að nota þetta eitt af því sem ég veit hvernig á að nota það. Svo, ein spurning er, hvers vegna ættir þú nennir að nota Ormur í stað þess að bara beint skrifa SQL fyrirspurnum? Og ég held að besta mál, er að þú ert ekki í raun að skrifa SQL fyrirspurnir. Það er miklu auðveldara, og ég skal sýna þér, að gera hlutina eins og val, innsetning, eyðingu, sérstaklega búa töflur. Það er miklu auðveldara að skrifa flokks uppbyggingu, en það er að uppbygging a Búa Tafla yfirlýsingu, en eitt að vera meðvitaðir um, er að að Ormur mun reyna sitt besta að reikna út hvað mest duglegur SQL fyrirspurn væri, en stundum gerist það að það rangt. Og sérstaklega ef þú ert vinna með stór gagnagrunni, þú getur tekið eftir því að fyrirspurn sem ætti að vera í gangi hratt, er í raun að taka lengur. Og ef þú líta undir hetta á hvernig sem Ormur er túlka sem í SQL, það gæti verið að gera eitthvað í raun fáránlegt, bara vegna þess að það svoleiðis gestured fyrirætlanir þínar rangt. Og það hefur verið oft þar Ég hef þurft að hunsa það, og bara framkvæma eigin SQL minn fyrirspurnum, bara vegna þess að það var þáttun á undarlegan hátt. Svo, það er einhver kostnaður, bara í leiðinni að það safnar þinn yfirlýsingar niður í SQL. Svo skulum líta frábær fljótt á einfalt dæmi um gögn líkan sem þú gætir notað. Svo, þetta er Python kóða, og svo Það fyrsta sem þú vilt gera er að frá Peewee innflutningur *. Svo, ólíkt flöskuna, þar sem þú þarft Öll þessi Einstakar einingar, og þú vilt flytja inn flösku og skrifa sniðmát, og sumir aðrir að við munum sjá síðar, frá Peewee, þú getur bara flutt allt, vegna þess að það er nokkuð lítið bókasafn. Svo, the fyrstur hlutur þú vilt gera er reyndar búa til þennan gagnagrunn mótmæla. Svo, hefur þú dB = SqliteDatabase, og þá nafn gagnagrunninn. Og þetta mun í raun búa til gagnasafn mótmæla sem þú getur samskipti við, með Peewee. Og þá höfum við í raun líkan sem við viljum búa. Þannig að borðið við viljum búa. Svo, innan Peewee, hver tegund hefur eigin borð hans í gagnagrunninn. Svo, öll flokkum erfa frá the undirstaða líkan, og höfuðborg M líkanið er eitthvað sem er skilgreint í Peewee. Svo, allt líkan þínum ætti erfa eins hæsta yfirklasa þeirra, þeir ættu að erfa frá fyrirmynd, en það er mjög flott, er að þú getur raunverulega hafa þinn módel erfa hvert af öðru. Og mikið af þeim tíma, þinn gögn líkan gera ekki endilega gera gott arf stigveldi, en sinnum þar sem þeir gera, það er mjög gott, því þú ert fyrirmynd felst hvert af öðru. Svo, skilgreint við þennan flokk 'nemandi' sem erfir fyrirmynd, og það hefur þrjá eiginleika. Það er með kenni, sem er a PrimaryKeyField, sem er eitthvað sem er kveðið eftir Peewee, nafn er CharField, og einkunn er IntegerField. Þannig að þetta mega eða mega ekki vera hvernig CS50 raun geymir allar einkunna nemendanna. Það er ekki, en þetta er hvernig ég myndi gera það. Og þá hefur það, innan þessi flokkur, og þetta er eitthvað sem þú getur gert með Python, er hægt að hafa hreiður bekkjum. Og þetta er eitthvað sem er krafist af Peewee. Svo, þetta bekknum Meta þarftu að tilgreina að gagnagrunnurinn er jafn hlut sem við bjuggum fyrir ofan. Og þetta segir hvað skráin er þetta borð í raun að fara að vera í. Svo er þetta eitthvað sem þú hefur að gera innan allar gerðir þínar. Þú verður bara að tilgreina innan þessa Meta flokki sem skráð er jafn db. Svo það sem ég geri venjulega, ef ég hef fullt af mismunandi gerðum, er að ég hef einn grunn líkan, sem ég venjulega bara hringja "undirstaða líkan" sem hefur Meta bekknum, og það setur gagnagrunninn jafnt db. Og þá allt í síðari gerðum mínum mun erfa frá því stöð bekknum. Og þá þarf ég ekki að hafa áhyggjur um að setja Meta bekknum. Svo, þegar þetta í raun fær saman niður í SQL staðhæfing, það lítur út eins og þetta viðbjóðslegur hlutur niður hér, "CREATE TABLE nemandi ID heiltala, "Hvað sem er. Og ég held að það sé styttra, þetta SQL fyrirspurn hérna, en ef þú horfir á þessa flokks hér þú getur séð nákvæmlega hvað er að gerast. Þú getur séð hvað konar sviðum það eru, hvað þeir eru að heita, og svo held ég að horfa á þetta Python kóða er mikið læsilegri en reyna að skrifa þessa SQL fyrirspurn. Svo, í því skyni að í raun og veru nota gagnagrunninn, við verðum að tengja við það innan Python. Svo, ég skrifa yfirleitt fall sem kallast initialize_db sem gerir tvennt. Það tekur í dag hlut dB og það tengist það, sem bara opnar upp hluta til gagnagrunninum. Ef þú ert bara að keyra þó website á þinni vél, það er ekki frábær stór samningur til að hafa áhyggjur um að tengja og aftengja, en ef þú ert að keyra það á heimasíðu, þú vilja til að ganga úr skugga um það, í hvert skipti sem notandi tengist það, þegar þeir loka út the website, aftengja þeir svo að þú ekki hafa fullt af fólki sem tengjast við gagnagrunninn í einu. Og þá, þegar þér að tengjast við gagnagrunn, þú vilt hringja db.create_tables, og lista módel fyrir það sem þú vilt að búa til töflur. Svo hér, ég vil bara að búa hana til fyrir þennan nemanda. Og þá, hvað er mikilvægt, er að tilgreina örugga = true mest tímann. Svo er það þetta yfirlýsing mun gera, er að henni skapar töflur fyrir líkan nemandi, en aðeins ef það borð hefur ekki verið búin þegar. Það er það sem Öryggisskápur skilgreinir. Svo það verður ekki skrifa núverandi borð þitt, það verður bara að búa til nýja borð ef það er ekki einn þarna. Svo gætir þú bara að búa til borðum einu sinni með SQL. Og þá hafa þessi gagnasafn sitja þar, og síðan að tengja við hverju sinni, en það er yfirleitt gott bara að setja í þessum create_tables símtali, þannig að, ef þú alltaf eyða þinn gagnagrunnur þegar þú keyrir þinn vefur app aftur, það mun endurskapa það. Svo, bara vera viss um að óhætt er tilgreint að vera satt, eða þú finnur gögn bara fá stútað í hvert skipti. Og þá getur þú bara hringt initialize_db að koma tenging, og búa til töflur ef þörf krefur. Svo er algengasta hlutur sem þú vilja vilja til að gera, eða einn af the sameiginlegur atriði, er að í raun að setja hlutina í gagnagrunninn. Og svo, frekar en að þurfa að skrifa setja inn yfirlýsingu með öllum gildi tilgreint, þú getur í raun að hringja virka á nemandi bekknum. Svo, þegar þú búa til flokk erfir frá fyrirmynd, það hefur þetta skapa aðferð. Svo, gera þú flokks name.create, og þú tilgreinir breytur sem þú vilt fara í. Svo, ef ég vil bæta nokkrum nemendum að CS50 bekk bók okkar dæmis, Ég ætla að setja í Davíð, sem hefur mjög gott bekk, hann hefur 95. Og ég, sem er ekki að gera svo vel í CS50, ég er með 50. Og svo, ágætur hlutur óður hvað þetta skapa virka gerir, er að það skilar dæmis, eða röð, að það skapaði í töflunni, og svo er þá geyma það í a breyta og vinna með það síðar. Þú getur breytt um, sem Ég skal sýna dæmi um. Takið eftir að ég gerði það ekki að tilgreina auðkenni, því þar sem það er PrimaryKeyField, mun það sjálfkrafa hækka það ef þú tilgreinir ekki. Og í raun, þú sennilega ætti ekki að tilgreina það, vegna þess að þú gætir óvart clobber ID einhvers annars. Og þú vilt gera viss um að það er einstakt. Svo, í raun, the sameiginlegur hlutur þú vilt gera, er sennilega að velja út gagnagrunnsins þegar hafa mikið af upplýsingum þar. Og svo, ef þú vilt fá allt, svo jafnvirði velja stjörnu frá nemendum yfirlýsingu, það myndi bara vera student.select. Og það mun gefa þér aftur upp á fjölbreytta með öllum nemanda hlutum í það að þú iterate yfir sem þú vilt. Þú getur fengið það út af því. Og mest af þeim tíma, þú ekki bara að gera með því að velja, þú vilt í raun að tilgreina eitthvað. Og svo getur þú keðja saman þessar virka símtöl, eins og hvernig þú vildi keðja saman yfirlýsingar í SQL. Svo þú getur gert student.select (). Þar í þessu dæmi. Og þá, þú getur tilgreina skilyrði, bara að nota venjulegan Python Booleans að athuga það. Svo, í þessu tilfelli, þú vilt takmarka hvað þú ert að velja að, þar sem student.grade er jöfn 50, og student.name er jafn Esra, þannig að vilja bara fá mig út úr því. Og eftir, einn í raun lúmskur hlutur hér er að ef þú vilt tilgreina An og / og eða eða / eða, í Python, væri þú venjulega notar, Ég held að orðið "og" í raun, en hér er notað eitt merkið, sem er venjulega Bita rekstraraðila, en í þessu sérstaka tilfelli, bara þannig Peewee gerir það, þú notar einn merkið að tilgreina "og." Það er eitthvað sem Ég fá ruglað mikið, en það þýðir ekki að koma upp það mikið í raun. Og þá, þegar þú hefur öll nemendur úr gagnagrunninum, þegar þú hefur gert að þú ert að velja og klæðast eða hvað, þú getur notað framhandleggur lykkja, bara eins og venjulega í Python, með hvers konar Iterator eða með hvers konar fylkisins. Svo er hægt að gera, fyrir s í student.select (). whe Re (Student.grade <75), og þannig að þetta verður iterate yfir hvern nemanda í töflunni sem gráðu er minna en 75, þar sem í þessu tilfelli, er enn bara ég. Og þá gætir þú gert eitthvað í að lykkja, eins senda mér tölvupóst og segja mér að í raun snúa í vandamál setur mínum. Svo, annar hlutur sem þú getur gera, er að það er mjög auðvelt að uppfæra raðir í töflunni. Svo muna aftur hingað, When I sett, Ég tók gildi sem var skilað af student.create, og ég úthlutað það til nafni heitir Ezra. Og svo nú er hægt að breyta í gildi innan þess dæmi, bara eins og þú myndir eðlilegt bekknum í Python. Svo þú getur stillt ezra.grade = 95 og sem mun uppfæra staðbundin afrit, en ef þú vilt í raun að skuldbinda þessi breyting að gagnagrunninum, þú þarft að hringja ezra.save, svo þú heitir .save aðferð á dæmi. Og svo nú hef ég tekist breytt mína eigin einkunn í gagnagrunninn. Svo, þá skulum segja að ég fá caught breyta einkunninni innan gagnagrunninum. Prófessor Malan er líklega að fara að vilja eyða mér úr bekknum, og svo þú getur hringt í .delete dæmi aðferð bara á þessi hlutur. Svo, ef þú vildir fara aftur í þessa lykkju hér, og í raun, í stað þess að senda tölvupóst allar nemenda Hvers bekk er minna en 75, þú vildir að eyða þeim, innan þessa lykkju þú gætir kalla s.delete dæmi. Og mjög síðasta sem þú vilt gera, er þegar þú koma á tengingu, og þú ert búinn með vinnuna þína, þú vilt hringja db.close, þar db er að gagnagrunnur hlut sem við höfðum áður. Og þú vilt vera viss um að allt fær lokað út af. Cool. Svo nú, hef ég dæmi umsókn. Ég hef konar fyrirfram gert allt bara svo að það mun ekki vera nein lifandi kóðun mistök, en við getum gengið í gegnum það og sjá hvernig þú myndir setja flösku og PEEWEE saman, og gera einfalda app. Ég kalla það CS50 gífuryrði, og það er konar einfalda blogg vettvang. Svo, fyrst, ég keyra hana og sýna hvað það lítur út eins og, og þá getum við líta meira inn kóðann. Jæja, þannig að við skulum hlaupa bara þetta. Cool, ég ætla að gera þetta svolítið minni. Það er ekki mjög fallegt, bara vegna þess að Ég vissi ekki að gera mikið af CSS, en hvað það gerir er, það hefur Þessi gagnagrunnur af bloggfærslum, og það fer í gegnum öll þá, og það mun birta þær á síðunni í röð nýjasta. Og svo þetta eru bara nokkrar færslur sem ég hafði bjargað í dag. Svo ef við viljum búa til nýja staða, við getum farið að bæta nýja færslu, og við getum inn titilinn staða, svo eitthvað eins og, CS50 málstofa. Vá, í alvöru að njóta námskeið. Cool. Síðan sem þú ýtir færslu, og það mun sent þig aftur til heimasíðu, og þá munt þú sjá að Þræðir var bætt við. Og við höfum enn allar þær þar. Svo nú skulum við stíga í gegnum allar númer og sjá hvernig þetta kemur til framkvæmda. Svo held ég það fyrsta sem við skulum taka a líta á, er í raun módel. A einhver fjöldi af þeim tíma, þegar þú ert að hanna eitthvað, þú vilt að hugsa fyrst um hvernig þú ert að fara til að tákna gögnin þín, og þá hanna hluti í kringum það, þannig að allt vit. Og það er í raun hvernig ég gerði það þegar ég var að gera þetta, Ég settist niður og hugsaði, Hvað vil ég í færslu. Svo, hér höfum við sömu uppbyggingu að ég var að minnast á áðan, þar sem við gerum db = Sqldatabase ('posts.db'). Í raun og veru, sennilega þú vilt ekki á harða kóða í gagnagrunna nafns þíns. Það ætti líklega að vera viðfang sem er geymt einhvers staðar, kannski í config skrá, en í lítið dæmi eins og þetta, það er allt í lagi að harða kóða sem í. Svo nú höfum við þessa færslu bekknum, sem erfir frá the undirstaða líkan. Og það hefur aftur, ID = PrimaryKeyField. Reyndar, ef þú tilgreinir ekki, ef ég reyndar fékk að losa um þetta, þá PEEWEE munum sjá um sjálfkrafa að búa til þessi ID sviði, og það vilja á sjálfvirkan hátt gera það PrimaryKey sem Ég held að sé mjög gott, vegna þess að yfirleitt, það er eitthvað sem þú vilt hafa, en ég eins og til að setja það í sérstaklega, bara svo ég man að það er þarna. En ef þú tilgreinir ekki, sem mun vera það sjálfkrafa. Svo, ég er með dagsetningu sem er DateTimeField, og allt þessar mismunandi sviðum, ef þú líta á PEEWEE gögnum, það mun gefa þér lista af mismunandi gerðir af sviðum sem þú getur notað. Fyrir the hluti, það er hliðstætt að það sem þú vilt sjá í SQL. Svo er það CharField, a VarCharFields, TextFields, sem eru mjög lengi textar, eins blogg hugsanlega, DateTimeFields, DoubleFields, FloatFields, allt svoleiðis. Og er hægt að fara í önnur rök við það, sem ég gerði ekki tilgreina hér. Segja til dæmis, sem þú ekki vilt leyfa tvö innlegg til að hafa sama heiti, þú gætir tilgreina eitthvað eins og einstök = True, og það er bara auka breytu til reit sem þegar það safnar það niður í SQL, mun hún tilgreina að það þarf að vera einstakt. Þú getur einnig tilgreint eitthvað eins ekki null og allir aðrir hlutir þú gerir venjulega í SQL. Svo, þetta er frekar einfalt líkan sem hefur dagsetningu. Tilkynning hér, innan DateTimeField, Ég tilgreint hvað sjálfgefið er. Ég tilgreint það að vera datetime.datetime.now, vegna þess á þann hátt sem þetta fær metið, það metur í raun sem datetime.now þegar það fær sett í gagnagrunninum. Ég held að ég myndi hafa að tvöfalda athuga þetta, en ef þú gerðir eitthvað eins og þetta, þá það væri í raun mat á það einu sinni, og þá DateTime myndi alltaf vera það sama. Svo, bara ef þú ert að gera eitthvað með datetimes, tvöfaldur stöðva að það er mat þegar reyndar fær sett, eða annars þú gætir verið að rugla saman. Titillinn er bara CharField, sem það eru fleiri rök er hægt að fara í tilgreina nákvæmlega hversu lengi þú vilja það til vera, en hér, það var í raun ekki máli. Og Texti er að fara að vera textinn í heild færslu, og það er að fara til vera a Textfield bara vegna þess að þú vilt til að leyfa það að vera ansi langur strengur. Þá höfum við þessa Meta greinar sem bara tilgreinir að við viljum gagnagrunninn þar sem þetta er í raun opnað upp í að vera dB hlut sem við höfum hér. Og síðasta sem við höfum hér er bara þessi aðgerð sem við erum að fara að nota frá helstu heimshornum frumstillt gagnagrunn til að tengjast það, og þá til að búa til Post borð. Nú, við skulum líta á helstu app sjálft. Svo er þetta alveg aðeins lengur en þær sem við höfum séð áður, en vonandi ekki svo slæmt. Svo, láta mig ná þessu út. Allt í lagi. Svo, eftir og efst ég flutt a heild búnt af öðrum hlutum frá flöskuna sem við höfum ekki raunverulega séð áður. Og vonandi getum við farið í gegnum Hver einn af þessum eitt af öðru og tala aðeins meira um þá, raðað eftir td. Svo höfum við flösku, og render_template, sem við höfum séð áður, þessa beiðni hlut, sem mun koma upp þegar við lítum á hvernig mynd sem ég var að sýna í raun virkar. Beina, sem gerir þér kleift að áframsenda aftur frá að búa til nýjar Post aftur til upprunalegu heimasíðuna, og þá URL, sem er eitthvað sem leyfir þér reikna út hvar á website tiltekin síða er. Svo þá er næsta sem ég geri, er ég innflutningur allar þær upplýsingar frá Models skrár sem við vorum bara að horfa á. Og, já. Svo, eitthvað annað nýtt sem kemur upp þegar þú ert að takast á við, sérstaklega gagnagrunna, er að þú getur tilgreint fall sem fær kallað áður hvert beiðni, og virka sem fær kallað eftir hverja beiðni, nota þetta Virka Decorator app.before beiðni. Og svo þetta mun fá fram hvar þessi aðgerð er. Þetta þarf ekki að vera kallaður fyrir beiðni, en yfirleitt er það eitthvað skynsamlegt að kalla það. Þú getur tilgreint hvað sem virka þú vilt fá kallað þar, svo ég tilgreint þessa initialize_db fall sem við höfðum aftur í Models skrá, svo fyrir hverja beiðni, þú vilja til að tengjast gagnagrunninum. Það eru tvær mismunandi leiðir sem þú getur gert þetta. Þú getur gertapp., Ég held að það er after_request. Og munurinn á milli after_request og teardown_request, er að after_request mun aðeins gerast ef beiðnin raun var í gildi. Og svo, aðeins ef Beiðnin var vel, ef ekkert fór úrskeiðis, en teardown_request gerist um er að ræða vel beiðni, eða um er að ræða villu. Svo, yfirleitt, þú vilt að nota teardown_request, nema þú viljir gera eitthvað, sérstaklega öðruvísi um er að ræða villu. En bara til að loka gagnagrunn, hvort sem það tekst eða ef það tekst ekki, við gerum að þú viljir aftengja úr gagnagrunninum. Svo það er kallað, db.close á db hlut. Takið eftir að teardown_request tekur í undantekning. Svo er hægt að athuga hvort það væri í raun Villa kom upp þegar það var lokað, en hér, vonandi, það eru ekki allt fullt af villum, þannig að við erum bara svona að hunsa það. Okay, og restin af því er ekki svo slæmt. Svo, þegar við förum á heimasíðu, við veitt þetta heim.html Snið sem mun opna. Skarðið er í færslu jöfn, og hvað þetta gerir er, muna að við höfum þessa færslu fyrirmynd, þannig að við velja allar færslur, og þá annað sem þú getur gert, þú getur tilgreint HVAR ákvæði, Hér getur þú skilgreint panta af, og svo við tökum allt efni sem fá valið, og þá við pantað þá með því post.date.descending. Og það mun tilgreina, þegar þeir koma í raun út, nýjasta einn verður mjög fyrstur einn. Og þá, fara við að í sem heim.html sniðmát, svo skulum opna raun upp sem Snið mjög fljótur, og taka a líta á hvernig það er að vinna. Og þetta er ekki mikill HTML, en vonandi getum við áherslu á Python. Svo er það tengill á bæta nýjum Post, og svo skilgreinir þetta leiðina innan flösku sem við skilgreina, sem er hérna. Þetta er ný staða leið, og við að skilgreina það upp hér. Og svo er að tengill sem mun þá fara þeirri leið innan kolbu miðlara. The fleiri áhugaverður hlutur er þetta fyrir lykkju hér. Þannig að við tilgreina að þetta eftir breytu sem var samþykkt inn í render_template virka, fyrir hvert staða í færslur hlutur sem fær staðist í. Við viljum að prenta út staða titill, í H1, og þá fyrir neðan, við viljum prenta út staða texta í texta. Og hér, getum við í raun hringja í Python virka, svo við getum hringt strftime, ST-RF-tími, og þú geta fara framhjá í sniði band sem þú vilt prenta gögnin út í. Svo það er nokkuð gott að þú getur reyndar kalla þetta Python aðgerð innan hér. Þú þarft ekki að gera snið á stjórnandi hlið, því í raun, forsníða dagsetningu er eitthvað sem þú vilt að takast á innan View. Og öll þessi prósent það er ekki frábær mikilvægt. Ef þú lítur upp skjöl fyrir strftime virka í Python, það skilgreinir allt þetta hluti, en það er hvernig, þegar við vorum að leita á heimasíðu hér, það snið þetta með a ágætur dagsetning og það skilgreinir AM eða PM, en venjulega, ef við ekki hafa þetta hér, þú munt sennilega fá sumir sorp dagsetning sem ekki líta mjög vel út. Og þá erum við tilgreina post.text, og ég gat hefur sett nokkra lína brýtur hér, bara að setja nokkrar bil milli hverja færslu. Svo held ég að mikilvægast hlutur í þessu dæmi, er að þú getur notað þetta til hliðar. Og þetta er hliðstætt hlutir sem þú getur gert í PHP. Þú getur iterate gegnum, allt fær staðist í, og svo, í stað þess að þurfa að gera afrita / líma, afrita / líma alla HTML, þú verður bara að skrifa það einu sinni, og þá þú getur iterate yfir allar færslur. Og þetta er eitthvað algengt að þú vilt að gera, þegar þú ert með mikið af gögnum, er að fyrir allt í gögnum, þú vilt gera svipað hlutur. Og þá, bara muna, að þegar þér langar að prenta út eitthvað sérstaklega í HTML, þú nota tvöfaldur axlabönd hér, en svo þegar þú vilt tilgreina einhverjar upplýsingar um ástand, eða um for lykkju, þú nota prósent krappi. Svo, fara aftur til Python númer, svo útskýrir að hvað er að gerast í helstu leið, þegar við förum þangað, það birtir bara allt innlegg, en þá er spurningin er, hvernig fáum við í raun innlegg í gagnagrunninum, sem er svolítið meira spennandi. Svo, þegar þú smellir á New Post tengilinn, sem við sáum hér, það beinir þér að þessu formi. Og það er bara einfalt símtal til render_template virka, sem síðan fer í nýja stöðu HTML formi. Svo skulum taka a líta á það. Svo er þetta frekar einfalt. Það hefur a einfaldur HTML formi sem mun líta svolítið kunnugleg, byggt á því formi í CS50 fjármálaráðherra. Og svo, við að skilgreina hér, aðgerð. Og hér, ef þú ert að vinna PHP, venjulega, það væri eitthvað eins og, create.PHP, en hér við að skilgreina í raun leið innan kolbu miðlara. Og svo, þetta leið samsvarar að búa til leið sem við höfum hér, sem við munum fara inn í annað. Og svo, að tilgreina við að það er staða aðferð, vegna þess að við viljum senda þetta form gagna, og yfirleitt þegar þú ert að senda gögn úr formi, þú might vilja til að nota post beiðni, bara svo þú endir ekki upp með þessum stóru, ómeðfærilegur vefslóð. En þú getur líka notað GET beiðni, og gefa það með breytilegum venja, en fyrir formum, það er gott að staða beiðni hér. Og svo þá, rétt eins og þú myndi gera með HTML og PHP, þú getur tilgreint þessar texta inntak, og þú getur tilgreint nafn þeirra, og það er nafn sem mun fá staðist í beiðni hlut innan flösku. Og þá höfum við a Senda hnappinn sem segir Post. Og hér, Post er nafn af the hnappur, því það er blogg, en hér, eftir er óskað aðferð. Þannig að þeir eru sama orðið en í raun ótengd. Já Fara aftur til Python kóða, þegar við kallað búa aðferð, taka hér sem þú getur reyndar tilgreina innan leiðinni Beiðnin aðferðir sem þú vilt taka, og svo hér, tilgreina ég að ég aðeins vilja til að samþykkja Post aðferð. Svo, ef ég reyni reyndar að heimsækja síðuna beint, sem er með því að nota GET beiðni, það verður að segja mér "Aðferð ekki leyfð." Og svo, hefur þú síður, tegund af eins þetta skapa síðu, sem ég er bara í raun að nota sem leið til það form til að fá fram, þú getur tilgreint að þú ert ekki vilja fólk til að vera fær um að fara þangað beint í gegnum GET beiðni, eða ef þú vildi ekki, fyrir sumir ástæða, a Post beiðni, þú gætir bara tilgreina fá hér, en í þessu dæmi, við bara vilt Post beiðni til að fara út. Svo, þegar create_post er kallað, þegar við heimsókn sem um Post beiðni, þegar þú ferð að tiltekin leið, það er þetta beiðni hlut, og við þurftum að flytja beiðnir á mjög toppur, en það er þessi beiðni hlutur sem fær staðist í, og þú getur fengið aðgang að formið, sem mun sjálfkrafa fá fyllt þegar þú sendir beiðni frá formi. Og þá, það sem ég held æðislegt, er að form mótmæla að fá samþykkt í, er bara Python orðabók sem inniheldur, ef þú access-- svo hér, að láta mig draga upp HTML hliðina á henni, bara svo þú getur haft það sem tilvísun, já, svo nöfn sem við tilgreinir hér hvað varðar ýmis, svo titill og textinn við þá bara að nota þá hérna vísitölur í formi gagna. Svo er það frábær þægilegt. Svo þá við köllum post.create, sem mun búa til og setja sjálfkrafa inn þessi nýja staða hlut í gagnagrunninn. Og ég held að þetta skapa virka hér er mjög flott dæmi um hvernig öflugur flösku er og vinna með þetta, vegna þess að ef þú varst að gera eitthvað í PHP, þú gætir þurft að gera a einhver fjöldi af mat, þú þyrftir að þá koma til gagnasafn tengsl, þú þyrftir að þá framkvæma SQL fyrirspurn, en hér höfum við bara þetta gott post.create, sem við getum þá bara fá upplýsingar út af beiðni hlut, og þá fara framhjá það í nýja senda sem við erum að skapa. Og þá, mjög síðustu sem við viljum gera, er að beina notandi aftur til heimilisins. Og svo við notum þetta Flaskan endurvísa virka. Og eitthvað sem við höfðum ekki séð áður, var þetta URL virka. Svo URL fyrir virka leyfir þú fara í raun nafn falls í Python númerið þitt, frekar en þeirri sérstöku aðferð að það er á. Svo ég gæti hafa bara eins auðveldlega vísað notanda að rista, sem myndi senda hana aftur heim, en nota slóðina virka er gott, vegna þess að ef þú breytir staðsetningu þar sem hlutirnir eru, þannig að við skulum segja að ég breyta heim til að vera á / home staðinn, þetta myndi samt svo aftur / heimili, því í raun fer og lítur upp nafn virka, og það mun gefa þér aftur slóðina fyrir það. Svo, eiginlega á forsendu að þú ert líklegri til að breyta þar sem hlutirnir eru, en nöfn virka. Þú getur notað þetta virkilega gott URL fyrir virka. Og eitt að vera meðvitaðir um það er svolítið erfiður, er að þú heldur að þú gætir bara kalla áframsenda á vefslóðina fyrir, en í raun öll leiðum hafa til að fara aftur einhverskonar texta og HTML, svo þú ert í raun að skila endurvísa hringja. Annars verður þú að fá eitthvað ógilt um ekki aftur a band, vegna allir þessir hafa til að fara aftur HTML sem þú vilt í raun að gera. Og svo, þegar þú kallar áframsenda, það beinir þér á síðunni, en það skilar í raun HTML þú þarft að framkvæma þessi endurvísa. Fara aftur á heimasíðuna. Þannig að við höfum þessa tvo mismunandi skoðanir. Við höfum á heimili skoðun. Eða, held ég að ég ætti að segja sniðmát. Við höfum þessa tvo sniðmát, Heimilið sniðmát sem birtir öll innlegg okkar, og þá höfum við þessa auglýsingu hlutur, og þegar þú smellir á færslu, fer það að nýrri leið innan flösku, en það leið ekki endilega hafa samsvarandi sniðmát. Þú þarft ekki að sjá neitt, en þú getur samt hafa þetta verk að fara á bak við tjöldin. Og þá þú fá vísað Aftur til heimasíðuna. Og örugglega, það er auðvelt að vinna í sumum ágætur CSS inn í sniðmát og gera þetta líta mikið betur, en allar helstu rökfræði er það í Python. Einhverjar spurningar um því dæmi? Ég veit að það eru fullt af mismunandi hlutir að gerast þar, a einhver fjöldi af hlutur sem við höfðum ekki séð áður, en eins og allt. Já. Áhorfendur 1: Þarf að gera neitt sérstakt að skrúbba gögn sem er koma frá formi? Ég tók eftir að þú sagðir "skapað" EZRA Zigmond: Já, svo er það reyndar, það er mjög góður punktur. Svo spurningin var, er það þarf að athuga og ganga úr skugga um að gögnin séu í gildi, og gera hvers konar hreinsun til að tryggja að það sé gilt, því eins og þú getur séð hér, Ég ætla ekki að gera það. Svo skulum sjá hvað gerist ef ég skrifa eitthvað autt. Svo, það verður í raun bara gera auður staða og fylla í DateTime. Svo í raun, myndir þú sennilega langar að gera eitthvað eins og, kannski tilgreina ef titill er jafn tóman streng, þá ekki gera þetta. Eða, gera bara það ef titill er ekki jafn tómur strengur. Svo það er í raun ekki sjálfkrafa gæta þess hreinsun fyrir þig, svo þú þarft samt að gera það. Já, góð spurning. Áhorfendur 2: Er það kjarr fyrir framhald innspýtingu? Veistu? EZRA Zigmond: Vonandi Peewee gerir það. Ég held að það myndi vissulega vera nokkuð slæmt bókasafn ef það gerði það ekki. Ég veit ekki nákvæmlega. Ég myndi þurfa að líta á fyrirspurn sem það mynda. Ég held að ef ég slóst í blogg sem eins konar leit eins og SQL innspýting árás, eitthvað eins og þetta, ef þetta er eins og lykilorðsreitinn eða eitthvað, þú gætir gert eitthvað svona. Ég held að mun enn fá bókstaflega staða, en ég held að Peewee er að gera einhvers konar hreinsun á gögnum áður en það keyrir í raun það. Áhorfendur 1: Það texti reitur er sem ætlað er að taka texta, ekki satt? EZRA Zigmond: Já, er það. Já. Þannig að ég held að allir af, þannig að þetta er rétt hegðun, sem mun gera það, en ég held að PEEWEE vonandi þýðir ekki einhvers konar vernd á enda þeirra. Og ef þú vildir tvöfaldur stöðva það, það eru leiðir þegar þú búa fyrirspurn. svo þú þarft ekki að framkvæma það beint. Ég myndi þurfa að taka líta á gögnum, en þú getur raunverulega skoða SQL sem það er að búa, og taka a líta á það, og gera viss um að það leki hluti. Önnur ástæða fyrir því að þú gætir vilja til að líta á SQL sem Peewee er outputting, er ef það virðist vera að fara mjög hægt, þú getur að líta og sjá hvað það er í raun að gera, því það er stundum auðvelt að tilviljun bæta í, hvernig þú skrifar það, þú getur tilviljun hafa það velja allt gagnasafn fyrst, og þá gera einhvers konar aðgerð á að þegar þú virkilega ætlað til að velja undirsvið. Og svo, ef hlutirnir eru ekki alveg að fara rétt, það er gott að taka a líta á the beiðni sem er í raun að fá mynda. Já. Áhorfendur 2: Þegar þú byrjaðir fyrst, þú setur í höfn eins og 5000. EZRA Zigmond: Já. Áhorfendur 2: Er sjálfgefið með Peewee, eða er það eitthvað sem þú getur breytt? EZRA Zigmond: Já, svo höfn er sjálfgefið með flösku. Ef þú keyrir það án tilgreina neitt, það vilja á sjálfvirkan hátt gera það. Ég tel, að ég myndi þurfa að tvöfalda athuga þetta, en þú getur tilgreint að í app.run, Ég held að þú getur gert eitthvað eins og: höfn = 8080. Við skulum gefa það a reyna raunverulegur fljótur. Já, svo þú getur bara tilgreina höfn = 8080, og það mun keyra það þar, sem ég held að ef þú vildir að keyra það á IDE, ég hef ekki reynt þetta út, en ég held að ef þú hljóp það á höfn 8080, þú myndi líklega vera fær um að fá aðgang að þjóninum, bara eins og þú værir fyrir the website. Já, en það er auðvelt að breyta því ef þú hafa hvers konar eins höfn-áfram hlutir sem þú þarft að gera. Aðrar spurningar? Já? Áhorfendur 1: Svo sá ég í þínum módel sem, eins og þú getur, þú þarft að tilgreina gagnasafn fyrir hvern hlut. Ert þú skyldir vita, er að gera það mjög auðvelt ef þú hafa hellingur af SQLite gagnagrunna sem þú vilt nota fyrir einn vefur app, að þú getur bara tilgreina fullt af mismunandi sjálfur í líkan? EZRA Zigmond: Já, láttu mig opna það upp raunverulegur fljótur. Svo, þú ert að segja, ef þú vilt hafa fullt af mismunandi eitthvað, kannski eins og nemendur, að sumir Ástæðan, eitthvað svoleiðis? Já, þannig að ég held að þú samt, hvert líkanið þyrfti að enn hafa bara einn gagnagrunn sem honum er ætlað en ef þú vildir hafa mismunandi líkön sem hafa mismunandi hlutir gagnasafn úthlutað að það, þú gætir örugglega gert það. Svo, ef ég búið til nýtt, eitthvað eins og þetta, og nú er þetta nemandi sem lítur einkennilega eins og blogg, Ég gæti tilgreina að Gagnagrunnurinn er jafn db_2 hér. Svo held ég að er Helstu leiðin sem þú getur gert það. Cool. Aðrar spurningar? Svo bara að klára upp smá bita, hér eru nokkrar leiðir, og þessar glærur verða settar á netinu svo þú getur raunverulega fá að þessum tenglum. Besta úrræði eru í raun handbókum flösku og PEEWEE sig. Þeir eru skrifuð mjög vel, held ég. Svo, flösku website er hér, og þeir hafa QuickStart leiðbeiningar sem mun ganga í gegnum svipað atriði til hvað ég gekk í gegnum, en ef þú vilt hvers konar endurskoðun af því sem ég fór yfir, eða þú hélst að ég útskýrði eitthvað í ruglingslegt hátt, þeir hafa svipuð dæmi þar. Peewee hefur skjöl, og þeir hafa QuickStart eitthvert sem fer yfir helstu breytur sem þú vilt nota. Svo, það sem ég talaði um með einstaka, og tilgreindar vanskila, mismunandi tegundir af sviðum sem þú getur notað, þá myndi allt vera þar. Einnig, ef þú ert með spurningar um Peewee, og þú birta þær á stackoverflow, gaurinn sem gerði PEEWEE raun fer á og svarar þeim stundum. Ef þú ert vonandi spurningu, hann verður að vera fær um að svara henni, vegna þess að hann skrifaði allt hlutur. Ég held að það allt Mig langaði til að ná. Takk fyrir að koma út.