[Musiikkia] EZRA ZIGMOND: Hei, kaikille. Kiitos kun tulit ulos tänään. Tämä seminaari on "Python Web-sovellukset kanssa pullo. " Joten, aion puhuvan hieman siitä, miksi saatat haluta käyttää pullon tehdä verkkosovelluksia Python, toisin jossain muissa puitteissa siellä, kuten Django, joka on parhaiten tunnettu. Alaotsikko on "ja peewee ", joka on jotain aiomme puhua siitä, miten vuorovaikutuksessa SQL-tietokantoihin. Se tekee todella mukavaa. Joten, tässä on vain nopea pilaantunut mitä haluan mennä yli. Joten, ensimmäinen, vain yksi levy että tulee olemaan Quickstart, joka on, miten saada kaikki perustettu tietokoneellesi. Aion esittelee tämä minun paikallinen Mac kone, vain koska sieltä Olen tehnyt tämän ennen, olen eniten mukavalta, mutta tämä on ehdottomasti mahdollista CD50 IDE. Niin, sen jälkeen, haluan esitellä mitä pullo, ja vakuuttaa teille, miksi sinun pitäisi käyttää sitä ensiksi. Sitten minä annan nopeasti esimerkki siitä, mitä voi tehdä pullo, nopea esimerkki mitä voit tehdä peewee, ja sitten minä näytän sinulle enemmän täydellinen esimerkki hakemus että olen koonnut että me käydä läpi yhdessä. Ja sitten lopuksi, viimeisen dian, minulla on joitakin resursseja että näytät online lisätietoja. Tämä ei ole täydellinen opetusohjelma miten käyttää pulloon. Ja minä toivon lähteä jonkin aikaa kysymyksille. Kukaan katsomassa paikallisesti, juuri kuten, huutaa keskellä jos sinulla on kysyttävää. Joten nopea asennus tavaraa, jos haluat seurata pitkin, tai jos haluat saada tämä up omalle koneellesi, Aion käyttää Python 2.7.10. Pulloon tekee työtä Python 3, mutta pidän Python 2, koska siellä jotkut Python paketteja että eivät toimi 3 vielä. Jos olet PIP asennettu, joka on Python paketti johtaja, Uskon, että jos Python on suurempi tai yhtä suuri kuin 2.7.9, sinulla on se jo asennettu, se on Super helppo asentaa nämä paketit. Voit tehdä PIP asentaa Pulloon, pip asentaa peewee, yleensä sinun on suoritettava sudo vain niin, että käyttöoikeudet treenata. Ja, jos käytät Super vanha versio Python, Suosittelen päivittää Python, tai käyttämällä EasyInstall asentaa pip. Joten, seuraava kysymys on, mikä on pullo? Ja kai ensin kohtuullinen kysymys Ihmettelin pitkään on, mikä on verkkosovellus? Koska se sana, jonka minä mielestäni heittää noin paljon että en todellakaan tiedä. Ja uskon, että paras esimerkki siitä, mitä web-sovellus on, todella on CS50 Finance, jossa se ei oikeastaan ​​vain verkkosivuilla, mutta se on jotain, että olet voisi tavallaan vuorovaikutuksessa. On käyttäjätilejä ja kaikenlaisia ​​eri asioita. Joten, missä tarkalleen piirrät linjan välillä, mitä on sivusto, ja mikä on web-sovellus, on eräänlainen mielivaltainen, mutta luulisin ajatus, se on jotain enemmän kuin verkkosivusto ja se on hyödyllinen sovellus. Joten, taskumatti on kehys tehdä verkkosovelluksia käyttäen Python. Ja toivottavasti loppuun mennessä Tämän, aion vakuuttaa teille että voit itse kirjoittaa jotain kuten CS50 Finance Python, jota kuten paljon parempi kuin PHP, henkilökohtaisesti. Joten, pullo, he kutsuvat microframework, jolla, ne tarkoittavat sitä on hyvin yksinkertainen, mutta laajennettavissa. Niin, se on vain mitä tarvitset, mutta jos haluat enemmän ominaisuuksia, se on helppo tuoda ne. Mutta vain koska se on microframework, ei tarkoita, että se on vain pieniä hankkeita. Minulla on yhteys täällä, jossa lukee että Obama käytti pullo 2012 hänen kampanja verkkosivusto, joka toivottavasti, on jotain merkintä. Mutta asia, että olen todella noin pullo on, että se ei oikeastaan ​​tee minkäänlaista päätöksiä puolestasi. Juuri siksi olemme puhumme verkkosovelluksia, Minun täytyy verrata sitä Ruby on Kiskot ja Django, jotka molemmat ovat suuria puitteita, mutta he molemmat tekevät olettamuksia miten haluat vuorovaikutuksessa tietokantoihin, miten haluat esitellä näkemyksiä, ja he varmasti hyviä puolia siitä. Esimerkiksi, Ruby on Rails on tämä aktiivinen tallennusjärjestelmä, joka on todella mukava tapa vuorovaikutuksessa tietoihin, mutta jos haluat käyttää Ruby on Kiskot, olet eräänlainen sidottu tuohon. Mutta taskumatti, kuten olen will näyttää kanssa peewee, voit käyttää mitä tahansa järjestä tietokannan haluat, ja voit vain vetää, että jatkeena pulloon. Joten siksi olen todella kuten pullo, se että se ei tehdä oletuksia sinulle perustuvat asiat et tarvitse oikeastaan. Joten, miksi sinun pitäisi käyttää pulloon? Edut ovat, se vain on todella ydinominaisuudet rakennettu siihen, että tarvitset. Joten, sinun ei tarvitse huolehtia ymmärtäminen koko joukko asioita että et todellakaan tarvitse. Sinun ei tarvitse huolehtia noin sammuttamalla ominaisuuksia että et todellakaan tarvitse. Ja, kuten mainitsin, se on erittäin helppo lisätä laajennuksia asioita että et tarvitse. Jotkut heistä, lasia on omat tukea. Joten siellä on jotain kutsutaan pullo admin, mikä heijastaa että admin paneeli, joka Django tarjoaa, joka antaa sinulle mukava visuaalinen tapa hallinnoida sivustosi. Mutta jälleen kerran, jos olet tehdä jotain yksinkertaista, et todennäköisesti tarvitse suurta admin paneeli, joten luulen että Super mukava. Ja haitat ovat, että sinulla on vähemmän valtaa kättelyssä. Joten, kun ensin avata pullo, ja Python-ohjelma, te vain kirjoittaa pullosta tuonti *, tai mitä tahansa, et tarkalleen saada kaikki ominaisuudet saatat haluta. Ja niin sinun täytyy selvemmin lista ominaisuuksia haluat. Joten se on yksi haitta, mutta minä ajattelevat, että rakentamiseen pienet web apps kuten aion näkyä te, se ei ole oikeastaan ​​ongelma. Ja mitä viimeinen asia on pitäisi sanoa, mikä on kirjoitusvirhe, on, että on vähemmän standardoituja yleissopimusten miten käyttää pullo, vain koska ei ole niin paljon ihmiset jotka käyttävät sitä ammattimaisesti verrattuna Django. Joten, jos tarkastellaan jotain, "Miten teen x" Django, löydät todennäköisesti se. On hyvä suunnittelu kuvioita voit käyttää, mutta pullo, se eräänlainen mennä omalla tavallasi, vain koska se on melko pieni kirjasto. Joten ne ovat haittoja, mutta mielestäni että se on edelleen hyvä kirjasto käyttää. Joten juuri hypätä suoraan pulloon. Tämä ei todellakaan ole menossa olla täydellinen opetusohjelma, mutta se antaa sinulle käsityksen miten jäsentää asioita, ja niin tunnet olosi mukavaksi menossa pois ja katsot asiakirjat ja selvittää enemmän. Joten, anna minun avata todella Yksinkertainen esimerkki aluksi, ja näyttää mitä että näyttää, ja sitten me murtaa se alas hieman. Joten täällä, haluan saada sen käynnissä. Joten, minulla on nyt minun sovelluksen käytön. Aion avata Safari, ja se on käynnissä minun paikallinen isäntä. Joten olen juuri menossa tehdä tätä suurempi. Mutta localhost: 5000 Ja niin, juuri nyt, kaikki tämä tekee on, kun käyt sivustolla, se tulostaa "Hei pullo," joka ei ole super hyödyllinen, mutta mielestäni se on cool, että Tässä pieni tiedosto tästä, meillä on web-palvelin käynnissä että tulostaa jotain. Joten, nyt todella näyttävät klo koodi toisen, ja murtaa se alas hieman. Onko koko hyvä kaikille täällä? Niin, toivottavasti, olet hieman mukava käyttää Python. Oletan, että voimme tarkastella Python ja lukea sen läpi. Jos sinulla on kysyttävää mitään, voin myös mennä yli siitä. Joten ensimmäinen rivi on, pullosta, tuomme, pullo isolla "F" joka on tavallaan kaikki keskeisiä ominaisuuksia, joita tarvitset. Aina kun kirjoitat tiedoston ja käyttämällä pullo, olet menossa halua tuoda, että vain siksi, että on kaikki tärkeimmät asiat. Seuraava asia teemme, on meillä kutsua tätä toimintoa pullo, vain luoda sovelluksen objekti, ja olet aina menossa haluavat tehdä niin. Ja sitten, hyppää alas pohja nopeasti, tämä osa tässä, "If_name _ ==" _ main_ "', joka on eräänlainen Python sopimusta. Joten tämä toimii vain suorittaa, jos suorittaa tämän tiedoston suoraan käyttäen Python. Sitten kutsumme app.run, joka todella alkaa App menossa. Niin, se on pääasia rakenne sinulla on joka pullo sovellus, on sinulla on tämä app = pullo (_NAME_), ja sitten app.run. Joten, kaksi asiaa, jotka minulla on täällä, ovat mitä me kutsumme reittejä. Joten, puhutaanpa reititys hieman enemmän. Menen takaisin dia. Joten keskeisimpiä käsite pullo on reititys. Ja se on ajatus, että te määrittää toimintoja Python tiettyihin osoitteisiin Web-sivulla. Joten, milloin haluat luoda uuden reitin, käytät tätä @ app.route toiminto sisustusarkkitehti. Joten, jos et tunne toiminto sisustussuunnittelijan Python, se on tämä käsite, voit ottaa toiminnon ja surround sen jotain muuta. Siis todella, mitä tämä sisustusarkkitehti tekee, on, että se vie toiminnon sen alapuolella, ja se lisää lisätietoa sitä, mutta mitä pullo todellisuudessa ei tehdä tämän tapahtua ei ole super ratkaiseva, mutta mikä on tärkeää, on, että ennen reitin, voit laittaa tämän @ app.route, ja sitten osoitteen reitin, joten slash me näin, me vain avata web-sivun. Niin, että kotisivu. Se on vain slash reitin. Ja sitten on tämä toiminto. Funktion nimi voi olla mitä haluat. Se ei ole välttämättä on tekemistä välillä. Ja sitten, mitä funktion paluuta, funktio palauttaa merkkijonon. Ja että merkkijono voi sisältävät HTML tai mitään, ja se on todella mitä saat palasi selaimessasi HTML, ja se tehdä että. Joten tämä on sama koodi että oli esimerkistä että minä vain juoksin, joten kun vierailemme slash, se kutsuu Hello World toiminto, joka vain palauttaa merkkijonon, Hei pullo, ja että saa tulostuu ruudulle. Joten on toinen esimerkki, joka on, kun käyt / Hei, tulostamistaan ​​hei sana, joka pitäisi oikeastaan ​​sanoa, Hello World, mutta katsotaan teeskennellä, että oli tahallinen. Joten vetää, että jopa todella nopeasti. Joten jos menet localhost / Hei, se nyt tulostaa jotain muuta. Niin, että vain nopea esimerkki siitä, miten voit luoda kahta eri reittiä. Niin, toistaiseksi se ei ole super hyödyllinen, ei ole paljon voit tehdä, voit vain tehdä kaikki, että joilla on eri HTML-sivuja, ja kun käyt tietyn sivu se vain lataa sivu. Joten nähdä lisää hyödyllisiä asioita voit tehdä. Niin, yksi asia, että saatat olla huomattu esimerkki, joka Vedin ylös, on että olin app.run (debug = True). Ja niin, mitä tämä debug argumentti tekee, on että kun käyttää Web-palvelimen, kun olet hakemuksesi, jos muutat tiedoston, se automaattisesti lataa palvelimelle. Ja niin sinun ei oikeastaan ​​tarvitse uudelleenkäynnistyksen Python, joka on erittäin hyödyllinen. Voin näyttää, että. Saanen vedä ylös minun koodi kanssa kirjoitusvirhe se, ja teeskennellä, että kirjoitusvirhe otettiin siellä tarkoituksellisesti opettavainen tarkoituksiin. Joten lisätä tämän takaisin. Joten nyt se sanoo Hello World. Aion pelastaa sen. Ja jos me vetää takaisin ylös terminaali, luultavasti sanoa, että se on uudelleenkäynnistyksen, koska se havaittiin muutos, ja niin nyt kun me päivittää tämän sivun, se tulostaa oikea asia. Joten debug on erittäin hyödyllinen, että. Myös, jos sinulla on eräänlainen kaatuu, niin haluan tehdä tämän sovelluksen kaatumiseen ottaa se ei palaa merkkijono. Joten, nyt vain se palata Ei jostain syystä. Ja sitten kun käyn tätä sivu, se vain kaatuu, mutta palvelin ei vain kaatua, se todella antaa sinulle erittäin hyödyllinen takaisin jälkeäkään kaiken, meni pieleen. Ja mikä on todella mukavaa, on että milloin tahansa askel tähän takaisin jäljittää, voit avata interaktiivinen kuori täällä, ja tavallaan tulostaa mitä muuttujat haluat katsoa. Ja niin virheenkorjaus on todella hyödyllinen miettiminen mitä teidän palvelin, eikä vain nähdä jotain PHP kuin 500 sisäinen server error, mikä on erittäin hyödytön. Yksi asia olla tietoinen, on että jos laitat App verkossa joten se on yleisön nähtävissä, te koskaan halua lähteä debug-tilassa, koska ihmiset voivat itse Käytä että konsoli että minä osoitti sinua suorittamaan mielivaltaista koodia. Jotta he voivat tulostaa kuten mikä tahansa salaisia ​​koodeja sinulla on siellä, he voivat katsoa tarkalleen miten sivustosi toimii. Joten se on todella hyödyllinen testaukseen, mutta aina varmista ottaa se pois ennen julkaiset mitään verkossa. Joten kun käytät jotain kuten PHP, on tämä ajatus että voit siirtää tietoja välillä verkkosivut laittamalla tiedot tosiasiallisesti URL, joka on GET-pyynnön, mutta pullo, voit itse tehdä jotain tavallaan kuin että, ottaa reitti, joka on muuttuvan sen osana. Joten jos tarkastellaan tämän Esimerkiksi ruudulla täällä, meillä on reitti, joka on ('/ Hei / "), ja niin, jos käyt / Hei / jotain, että jotain tulee itse saada täynnä nimeen muuttuja. Ja huomaa, että toiminto mukana, että reitti on toteuttaa parametri nimi, niin että se tulee todella saada siirtyi toiminto. Ja sitten, kun olet sisällä että toiminta, voit käsitellä että kuten normaali Python muuttuja, ja niin sitten, se tulostaa Hei, ja se täyttää nimi käyttäen Joissakin merkkijono muotoiluja. Joten lisätä muuttujan osia reititys, käytät kulmaraudan merkintä. Ja valinnaisesti, voit käyttää mitä kutsutaan muunnin. Ja niin, jos laittaa tämä merkintä kanssa paksusuolen, voit määrittää, että se on int, tai float, tai polku, ja se tulee automaattisesti muuntaa että. Voit myös tehdä muuntaminen sisällä Python-toiminto, vain käyttämällä valettu, mutta joskus jos haluat varmistaa, että se on int, voit laittaa että muuntosääntö siellä. Joten vedä ylös esimerkki Joidenkin muuttuja sääntöjä. Joten tässä, tämä on samat rakenne pullosta tuonti Pulloon, sovellus = pullo (_NAME_), ja sitten se on käynnissä lopussa. Meillä on näitä kahta eri muuttuja reitit täällä. Ja ensimmäinen, on joka näytin dia, joka oli se vain vie merkkijonon nimi ja se tulostaa Hei, nimi. Ja sitten, toinen yksi käyttää muuntaminen. Joten tämä automaattisesti muuntaa sen int, ja sitten kaksinkertainen int, ja tulostaa että ulos. Ja emme tee minkäänlaisia muuntaminen sisällä koska pulloon huolehtii siitä. Joten saat tämän käynnissä. Kun olet pullo sovelluksen käytön, Voit hallita-C irti lopettaa palvelin käynnissä. Ja sitten minä juoksen muuttujia. Joten mennään localhost / Hei / Ezra ja Toivottavasti tämä tervehtimään minua. Joten kesti minun nimeeni, muuttujaan reitti, ja se täytti sen täällä. Niin minä myös näyttää nopeasti esimerkki kaksinkertaistamisen. Joten jos menet / double / 3, se tulostaa 6. Joten tämä hoiti muuntaminen meille. Joten voit myös tehdä sen kellua, ja jotain erityistä, jos sinun täytyy määrittää jotain polku, jonka avulla se hyväksyy viiltää, mutta sen ei pitäisi yleensä olla ongelma. Toistaiseksi meillä, on vielä juuri palaamassa jouset, joka ei ole kovin kiinnostava. Voisimme itse asiassa palata kirjaimellinen HTML merkkijono. Joten koodin voimme lisätä jotain kuten b-tag tehdä rohkeita, mutta useimmat kerran eivät itse halua olla kirjallisesti HTML sinun Python-koodin. Se saa todella sotkuinen, ja se ei ole hyvä aika. Pulloon avulla voimme erottaa HTML mitä kutsutaan malli, joten jos olet ajatellut kannalta MVC malli että olet perehtynyt, toivottavasti, toimimasta kanssa CS50 Finance hieman, voit ajatella Python tiedostot olevan enemmän Controller, jossa ne vuorovaikutuksessa tahansa tietomalli saatat olla. Ja sitten he huutavat Näkymät ja kulkee tietoa että Näytä täyttämään tiedot HTML että se tarvitsee. Ja mitä me kutsumme ne Näkymät ovat Pohjat luokassa. Joten pullo käyttää toista Python moduuli, että se automaattisesti asentaa kun PIP asentaa Pulloon nimeltään Jinja, joka voit lisätä nämä merkintöjä HTML että näet näytöllä, jonka avulla laitat asioita, kuten conditionals, ja silmukat HTML. Niin se näyttää vähän kuin miten sinä voisi käyttää PHP sisällä HTML-tiedoston, mutta tämä on vain kun pullo palvelin tarjoilee HTML-tiedosto, se suorittaa tämän sivupohjamoottori moottori ja jäsentää kautta ja täytä asioita. Joten lasia on render_template toiminto että näet alareunassa täällä. Ja niin kun käyt tällä sivulla, se tekisi tämä hello.html malli, ja sitten täyttää tämän HTML sivu. Joten vain ajaa tämä todellinen nopea, ja katso, mitä se näyttää, ja sitten menen läpi hieman tarkemmin. Joten, teidän Mallit ovat menossa mennä kansioon. Se automaattisesti näyttää sisällä Kansioon että malli. Joten avaa tämä ylös. Joten, minä ajaa mallineaineen esimerkki. Joten jos menen / Hei / Ezra, se on tämä kamala, vastenmielinen teltta tag että laitoin. Erittäin kaunis, erittäin dynaaminen. Olen suuri fani. Mutta mitä tapahtuu, jos Olen vain mennä, / hei? Niin se vain sanoo Hello World. En anna sitä nimeä, ja se täytti sen automaattisesti. Joten miten se teki sen, ja miten voimme päästä eroon, että teltta ehkä. Joten tässä, tämä on eräänlainen mielenkiintoinen esimerkki, jos olet perehtynyt miten kytkin lausunnot työskennellä kielellä. Sano tämä on eräänlainen kuten, että sellainen lasku kautta, jossa todella kiinnitetty kaksi Eri reittejä saman toiminnon. Joten pidämme / Hei reitti ja / Hei / nimi reitti Hei, ja me määrittää using-- Python voit Määritä oletustoiminnon arguments-- joten jos ei ole nimeä, niin jos menemme vain / Hei, se suodattaa automaattisesti mainitakseni on yhtä vailla. Niin, me tehdä Mallin kanssa name = nimi, niin se menee ohi nimessä parametri sama kuin tämä nimi toiminnon parametrin, malliin. Se ei silti selitä miten on päättäessään tulostaa Hello World, tai tulostaa nimeni. Joten todella näyttävät malliin itse, ja nähdä, jos tämä on lähtöisin. Joten, tässä malli, me todella on joitakin ehdollinen logiikka, jonka jotkut ihmiset väittävät, olet itse ei pitäisi olla paljon ehdollisen logiikka omassa malli itse. Sen pitäisi olla sisällä Ohjain, mutta tässä esimerkissä se on jotain melko pieni. Joten tässä, me tarkistaa, jos nimi, niin jos nimi ei ole sama kuin mitään, jos nimi on todella hyväksyttiin, niin me tervehtiä, Nimeä kanssa otsikko ja teltta, kaikki tämä normaalia HTML, muuten me tulostaa Hello, world vain normaalisti. Joten pari asiaa huomata täällä siitä, miten muotoilla mallittavaa on, että kaikki nämä ehtolauseet, tavallaan kuin miten me PHP sitä, kun haluat lisätä joitakin PHP, käytät vähemmän kuin kysymys merkki, se on eräänlainen analoginen täällä kanssa {%. Joten tässä, meillä on ehdollinen koodi. Ja sitten, kun itse haluat kirjaimellisesti arvioida jotain, ja tulosta se ulos näytössä Käytä kaksinkertainen olkaimet. Joten tässä on kaksinkertainen henkselit, ja sitten me määritä nimi, niin sisällä että, se arvioi muuttujan nimi, joka johdettiin sisään render mallin toiminto, eikä vain tulostus ulos, jos pääsimme eroon näistä, se vain tulostaa sanan "nimi." Niin, se on jotain varoa. Niin toinen asia ilmoitus on ettei, kun haluat käyttää render_template funktio, meillä on todellakin tuotava sitä selvästi pulloon. Ja tämä on esimerkki modulaarisuus pullon, että sinun ei tarvitse tuoda asioita, joita et tarvitse. Voit vain tuoda toiminnot itse tarvitsemme, joka on joskus mukava, joten et on oltava kaikki nämä toiminnot istumisesta että et käytä, mutta myös, jos unohdat, että olet täytyy tuoda render_template, saat todennäköisesti varoitus että voit tietää siitä. Niin, että on templating. Niin, olemme osoittaneet, miten tehdä yksinkertaisia ​​web-sivuja, ja lisätä hieman enemmän logiikkaa se, suhteen muuttuvan reitityksen. Sen avulla voit tehdä eri asioita perustuu mitä URL menet, ja myös sitten, antaa HTML vähän enemmän järkeä suhteen, miten haluat tehdä asioita. Sinun ei tarvitse laittaa kaikki HTML teidän Python, mutta aika paljon joka web-sovellus, olet menossa haluavat jonkinlaista Tietojen malli liittyy siihen. Ja niin perinteisesti, tämä olisi olla jotain SQL-tietokannan. Ja voit vain vuorovaikutuksessa suoraan SQL. Python on mielestäni sitä kutsutaan. SQLite 3. Voit vain tuoda SQLite 3 ja suorittaa SQL-kyselyjä suoraan, mutta en tiedä sinusta, mutta en todellakaan pidä, vain, kirjoittamisen SQL-kyselyjä. Se on yleensä saada todella pitkä ja monimutkainen. Ja niin, mikä Haluan käyttää on mitä tunnettu ORM, joka on esine-relaatio kartoitus. Ja pisteen esine-relaatio kartoitus, on se, että on olemassa kaksi eri tapoja voit ajatella tietokantoja. Joten esimerkki, joka Professori Malan yleensä käyttää luokassa, on Excel-taulukko, jossa olet nämä rivit ja nämä sarakkeet, ja se on todella hyödyllinen miten se on edustettuna SQL ja miten te vuorovaikutuksessa sen kanssa, mutta Toinen tapa, että se on todella hyödyllistä ajatella sitä joskus, on kannalta luokissa ja esineitä. Joten sen sijaan ajattelu Kunkin taulukon olevan tämän rivin että on tiettyjä tiedot, voit itse ajatella sen olevan kunkin taulukon on luokka, ja sitten jokainen esiintymä luokka on tiettyjä ominaisuuksia. Niin, tässä esimerkissä, tapauksia luokan ovat taulukon rivejä, ja sitten jokainen kiinteistö olisi olla sarake taulukossa. Joten, ORM että pidän käyttää kutsutaan peewee. Se on todella pieni, tavallaan kuin pulloon. Luulen, että ne menevät hyvin yhteen, mutta on olemassa paljon muita Orms että voit käyttää. Suositumpi yksi on tunnetaan SQLAlchemy, ja en muista miksi minä perin valitsi peewee yli SQLAlchemy, tai Haluan kertoa teille, miksi mielestäni se on paras, mutta me vain aio käyttää tätä yksi koska tiedän miten sitä käytetään. Niin, yksi kysymys on, miksi sinun pitäisi vaivautua käyttämällä ORM, eikä vain suoraan kirjallisesti SQL-kyselyjä? Ja mielestäni paras asia, on että et itse täytyy kirjoittaa SQL-kyselyjä. Se on paljon helpompaa, koska minä näytän sinulle, että tehdä asioita, kuten valinta, lisäys, poisto, varsinkin luoda taulukoita. Se on paljon helpompaa kirjoittaa luokan rakenne, kuin se on jäsentää Luo Taulukko lausunto, mutta yksi asia olla tietoinen, että ORM yrittää parhaansa selvittää, mitä eniten tehokas SQL olisi, mutta joskus se saa väärin. Ja varsinkin jos olet työskentelee iso tietokanta, voit huomata, että kyselyn että olisi nopeasti käyntiin, todella kauemmin. Ja jos tarkastellaan konepellin alla, miten ORM on tulkkaus että SQL, se saattaa tehdä jotain todella naurettavaa, vain koska se tavallaan viittasi viholliselle väärässä. Ja, on ollut aikoja, jossa Olen joutunut ohittaa sen, ja vain suorittaa oman SQL-kyselyjä, vain koska se oli jäsentämiseen oudolla tavalla. Joten, on jonkin verran yläpuolella, vain tiellä että se kokoaa teidän lausunnot alas SQL. Niin, Katsotaanpa Super nopeasti Yksinkertainen esimerkki tietomallin että voit käyttää. Niin, tämä on Python koodia, ja niin Ensimmäinen asia, jonka haluat tehdä, on peräisin peewee tuonti *. Joten, toisin kuin taskumatti, jossa sinulla on kaikki nämä yksittäiset moduulit, ja haluat tuoda pullo, ja kirjoittaa malli, ja toiset että näemme myöhemmin, mistä peewee, voit vain tuoda kaiken, koska se on melko pieni kirjasto. Joten, ensimmäinen asia, jonka haluat tehdä, on itse luoda tietokannan objekti. Niin, sinun täytyy db = SqliteDatabase, ja sitten nimi tietokannan. Ja tämä todella luoda tietokanta objekti että voit vuorovaikutuksessa, jossa peewee. Ja sitten, meillä on todellinen malli että haluamme luoda. Joten taulukko haluamme luoda. Joten, sisällä peewee, jokainen luokka on oma pöytä sisällä tietokantaan. Joten, kaikki luokat perivät perusmalli, ja pääoma m Malli on jotain, joka on määritelty peewee. Joten, kaikki mallit pitäisi perivät niiden korkein yliluokka, ne olisi perivät malli, mutta mitä on todella siistiä, on, että voit itse olla oma malleja perivät toisistaan. Ja paljon aikaa, sinun tietomallien eivät välttämättä tehdä mukava perintö hierarkia, mutta tilanteita, joissa he tekevät, se on todella mukavaa, koska sinulla on malli luontainen toisistaan. Joten me määritelty tässä luokassa "Opiskelija", joka perii malli, ja sillä on kolme kiinteistöä. Se on tunnus, joka on PrimaryKeyField, joka on jotain, joka on säädetty mukaan peewee, nimi on CharField, ja arvosana on IntegerField. Joten tämä voi olla tai ei ole kuinka CS50 todella tallentaa kaikki opiskelijoiden laadut. Se ei ole, mutta tämä on, miten tekisin sen. Ja sitten se on, sisällä tämän luokan, ja tämä on jotain, voit tehdä Python, voit olla sisäkkäisiä luokkia. Ja tämä on jotain mitä tarvitaan mukaan peewee. Joten, tämä luokka Meta, sinulla on täsmentää, että tietokanta on yhtä suuri esine että loimme edellä. Ja tämä kertoo mikä tiedosto on tämä taulukko todella tulee sisältyä. Joten tämä on jotain, että sinulla on tehdä sisällä kaikki mallit. Sinun täytyy vain määritellä tässä Meta luokkaan että tietokanta on yhtä dB. Joten mitä yleensä teen, jos minulla on joukko erilaisia ​​malleja, on, että minulla on yksi perusta malli, että olen yleensä soita "perusmalli" että on Meta luokka, ja se asettaa tietokannasta vastaa dB. Ja sitten kaikki minun myöhemmät mallit perii kyseisestä perustaa luokan. Ja sitten ei tarvitse huolehtia lisätietoja asetuksista Meta luokka. Joten, kun tämä todella saa koottu alas SQL, se näyttää tämän ilkeä asia alas täällä, "Luo pöytä opiskelijakortti kokonaisluku, " aivan sama. Ja olen sitä mieltä, että se on lyhyempi, tämä SQL täällä, mutta jos tarkastellaan tämän luokan täällä näet tarkalleen missä mennään. Näet millaisia ​​kentät on, mitä he kutsutaan, ja niin, luulen että tarkastelemme tätä Python koodi on paljon enemmän luettavissa kuin yrittää kirjoittaa SQL-kyselyn. Joten, jotta todella käyttää tietokantaa, meidän täytyy liittää sen sisällä Python. Joten, olen yleensä kirjoittaa toiminto nimeltään initialize_db että ei kahta asiaa. Siinä otetaan tietokantaan esine dB ja se yhdistää se, joka vain avautuu KOHTA tietokantaan. Jos olet juuri käynnissä vaikka verkkosivusto omalla koneellasi, se ei ole super iso juttu huolehtia noin liittäminen ja irrottaminen, mutta jos käytät se verkkosivuilla, olet haluat varmistaa, että aina kun käyttäjä yhdistää se, kun he sulkea verkkosivuilla, ne katkaista niin, että te ei ole joukko ihmisiä kytketty tietokantaan kerralla. Ja sitten, kun yhteyden tietokantaan, haluat soittaa db.create_tables, ja luettelo malleja mitä haluat luoda taulukoita. Joten tässä, haluan vain luoda sen tämä opiskelija. Ja sitten, mikä on tärkeää, on määritä turvallinen = Totta eniten aikaa. Joten mitä tämä lausunto tekee, on että se luo taulukot opiskelija malli, mutta vain jos pöytä ei ole luotu jo. Sitähän turvallinen täsmennetään. Joten se ei korvaa olemassa taulukko, se vain luo uuden taulukko jos ei ole ketään. Joten, voit vain luoda taulukot kerran SQL. Ja sitten on että tietokanta istunnossa siellä, ja sitten liittää joka kerta, mutta se on yleensä mukava vain laittaa tässä create_tables puhelu, niin että, jos joskus poistat tietokanta, kun käyttää Web app uudelleen, se luo se. Joten, vain varmista, että turvallinen on määritelty ollakseen totta, tai löydät tietosi vain saada clobbered joka kerta. Ja sitten, voit vain soittaa initialize_db perustaa yhteys, ja luoda taulukoita tarvittaessa. Niin, yleisin asia että haluat tehdä, tai yksi yleisimmistä asioita, on todella lisätä asioita tietokantaan. Ja niin sen sijaan, että kirjoittaa insertin selvitys kaikkien arvoja, voit itse soittaa toiminto opiskelijan luokka. Joten, kun luot luokan että perii malli, se on tämä luoda menetelmä. Joten, et luokka name.create, ja voit määrittää parametrit että haluat kulkea. Joten, jos haluan lisätä jotkut opiskelijat meidän CS50 asteen kirja esimerkiksi Laitan David, joka on erittäin hyvä laatu, hänellä on 95. Ja minä, joka ei tee niin hyvin CS50, minulla on 50. Ja niin, kiva juttu mitä tämä luo toiminto tekee, on, että se palauttaa esimerkiksi tai rivi, että se luodaan taulukko, ja niin sitten tallentaa että muuttuja, ja työskennellä sen kanssa myöhemmin. Voit vaihtaa ympäri, joka Näytän esimerkki. Huomaa, että en on määriteltävä tunnus, koska sillä se on PrimaryKeyField, se automaattisesti kasvattaa se jos et määritä sitä. Ja itse asiassa, luultavasti ei pitäisi määritellä sitä, sillä saatat vahingossa hakata jonkun toisen tunnus. Ja haluat tehdä varma, että se on ainutlaatuinen. Niin, itse asiassa, kaikkein yhteinen asia, jonka haluat tehdä, on luultavasti valita ulos Tietokannan kun on paljon tietoa siellä. Ja niin, jos haluat saada kaiken, niin vastaa Valitse tähti Opiskelijoiden lausunto, se olisi vain student.select. Ja joka antaa sinulle takaisin array kaikkien opiskelija esineet siinä että te kerrata yli haluat. Voit saada asiat irti. Ja suurimman osan ajasta, voit eivät vain halua tehdä valita, todella haluat määrittää jotain. Ja niin, voit ketju Yhdessä nämä funktiokutsut, kuten miten voit ketju yhdessä lausuntoja SQL. Joten voit tehdä student.select (). Jossa tässä esimerkissä. Ja sitten, voit määritellään ehdot, vain käyttämällä normaalia Python Booleans haistelemassa. Eli tässä tapauksessa haluat raja, mitä olet valinnut sen, jossa student.grade on yhtä suuri kuin 50, ja student.name on yhtä kuin Esra, niin että vain saada minut irti. Ja huomaa, yksi todella hienovarainen asia tässä että, jos haluat määrittää ja / ja tai tai / tai, Python, käytät normaalisti, Mielestäni sana "ja" itse asiassa, mutta täällä käytät yhden et-merkki, joka on yleensä bittioperaattori, mutta tässä erityistapauksessa, juuri niin peewee tekee sen, käytät yhden Ampersand täsmentää "ja." Se on jotain, joka Olen sekaisin paljon, mutta se ei keksiä että paljon käytännössä. Ja sitten, kun sinulla on kaikki opiskelijat ulos tietokannasta, kun olet tehnyt olet valitsemalla ja kulumista tai mitä tahansa, voit käyttää foreach silmukka, aivan kuten normaali Python, minkäänlaisten iteraattori tai minkäänlaista array. Voit siis tehdä, S in student.select (). whe re (Student.grade <75), ja niin tämä tahto kerrata yli jokaiselle oppilaalle taulukossa joiden arvosana on alle 75, joka tässä tapauksessa, on edelleen vain minä. Ja niin voisitte tehdä jotain sisällä että silmukka, kuten lähetä minulle sähköpostia ja kertoa minulle todella kääntyä minun ongelmani setit. Joten, toinen asia voit tehdä, on se todella helppoa päivittää rivejä taulukkoon. Niin, muistakaa takaisin tänne, sinun Kun asetin, Otin arvo oli palauttamat student.create, ja minä liitetään sen nimi nimeltä Ezra. Ja nyt, voit vaihtaa arvoja että esimerkiksi aivan kuin olisit normaali luokan Python. Joten voit asettaa ezra.grade = 95 ja että päivittää paikallista kopiota, mutta jos todella haluavat sitoutuvat muutoksesta tietokantaan, sinun täytyy soittaa ezra.save, niin soitit .save menetelmä on esimerkiksi. Ja nyt, olen onnistuneesti muuttunut oma luokka tietokannassa. Niin, niin sanotaan, että saan kiinni muutan luokka tietokannassa. Professori Malan on todennäköisesti aio haluta poistaa minut luokasta, ja niin voit soittaa .delete Esimerkiksi menetelmä juuri se juttu. Joten, jos halusi mennä takaisin tämän silmukan tässä, ja todella, sen sijaan lähettää sähköposteja kaikki opiskelijoista, joiden arvosana on vähemmän kuin 75, halusitte poistaa ne, tämän silmukan voisit soittaa s.delete esimerkiksi. Ja aivan viimeinen asia, jonka haluat tehdä, on aina yhteyttä muodostettaessa, ja olet tehnyt työsi, haluat soittaa db.close, jos db on, että tietokanta väittävät, että meillä oli ennen. Ja haluat varmistaa, että kaikki menee suljettu pois. Viileä. Joten nyt, minulla on esimerkki sovellus. Olen tavallaan valmiista kaikki vain niin että ei tule mitään elää koodausta virheitä, mutta voimme kävellä läpi se ja nähdä, miten voit laittaa pulloon ja Peewee yhdessä, ja tehdä yksinkertainen sovellus. Kutsun sitä CS50 paasaavat, ja se on eräänlainen yksinkertainen blogin foorumi. Joten, ensimmäinen, minä käyttää sitä ja näyttää miltä se näyttää, ja sitten voimme näyttää enemmän osaksi koodia. Okei, joten haluan vain ajaa tätä. Cool, Teen tätä hieman pienempi. Se ei ole kovin kaunis, vain koska En tee paljon CSS, mutta mitä se tekee on, se on tämä tietokanta blogikirjoituksia ja se menee läpi kaikki niitä, ja se näyttää ne sivulla järjestyksessä viimeisimpien. Ja niin nämä ovat vain joitakin virkoja että olin tallennetaan tietokantaan. Joten jos haluamme luoda uuden postitse, voimme mennä Lisää uusi viesti, ja voimme kirjoittaa otsikko postitse, joten jotain, CS50 seminaari. Vau, todella nauttia seminaarin. Viileä. Sitten painat postitse, ja se tulee ohjaa sinut takaisin etusivulle, ja sitten näet, että viimeisin viesti lisättiin. Ja meillä on edelleen kaikki ne siellä. Joten nyt, nyt selata kaikkia koodi ja nähdä, miten tämä toteutetaan. Joten Mielestäni ensimmäinen asia, että katsotaanpa katsomaan, on todella malleja. Paljon aikaa, jolloin olet suunnittelussa jotain, haluat ajatella ensin, miten olet menossa edustamaan tietosi, ja sitten suunnitella asiat ympärillämme, että niin että kaikki on järkevää. Ja että on todella miten minä teki sen kun tein tämän, Istuin alas ja ajattelin, mitä haluan post. Niin, tässä, meillä on sama rakenne että olin mainita aikaisemmin, joissa meillä db = Sqldatabase ('posts.db'). Todellisuudessa luultavasti halua kovaa koodi nimesi tietokantoihin. Että pitäisi varmaan olla parametri joka tallennetaan jonnekin, ehkä vuonna config tiedoston, mutta pieni esimerkki näin, se on okei kovaa koodia että. Joten nyt meillä on tämä Post luokka, joka perii perusmalli. Ja se on, jälleen, ID = PrimaryKeyField. Oikeastaan, jos et määritä, jos olen itse saanut eroon tästä, sitten Peewee me huolehdimme automaattisesti luoda että ID-kenttä, ja se automaattisesti tekevät siitä perusavaimena, joka Mielestäni on todella mukavaa, koska yleensä, se on jotain haluat olla, mutta haluan laittaa sen erityisesti, juuri niin muistan, että se on siellä. Mutta jos et määritä että, että on siellä automaattisesti. Niin, minulla on päivämäärä, joka on DateTimeField, ja kaikki Näiden eri aloilla, jos katso peewee asiakirjat, se tulee antaa sinulle listan eri tyyppisiä kenttiä, joita voit käyttää. Suurimmaksi osaksi, se on analoginen mitä olisi nähdä SQL. Joten on CharField, VarCharFields, kenttiin, jotka ovat kovin kauan tekstejä, kuten blogi mahdollisesti DateTimeFields, DoubleFields, FloatFields, kaikki tuollaista. Ja voit kulkea muita väitteitä sitä, jota en määritellä tässä. Sano esimerkiksi, et halua jotta kaksi virkaa on sama otsikko, voit määrittää jotain ainutlaatuista = True, ja se on vain ylimääräinen parametrin alalla että kun se kokoaa sen alas osaksi SQL, se täsmentää että sen on oltava ainutlaatuinen. Voit myös määrittää jotain ei null ja kaikki muut asiat tavalliseen tapaan SQL. Joten, tämä on melko yksinkertainen malli, joka on päivämäärä. Huomata täällä, sisällä DateTimeField, Olen määritellyt mitä oletus on. Olen määritelty sen olevan datetime.datetime.now, sillä tavalla, että tämä saa arvioida, se todella arvioi datetime.now kun se saa työnnetään tietokantaan. Luulen että, olisin kaksinkertaistaa tarkistaa tämän, mutta jos teit jotain tällaista, niin se todella arvioida, että kun, ja sitten Aikaleiman olisi aina sama. Joten, vain jos teet jotain kanssa datetimes, varmista että se arvioidessaan kun todella saa asetettu, tai muuten saatat olla hämmentynyt. Otsikko on vain CharField, joka on ovat argumentteja voit välittää täsmennetään kuinka kauan olet haluavat sen olevan, mutta täällä, se ei ole oikeastaan ​​väliä. Ja teksti tulee olemaan tekstin koko post, ja että tulee olemaan TextField vain koska haluat jotta se voi olla melko pitkä jono. Sitten meillä on tämä Meta alaluokka että vain täsmennetään, että haluamme tietokanta jos tämä on tosiaankin avanneet osaksi olla db objekti, että meillä on täällä. Ja viimeinen asia meillä täällä, on vain tämä toiminto että aiomme käyttää meidän tärkein App alustaa tietokannan yhteyden se, ja sitten luoda Postin pöytä. Nyt Katsotaanpa tärkein sovellus itse. Joten tämä on melko hieman pidempi kuin mitä että olemme nähneet aiemmin, mutta toivottavasti ei liian huono. Joten, haluaisin laajentaa tätä. Okei. Niin, huomaa ja ylin Toin koko joukko muita asioita pullosta että meillä ei todella ennen nähnyt. Ja toivottavasti voimme käydä läpi jokainen näistä yksitellen ja puhua hieman enemmän ne, lajiteltu esimerkki. Joten, meillä on pullo, ja render_template, joka olemme nähneet aiemmin, tämä pyyntö esine, joka tulee esille kun katsomme miten muodossa, että olin osoittaa todella toimii. Ohjata, jonka avulla voit ohjata takaisin Luo uusi viesti takaisin alkuperäiseen etusivulle, ja sitten URL, joka on jotain, jonka avulla voit selvittää missä verkkosivuilla tietyllä sivulla on. Niin, seuraava minä teen, on tuon kaikki tiedot Mallit tiedostot olimme vain katsomalla. Ja, joo. Niin, jotain muuta uutta, joka tulee , kun olet tekemisissä, erityisesti tietokannat, on, että voit määrittää toiminto, joka saa kutsutaan ennen jokaiseen pyyntöön, ja toiminto, joka saa kutsutaan jokaisen pyynnön, käyttäen tätä toiminto sisustusarkkitehti app.before pyynnöstä. Ja niin tämä saa suoritetaan missä tämä toiminto on. Tämän ei tarvitse olla kutsutaan ennen pyynnöstä, mutta yleensä se on jotain järkevää kutsua sitä. Voit määrittää, mitä toiminto haluat saada kutsutaan siellä, joten olen täsmentänyt tätä initialize_db toiminto, joka meillä oli takaisin Mallit tiedosto, joten ennen jokaista pyyntöä, haluat muodostaa yhteyden tietokantaan. On olemassa kaksi eri miten voit tehdä tämän. Voit tehdäapp., I mielestämme on after_request. Ja ero after_request ja teardown_request, että after_request tapahtuu vain jos pyyntö todellisuudessa oli pätevä. Ja niin, vain jos pyyntö oli onnistunut, jos mitään meni pieleen, mutta teardown_request tapahtuu tapauksessa, onnistuneen pyynnöstä tai kun kyseessä virhe. Niin, yleensä, haluat käyttää teardown_request, ellet halua tehdä jotain, etenkin eri kun kyseessä virhe. Mutta vain sulkemiseksi tietokantaan, onko se onnistuu tai jos se epäonnistuu, me haluat katkaista tietokannasta. Niin sitä kutsutaan, db.close DB esine. Huomaa, että teardown_request vie poikkeus. Joten voit tarkistaa, jos siellä oli todella virheen, kun se oli sulkemisesta, mutta täällä, toivottavasti, siellä ei paljon virheitä, joten me vain eräänlainen piittaamatta siitä. Okei, ja loput se ei ole liian huono. Joten, kun menemme kotiin sivulle, me tehneet tämän home.html malli Tämä tulee avaamaan. Pass on post sama, ja mitä tämä tekee on, muistan meillä on tämä viesti malli, joten me valita kaikki viestit, ja sitten toinen asia mitä voi tehdä, voit määrittää WHERE, voit määrittää tilata, ja niin otamme kaikki viestit, jotka saada valittu, ja sitten tilaamme ne post.date.descending. Ja että täsmennetään, kun ne todella tulevat ulos, viimeisimmästä on aivan ensimmäinen. Ja sitten, me siirtää sen osaksi home.html malli, joten katsotaanpa todella avata että malli todella nopea, ja katsomaan, miten se toimii. Ja tämä ei ole suuri HTML, mutta Toivottavasti voimme keskittyä Python. Joten siellä on linkki Lisää uusi Post, ja niin tämä täsmennetään reitti sisällä pullo että me määritellä, mikä on täällä. Tämä on uusi viesti reitti, ja me täsmentää, että täällä. Ja niin se on linkki, joka sitten mennä tälle reitille sisällä pullo palvelimen. Enemmän mielenkiintoinen juttu on tämä silmukka täällä. Joten me täsmentää, että tämä post parametri joka johdettiin render_template funktio, jokaista virkaa Postin esine, joka saa siirtää vuonna. Haluamme tulostaa post otsikko, H1, ja sitten alla haluamme tulostaa post tekstiä kohta. Ja täällä, voimme todella soittaa Python-toiminto, jotta voimme soittaa strftime, ST-RF-aika, ja voit kulkea muotomerkkijonoa että haluat tulostaa tiedot ulos. Joten se on ihan mukavaa, että voit oikeastaan ​​kutsua tätä Python toiminto sisällä täältä. Sinun ei tarvitse tehdä muotoilua päälle ohjain puolella, koska todella, alustus päivämäärä on jotain, joka haluat käsitellä sisällä View. Ja kaikki nämä prosenttia asiat ei ole super tärkeää. Jos katsot asiakirjat varten strftime toiminto Python, se määrittelee kaikki nämä asioita, mutta se on miten, kun etsimme kotisivulta täällä, se muotoilee tämä mukava päivämäärä, ja se täsmennetään AM tai PM, mutta yleensä, jos ei ollut täällä, saat todennäköisesti joitakin roskat päivämäärä, ei näytä kovin hyvältä. Ja sitten me määritä post.text, ja voisin ovat tehneet pari rivinvaihdot täällä, vain laittaa välejä kunkin postitse. Joten luulen tärkein asia tässä esimerkissä, on, että voit käyttää tätä silmukka. Ja tämä on analoginen mitä voi tehdä PHP. Voit kerrata kautta, kaikki saa hyväksyttiin, ja niin sen sijaan, tehdä copy / paste, copy / paste kaikki HTML, sinun täytyy vain kirjoittaa sitä kerran, ja sitten voit kerrata hoitaakseen kaikki virat. Ja tämä on jotain yleistä, että haluat tehdä, kun sinulla on paljon tietoa, on se, että kaikki tietosi, haluat tehdä samanlainen asia. Ja sitten, vain muistaa, että kun haluavat tulostaa jotain nimenomaisesti HTML, käytät kaksinkertainen olkaimet täällä, mutta sitten kun haluat määrittää joitakin tietoja kunnossa, tai noin varten silmukka, sinulle Käytä prosenttia kiinnike. Joten, menee takaisin Python koodi, niin että kertoo mitä tapahtuu pääasiassa reitin, kun menemme sinne, se vain näyttää kaikki virkaa, mutta sitten kysymys on, miten me itse saada virkaa tietokantaan, joka on hieman mielenkiintoisempi. Joten, kun klikkaat Uusi Post linkki, josta näimme täällä, se ohjaa sinut tämän lomakkeen. Ja tämä on vain yksinkertainen puhelun render_template toiminto, joka sitten kulkee uusi viesti HTML muodossa. Joten katsomaan joka. Joten tämä on melko yksinkertainen. Se on yksinkertainen HTML-lomake, joka näyttää hieman tuttu, perustuu muotoja CS50 Finance. Ja niin, me määrittää täällä, toiminta. Ja tässä, jos olet työskennellyt PHP, normaalisti, se olisi jotain, create.PHP, mutta tässä me oikeastaan ​​määrittää reitti sisällä pullo palvelimen. Ja niin, tästä reitistä vastaa ja luoda reitti että olemme täällä, joka me mennä toiseen. Ja niin, me määrittää, että se postitse menetelmä, koska haluamme lähettää Tämän lomakkeen tiedot, ja yleensä Kun lähetät tietoja muodossa, saatat haluta käyttää virkaan pyynnöstä, vain niin et päädy Tämän iso, kankea URL. Mutta voit myös käyttää GET-pyynnön, ja siirtää sen vaihtelevalla reititys, mutta muodot, se on mukava post pyynnön täällä. Ja niin sitten, kuten sinäkin tekisi HTML ja PHP, voit määrittää nämä tekstin tuloa, ja voit määrittää nimi heistä, ja se nimi, joka päästä ohi osaksi pyyntö esineen pulloon. Ja sitten olemme Lähetä painiketta, jossa lukee Post. Ja täällä, Post on nimi painiketta, koska se on blogi, mutta täällä, viesti on pyynnöstä menetelmä. Joten ne ovat sama sana mutta todellisuudessa liity. Joo Palataan Python koodia, kun soitimme luoda menetelmä, huomata tässä, että voit todella määritä sisällä reitti pyyntö menetelmät että haluat hyväksyä, ja niin täällä, voin määrittää, että minä vain halua hyväksyä Post menetelmällä. Joten, jos olen itse yrittää käydä sivulla suoraan, joka käyttää GET-pyynnön, se kertoo minulle "Menetelmä ei sallita." Ja niin, sinulla on sivuja, eräänlainen kuten Luo sivu, joka olen vain todella käyttäen tapa lomake saada toimitettu, voit määrittää, että et halua ihmisten pystyä mennä sinne suoraan GET pyynnön, tai jos et halua, jostain syystä, Post pyyntö, voit vain määritellä tänne, mutta tässä esimerkissä, me vain haluavat Post pyynnön mennä ulos. Joten, kun create_post kutsutaan, kun vierailemme että kautta Postin pyynnöstä, kun menet tiettyyn reitti, on tämä pyyntö esine, ja meidän piti tuoda pyynnöt huipulla, mutta on tämä pyyntö esine, joka saa siirtää vuonna, ja voit käyttää lomakkeen tiedot, joka automaattisesti saa täytettyinä kun lähetät pyynnön muodossa. Ja sitten, mitä ajattelen on todella siistiä, on että lomake tavoite saada läpäissyt vuonna, on vain Python sanakirjaa sisältää, jos access-- joten tässä, anna minut Vedä HTML vieressä, vain joten voit olla että apuna, kyllä, joten nimiä että me määrittää täällä eri alojen, joten otsikko ja teksti, me sitten vain käyttää näitä tänne indekseinä muotoon tiedot. Niin se on erittäin kätevä. Niin silloin me kutsumme post.create, joka luo ja automaattisesti lisätä tämä uusi viesti esine tietokantaan. Ja mielestäni tämä luo toiminto tässä todella siistiä esimerkki siitä, miten voimakas Pullo ja työskennellä tämän, koska jos olit tekemässä jotain PHP, saatat joutua tehdä paljon validointi, sinun olisi sitten luoda tietokanta yhteys, sinun olisi sitten suorittaa SQL-kysely, mutta täällä meillä on vain tämä mukava post.create, joita voimme sitten vain saada tietoa ulos pyynnön kohteen, ja sitten siirtää se uuteen post että olemme luomassa. Ja sitten, aivan viime asia haluamme tehdä, on suunnata käyttäjän takaisin kotiin. Ja niin käytämme tätä Pulloon ohjata toiminto. Ja jotain, emme olleet nähneet ennen, oli tämä URL toiminto. Joten URL toiminnon avulla ohitat itse asiassa nimi funktion teidän Python koodia, pikemminkin kuin tietyllä reitillä että se on klo. Niin voisin olla aivan yhtä helposti ohjataan käyttäjä leikata, joka lähettää sen takaisin kotiin, mutta käyttäen URL-toiminto on mukava, koska jos muutat paikka, jossa asiat ovat, joten sanotaan, että muutan koti olla / home sijaan, tämä olisi silti palaa / kotiin, koska todella menee ja hakee funktion nimi, ja se antaa sinulle takaisin URL että. Niin, tavallaan on oletetaan, että olet todennäköisemmin muuttaa, jos asiat ovat, kuin nimet toimintoja. Voit käyttää tätä todella mukava URL toiminto. Ja yksi asia olla tietoinen että on hieman hankala, on, että luulet voisi vain soita uudelleenohjaus on URL, mutta todellisuudessa kaikki reitit ovat palata jonkinlainen tekstiä ja HTML, joten sinun todella täytyy palata uudelleenohjaus puhelun. Muussa tapauksessa saat jotain virheellinen noin ei palaa merkkijono, koska kaikki nämä on palattava HTML todella haluat tehdä. Ja niin, kun soitat uudelleenohjaus, se ohjaa sinut sivulle, mutta se todella palauttaa HTML sinun täytyy suorittaa, että uudelleenohjaus. Mene takaisin kotisivulle. Joten meillä on nämä kaksi erilaista näkemystä. Meillä on koti näkymä. Tai kai pitäisi sanoa malleja. Meillä on nämä kaksi mallia, koti malli joka näyttää kaikki meidän virkaa, ja sitten meillä on tämä mainos juttu, ja kun klikkaat postitse, se menee uudelle reitille sisällä pulloon, mutta reitti ei välttämättä on vastaava malli. Sinun ei tarvitse nähdä mitään, mutta voit silti on tämän työn takana kulissien takana. Ja sitten saat ohjataan Takaisin etusivulle. Ja ehdottomasti, se on helppo työskennellä joissakin mukavampaa CSS malliin ja tehdä tämä näyttää paljon mukavampaa, mutta kaikki tärkeimmät logiikan on siellä Python. Kysyttävää että esimerkiksi? Tiedän, että on paljon eri asioita tapahtuu siellä, paljon asioita emme olleet nähneet ennen, mutta kuin mitään. Joo. YLEISÖ 1: Onko teillä tehdä mitään erityinen hangata tietoja, jotka ovat tulleen muodossa? Huomasin juuri sanoi "luoda" EZRA ZIGMOND: Joo, niin se on Oikeastaan ​​se on todella hyvä pointti. Joten kysymys oli, oletteko täytyy tarkistaa ja varmistaa että tiedot on voimassa, ja tehdä minkäänlaisia ​​pesee varmistaa, että se on voimassa, koska kuten voitte nähdä täällä, En tee sitä. Joten mitä tapahtuu jos lähetän jotain tyhjä. Niin, se tulee oikeastaan ​​vain tehdä tyhjä virka ja täyttää Aikaleiman. Joten todellisuudessa, olet luultavasti haluavat tehdä jotain, ehkä määrittää, otsikko on sama kuin tyhjä merkkijono, niin älä tee tätä. Tai vain tehdä se, jos otsikko on ei vastaa tyhjää merkkijonoa. Joten se ei ole oikeastaan ​​automaattisesti huolehtia, että pesee sinulle, joten sinun pitää vielä tehdä. Joo, hyvä kysymys. YLEISÖ 2: Onko se pensaikkoa sillä jatko injektio? Tiedätkö? EZRA ZIGMOND: Toivottavasti peewee tekee sen. Mielestäni olisi varmasti aika huono kirjasto jos se ei tehnyt sitä. En tiedä tarkalleen. Minun pitäisi katsoa kysely että se syntyy. Uskon, että, jos olen kirjoittanut blogikirjoitus tällaista näytti kuten SQL-injektio hyökkäys, jotain tällaista, jos tämä muistuttaa salasanaa kenttä tai jotain, saatat tehdä jotain tällaista. Uskon, että tulee vielä saada kirjaimellisesti lähetetty, mutta luulen, että peewee ei tehdä jonkinlainen pesee tietojen ennen kuin se itse suorittaa sen. YLEISÖ 1: Tämä teksti kenttä on suunniteltu ottamaan vain teksti, eikö? EZRA ZIGMOND: Joo, se on. Joo. Joten luulen, että kaikki, niin tämä on oikea käyttäytyminen, joka tekee sen, mutta luulen, että peewee toivottavasti ei tehdä jonkinlainen suoja heidän puolellaan. Ja jos halusi varmista, että siellä tavoilla, kun luoda kyselyn. joten sinun ei tarvitse suorittaa sen suoraan. Olisin otettava katso dokumentaatio, mutta voit itse katsella SQL että se on tuottaa, ja katsomaan, että ja tehdä että se on paeta asioita. Toinen syy, miksi saatat halua katsoa SQL että peewee on syöttöä, on jos asiat näyttävät menevän todella hitaasti, voit katsoa ja nähdä, mitä se todella tekee, koska se on joskus helppo vahingossa lisätä vuonna, niin kuin kirjoittaa sitä, voit vahingossa saada sitä Valitse koko tietokannan ensimmäinen, ja sitten tehdä jonkinlainen toiminta siitä että, kun todella tarkoitus valita osajoukko. Ja niin, jos asiat eivät ole aivan menossa oikea, on hyvä vilkaista pyynnöstä joka on todella saada syntyy. Joo. YLEISÖ 2: Kun aloitin, laitat satamassa 5000. EZRA ZIGMOND: Joo. YLEISÖ 2: Onko oletuksena kanssa peewee, vai onko tämä jotain, voit vaihtaa? EZRA ZIGMOND: Kyllä, niin portti on oletuksena pulloon. Jos käyttää sitä ilman täsmennetään mitään, se automaattisesti tehdä. Uskon, olisin kaksinkertaistaa tarkistaa tämän, mutta voit määrittää, että app.run, Mielestäni voit tehdä jotain, portti = 8080. Annetaan että yrittää todella nopeasti. Joo, niin voit vain määrittää portti = 8080, ja se toimii sen siellä, joka mielestäni, jos halusi käyttää sitä IDE, en ole kokeillut tätä, mutta luulen, että jos juoksi se portissa 8080, haluat luultavasti pystyä pääsy palvelimelle, aivan kuten olit verkkosivuilla. Joo, mutta se on helppoa muuttaa että jos mitään tavallaan kuin satama-huolinta asioita, jotka sinun täytyy tehdä. Muita kysymyksiä? Joo? YLEISÖ 1: Niin, minä näin teidän malleja, kuten sanoitte, sinun on määritettävä tietokanta kunkin objektin. Onko satut tietää, ei joiden avulla on helppoa, jos on paljon SQLite tietokantoja sinua haluat käyttää yhden Web App, että voit vain määrittää nippu Eri olevista oman mallin? EZRA ZIGMOND: Joo, haluan avaa että jopa todella nopeasti. Joten, sanot, jos haluat olla joukko eri jotain, ehkä Pidän ja opiskelijoita, joidenkin syy, jotain sellaista? Joo, joten uskon, että silti, jokainen malli olisi edelleen vain yksi tietokanta sille, mutta jos halusi saada eri malleja ovat eri tietokantaobjektien annetaan sen, voit varmasti tehdä sen. Joten, jos olen luonut uuden, jotain tällaista, ja nyt tämä on opiskelija, joka näyttää kumma kuin blogi, Voisin täsmentää, että tietokanta on sama kuin db_2 täällä. Joten luulen, että se tärkein tapa voit tehdä sen. Viileä. Muita kysymyksiä? Joten loppuun asti hieman bittinen, tässä on muutamia vihjeitä, ja nämä dioja julkaistaan ​​verkossa joten voit itse saada nämä linkit. Parhaat resurssit ovat todella asiakirjat pullo ja Peewee itse. He kirjoitettu todella hyvin, luulen. Joten, taskumatti sivusto on täällä, ja heillä quickstart opetusohjelma, kävelee läpi samankaltaisia asioita mitä Kävelin läpi, mutta jos haluat minkäänlaista arvostelu asioita, jotka menin, tai luulit, että selitin jotain sekava tavalla, he ovat samanlaisia ​​esimerkkeinä. Peewee on asiakirjat, ja heillä quickstart opetusohjelma että menee tärkeimmistä muuttujista että haluaisi käyttää. Joten, mitä puhuin kanssa ainutlaatuinen, ja täsmennetään oletusarvot, erilaisia ​​kenttiä voit käyttää, niitä olisivat kaikki siellä. Lisäksi, jos sinulla on kysymyksiä peewee, ja lähetät ne StackOverflow, kaveri joka teki peewee todella jatkuu ja vastauksia niihin joskus. Jos sinulla on kysymys, toivottavasti hän voi vastata siihen, koska hän kirjoitti koko asia. Uskon, että kaikki Halusin kattamaan. Kiitos, että tulit ulos.