1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:03,227 [Glazbom] 3 00:00:03,227 --> 00:00:04,705 4 00:00:04,705 --> 00:00:05,830 EZRA ZIGMOND: Bok, svima. 5 00:00:05,830 --> 00:00:08,020 Hvala što si se danas. 6 00:00:08,020 --> 00:00:10,660 Ovaj seminar je "Python Web Apps s tikvica. " 7 00:00:10,660 --> 00:00:14,510 >> Dakle, ja ću biti govori malo o tome zašto 8 00:00:14,510 --> 00:00:17,400 možda želite koristiti tikvicu kako bi web aplikacije s Python, za razliku od 9 00:00:17,400 --> 00:00:21,556 nekim drugim okvirima vani, kao što su Django, koji je najpoznatiji. 10 00:00:21,556 --> 00:00:24,330 Podnaslov je "i Peewee ", što je nešto 11 00:00:24,330 --> 00:00:27,250 ćemo govoriti o tome kako komunicirati sa SQL bazama podataka. 12 00:00:27,250 --> 00:00:29,610 To ga čini jako lijepo. 13 00:00:29,610 --> 00:00:32,390 >> Dakle, ovdje je samo brzo rundown ono što ja želim ići više. 14 00:00:32,390 --> 00:00:35,520 Dakle, prvi, samo jedan slajd koja će biti QuickStart, 15 00:00:35,520 --> 00:00:38,530 koji je, kako bi se sve postaviti na vašem računalu. 16 00:00:38,530 --> 00:00:41,760 Idem se pokazati ovo na mom lokalnom Mac stroj, 17 00:00:41,760 --> 00:00:45,220 Samo zato što je to, gdje sam to učinio prije, ja sam najviše sviđa s njim, 18 00:00:45,220 --> 00:00:48,510 ali ovo je definitivno moguće na CD50 IDE. 19 00:00:48,510 --> 00:00:52,050 >> Dakle, nakon toga, želim uvesti što tikvica, 20 00:00:52,050 --> 00:00:55,089 i uvjeriti vas zašto biste trebali koristiti na prvom mjestu. 21 00:00:55,089 --> 00:00:56,880 Zatim, ja ću dati brz primjer onoga što vas 22 00:00:56,880 --> 00:01:00,550 možete učiniti u boci, brzo primjer onoga što možete učiniti u Peewee, 23 00:01:00,550 --> 00:01:05,010 a onda ću vam pokazati više kompletna primjer primjene 24 00:01:05,010 --> 00:01:07,520 da sam stavio zajedno da mi Možete prošetati zajedno. 25 00:01:07,520 --> 00:01:10,040 >> I onda na kraju, u posljednji slajd, imam 26 00:01:10,040 --> 00:01:12,730 neke resurse koje izgledaju na online za više informacija. 27 00:01:12,730 --> 00:01:15,560 Ovo nije potpun udžbenik o tome kako koristiti tikvicu. 28 00:01:15,560 --> 00:01:18,140 A ja ću se nadam da napusti neko vrijeme za pitanja. 29 00:01:18,140 --> 00:01:21,050 Gledam tko na lokalnoj razini, samo kao, vikati na sredini 30 00:01:21,050 --> 00:01:22,340 Ako imate bilo kakvih pitanja. 31 00:01:22,340 --> 00:01:27,150 >> Dakle, brza instalacija stvari, Ako želite slijediti, 32 00:01:27,150 --> 00:01:29,240 ili ako želite da biste dobili ovaj se na svoj stroj, 33 00:01:29,240 --> 00:01:32,440 Idem se pomoću Python 2.7.10. 34 00:01:32,440 --> 00:01:35,860 Tikvica radi s Python 3, ali mi se sviđa 35 00:01:35,860 --> 00:01:38,660 pomoću Python 2, jer je neki Python paketi koji 36 00:01:38,660 --> 00:01:40,910 ne rade s 3 gostiju. 37 00:01:40,910 --> 00:01:44,800 Ako pip instalirali, koji je menadžer Python paketa, 38 00:01:44,800 --> 00:01:48,190 Mislim da ako je vaš Python je veći ili jednak 2.7.9, 39 00:01:48,190 --> 00:01:52,220 imate već instaliran, to je super jednostavan za instalaciju tih paketa. 40 00:01:52,220 --> 00:01:54,990 >> Možete li PIP instalirati Tikvica, pip instalirati Peewee, 41 00:01:54,990 --> 00:01:58,600 obično morate pokrenuti sudo jednostavno tako da dozvole raditi. 42 00:01:58,600 --> 00:02:01,080 A, ako koristite super stara verzija Python, 43 00:02:01,080 --> 00:02:05,100 Preporučujem ažuriranju Python, ili pomoću EasyInstall instalirati pipsa. 44 00:02:05,100 --> 00:02:09,180 45 00:02:09,180 --> 00:02:11,120 Dakle, sljedeće pitanje je, što je Tikvica? 46 00:02:11,120 --> 00:02:13,280 I mislim, prvo razumno pitanje sam se pitao 47 00:02:13,280 --> 00:02:15,585 Dugo vremena je, što je web aplikacija? 48 00:02:15,585 --> 00:02:17,960 Jer to je riječ koju sam misle da je bačeno oko puno 49 00:02:17,960 --> 00:02:19,240 da ja stvarno nisam znao. 50 00:02:19,240 --> 00:02:22,340 I mislim da je najbolja primjer onoga što web aplikacija, 51 00:02:22,340 --> 00:02:26,960 stvarno je CS50 financija, gdje to nije stvarno samo web stranice, 52 00:02:26,960 --> 00:02:29,320 ali to je nešto što vam mogao nekako komunicirati s. 53 00:02:29,320 --> 00:02:31,736 Postoji korisničkih računa i sve vrste različitih stvari. 54 00:02:31,736 --> 00:02:35,010 Dakle, gdje točno crtate granica između onoga što je web stranica, 55 00:02:35,010 --> 00:02:38,780 a što je web aplikacija, je vrsta proizvoljna, ali mislim da tu ideju, 56 00:02:38,780 --> 00:02:42,110 to je nešto više od web stranice i to je korisna aplikacija. 57 00:02:42,110 --> 00:02:46,081 >> Dakle, Posuda je okvir za izradu web aplikacija pomoću Python. 58 00:02:46,081 --> 00:02:48,330 I nadamo se, do kraja to, ja ću vas uvjeriti 59 00:02:48,330 --> 00:02:52,210 da zapravo mogao napisati nešto kao CS50 financija pomoću Python, koji sam 60 00:02:52,210 --> 00:02:53,950 kao što je puno bolje nego PHP, osobno. 61 00:02:53,950 --> 00:02:57,320 >> Dakle, bocu se oni zovu microframework, kojim, 62 00:02:57,320 --> 00:02:59,800 misle da je vrlo jednostavno, ali proširiva. 63 00:02:59,800 --> 00:03:02,980 Dakle, to je upravo ono što trebate, ali ako želite više mogućnosti, 64 00:03:02,980 --> 00:03:04,522 to je lako ih dovesti u. 65 00:03:04,522 --> 00:03:06,480 Ali samo zato što je microframework, ne 66 00:03:06,480 --> 00:03:08,960 znači da je samo za male projekte. 67 00:03:08,960 --> 00:03:12,590 Imam link ovdje koji kaže da Obama koristi tikvica u 2012. godini 68 00:03:12,590 --> 00:03:14,410 za svoju kampanju web stranice, koji nadamo se, 69 00:03:14,410 --> 00:03:16,937 je nešto uspjeha. 70 00:03:16,937 --> 00:03:18,770 Ali ono što sam stvarno poput o tikvica 71 00:03:18,770 --> 00:03:22,401 da, to zapravo ne bi bilo kakve odluke za vas. 72 00:03:22,401 --> 00:03:24,150 Samo zato što smo govorimo o web-aplikacija, 73 00:03:24,150 --> 00:03:26,940 Moram ga usporediti s Ruby na Šine i Django, od kojih oba 74 00:03:26,940 --> 00:03:30,450 su veliki okviri, ali obojica čine pretpostavke 75 00:03:30,450 --> 00:03:33,600 o tome kako želite u interakciji s bazama podataka, 76 00:03:33,600 --> 00:03:36,900 kako želite predstaviti svoj pregleda, a oni su svakako 77 00:03:36,900 --> 00:03:38,850 dobri aspekti na to. 78 00:03:38,850 --> 00:03:41,490 >> Na primjer, Ruby on Rails ima tu aktivnu zapisa sustava, 79 00:03:41,490 --> 00:03:43,100 što je jako lijepo način za interakciju s podacima, 80 00:03:43,100 --> 00:03:45,960 ali ako želite koristiti Ruby na Šina, ti si vrsta vezan u to. 81 00:03:45,960 --> 00:03:47,835 No, s tikvica, kao što ću vam pokazati s Peewee, 82 00:03:47,835 --> 00:03:49,830 možete koristiti bilo kakva baze podataka želite, 83 00:03:49,830 --> 00:03:53,980 a vi jednostavno možete povući da se u kao nastavak u tikvicu. 84 00:03:53,980 --> 00:03:56,350 >> Dakle, to je razlog zašto sam stvarno poput tikvica, to je da je to 85 00:03:56,350 --> 00:04:01,170 ne bi pretpostavke za vas na temelju stvari koje zapravo ne treba. 86 00:04:01,170 --> 00:04:04,440 >> Dakle, zašto bi koristiti tikvice? 87 00:04:04,440 --> 00:04:08,230 Prednosti su, to samo je stvarno temeljne značajke 88 00:04:08,230 --> 00:04:09,420 ugrađene u to da vam je potrebno. 89 00:04:09,420 --> 00:04:11,980 Dakle, ne morate brinuti o razumijevanje cijela hrpa stvari 90 00:04:11,980 --> 00:04:13,175 da stvarno ne treba. 91 00:04:13,175 --> 00:04:15,060 Vi ne morate brinuti O isključivanja značajke 92 00:04:15,060 --> 00:04:16,620 da stvarno ne treba. 93 00:04:16,620 --> 00:04:21,082 >> I, kao što sam spomenuo, to je super lako dodati u nastavcima stvari 94 00:04:21,082 --> 00:04:21,790 što trebate. 95 00:04:21,790 --> 00:04:24,700 Neki od njih, Posuda ima vlastitu podršku za to. 96 00:04:24,700 --> 00:04:28,230 Dakle, postoji nešto što se zove Tikvica admin, koji odražava tu admin 97 00:04:28,230 --> 00:04:32,060 panel koji pruža Django, koja vam daje lijep vizualni način 98 00:04:32,060 --> 00:04:33,405 za administraciju svoje web stranice. 99 00:04:33,405 --> 00:04:35,280 Ali opet, ako ste čineći nešto jednostavno, 100 00:04:35,280 --> 00:04:39,550 vjerojatno ne trebate veliki admin ploča, tako da mislim da je to super lijepo. 101 00:04:39,550 --> 00:04:45,940 A nedostaci su da imate manje snage iz kutije. 102 00:04:45,940 --> 00:04:49,660 Dakle, kada se prvi put otvoriti tikvica, iu vašem Python programa, 103 00:04:49,660 --> 00:04:53,150 ste upravo tip od tikvica Uvoz *, ili bilo što drugo, 104 00:04:53,150 --> 00:04:55,957 ne baš dobiti sve značajke možda želite. 105 00:04:55,957 --> 00:04:58,540 I tako da ćete morati eksplicitnije popis značajke koje želite. 106 00:04:58,540 --> 00:05:01,990 Dakle, to je jedan nedostatak, ali ja mislim da je za izgradnju male weba 107 00:05:01,990 --> 00:05:04,782 aplikacije kao što ću biti prikazano ti, to nije stvarno problem. 108 00:05:04,782 --> 00:05:07,281 A što je posljednja stvar trebao reći, što je pogreška pri upisu, 109 00:05:07,281 --> 00:05:10,240 je da postoje manje standardiziran konvencije za kako koristiti tikvice, 110 00:05:10,240 --> 00:05:12,400 Samo zato što nema onoliko ljudi koji ga koriste profesionalno 111 00:05:12,400 --> 00:05:13,191 u odnosu na Django. 112 00:05:13,191 --> 00:05:16,380 Dakle, ako nešto izgleda kao, "Kako ću to učiniti x" u Django, 113 00:05:16,380 --> 00:05:18,190 vjerojatno ćete ga pronaći. 114 00:05:18,190 --> 00:05:20,260 >> Postoji dobar dizajn obrasce koje možete koristiti, 115 00:05:20,260 --> 00:05:22,660 ali s tikvici je vrsta ide svojim putem, 116 00:05:22,660 --> 00:05:24,850 samo zato što je prilično mala knjižnica. 117 00:05:24,850 --> 00:05:27,100 Dakle, oni su nedostatke, ali mislim 118 00:05:27,100 --> 00:05:29,370 da je još uvijek dobar Knjižnica za korištenje. 119 00:05:29,370 --> 00:05:31,909 >> Pa neka je samo skočiti pravo u tikvicu. 120 00:05:31,909 --> 00:05:34,200 Ovo je definitivno ne ide biti potpuna udžbenik, 121 00:05:34,200 --> 00:05:37,480 ali to je da vam dati ideju kako strukturirati stvari, 122 00:05:37,480 --> 00:05:40,790 i tako da se osjećate ugodno ide off i gleda na dokumentaciji 123 00:05:40,790 --> 00:05:42,570 i saznate više. 124 00:05:42,570 --> 00:05:48,500 >> Dakle, neka mi se otvaraju jako Jednostavan primjer u početku, 125 00:05:48,500 --> 00:05:50,737 i ti što to pokazuju izgleda, a onda ćemo 126 00:05:50,737 --> 00:05:52,070 ga razbiti malo više. 127 00:05:52,070 --> 00:05:56,160 >> Dakle, ovo ovdje, neka mi se to radi. 128 00:05:56,160 --> 00:06:06,800 129 00:06:06,800 --> 00:06:09,750 Dakle, ja sada imam svoj prijavni trčanje. 130 00:06:09,750 --> 00:06:15,910 Idem otvoriti Safari i to je trčanje na mom lokalnom računalu. 131 00:06:15,910 --> 00:06:19,360 Pa ja sam samo ide da bi ovaj veći. 132 00:06:19,360 --> 00:06:23,960 Ali localhost: 5000 133 00:06:23,960 --> 00:06:27,650 >> I tako, sada, sve to radi je, kad posjetite web stranicu, 134 00:06:27,650 --> 00:06:31,490 to ispisuje "Hello tikvica" koji nije super korisno, 135 00:06:31,490 --> 00:06:34,630 ali mislim da je cool da u ovoj maloj datoteci ovdje, 136 00:06:34,630 --> 00:06:37,390 imamo web poslužitelj trčanje koji ispisuje nešto. 137 00:06:37,390 --> 00:06:40,500 Dakle, neka je zapravo izgledaju na kod za sekundu, 138 00:06:40,500 --> 00:06:43,080 i to break down malo. 139 00:06:43,080 --> 00:06:45,260 Je li veličina dobra za svakoga ovdje? 140 00:06:45,260 --> 00:06:51,560 >> Dakle, nadam se, da si nešto udoban koristeći Python. 141 00:06:51,560 --> 00:06:55,820 Ja sam uz pretpostavku da možemo gledati na Python i čitati kroz njega. 142 00:06:55,820 --> 00:06:59,290 Ako imate bilo kakvih pitanja o ništa, ja mogu ići preko toga. 143 00:06:59,290 --> 00:07:03,974 >> Dakle, prva linija, od tikvica, uvozimo, tikvica s velikim "F" 144 00:07:03,974 --> 00:07:06,140 koja je vrsta sve Glavne osobine koje su vam potrebne. 145 00:07:06,140 --> 00:07:08,890 Kad god pišete datoteka i korištenje Tikvica, 146 00:07:08,890 --> 00:07:12,120 ti si idući u ištanje to uvesti to, samo zato da ima sve glavne stvari. 147 00:07:12,120 --> 00:07:15,400 Sljedeća stvar mi je što nazvati ovu funkciju tikvica, samo 148 00:07:15,400 --> 00:07:19,270 stvoriti app objekt, a vi ste Uvijek će htjeti učiniti. 149 00:07:19,270 --> 00:07:25,960 >> A onda, skakanje na odjeljak Dno brzo, ovaj dio je ovdje, 150 00:07:25,960 --> 00:07:28,760 'if_name _ == "_ main_"' što je vrsta Python konvencije. 151 00:07:28,760 --> 00:07:32,750 Dakle, to će se samo izvršiti ako vas pokrenuti ovu datoteku izravno koristeći Python. 152 00:07:32,750 --> 00:07:36,040 Onda, što mi zovemo app.run, koji će zapravo početak aplikaciju ide. 153 00:07:36,040 --> 00:07:39,570 >> Dakle, to je glavna struktura koja ćete imati u bilo tikvica prijavi, 154 00:07:39,570 --> 00:07:48,550 je imat ćete ovaj Aplikacija = Posuda (_NAME_), a zatim app.run. 155 00:07:48,550 --> 00:07:54,940 >> Dakle, dvije stvari koje ja imam ovdje su ono što mi zovemo rute. 156 00:07:54,940 --> 00:07:57,150 Dakle, pričajmo o usmjeravanje malo više. 157 00:07:57,150 --> 00:07:58,430 Ja ću se vratiti na slajd. 158 00:07:58,430 --> 00:08:02,540 >> Dakle najosnovniji koncept u bocu se usmjeravanje. 159 00:08:02,540 --> 00:08:06,750 I to je ideja koja vas dodijeliti funkcije u Pythonu 160 00:08:06,750 --> 00:08:11,280 na određene adrese na web stranici. 161 00:08:11,280 --> 00:08:13,930 Dakle, kad god želite stvoriti novi put, 162 00:08:13,930 --> 00:08:16,500 koristite ovu @ app.route Funkcija dekoraciju. 163 00:08:16,500 --> 00:08:19,770 Dakle, ako ste upoznati s funkcija dekorateri u Python, 164 00:08:19,770 --> 00:08:24,160 to je ovaj koncept koji vam omogućuje da se funkcije 165 00:08:24,160 --> 00:08:26,800 a okružuju ga s nečim drugim. 166 00:08:26,800 --> 00:08:30,140 >> Pa stvarno, što je to dekorater radi, je da je potrebno funkciju ispod nje, 167 00:08:30,140 --> 00:08:33,409 i dodaje više informacija na njega, ali ono što se zapravo Tikvica 168 00:08:33,409 --> 00:08:37,480 ne bi se to dogodilo nije super presudno, ali ono što je važno, 169 00:08:37,480 --> 00:08:43,640 je da je prije početka rute staviti ovaj @ app.route, a zatim 170 00:08:43,640 --> 00:08:46,480 adresu trase, tako da je Slash je ono što mi 171 00:08:46,480 --> 00:08:48,360 vidio kad mi samo otvoriti web stranicu. 172 00:08:48,360 --> 00:08:49,580 Dakle, to je stranica. 173 00:08:49,580 --> 00:08:51,037 To je samo kosa crta rutu. 174 00:08:51,037 --> 00:08:52,370 I onda imaš tu funkciju. 175 00:08:52,370 --> 00:08:54,453 Naziv funkcije može biti što god želite. 176 00:08:54,453 --> 00:08:56,930 To ne mora nužno imaju veze s rute. 177 00:08:56,930 --> 00:08:59,440 A onda, bez obzira na Funkcija povratak, 178 00:08:59,440 --> 00:09:01,730 funkcija treba vratiti niz. 179 00:09:01,730 --> 00:09:03,740 I to string može sadrži HTML ili bilo što, 180 00:09:03,740 --> 00:09:06,920 i to je zapravo ono što će doći vratio u vašem web pregledniku kao HTML, 181 00:09:06,920 --> 00:09:08,200 i to će donijeti to. 182 00:09:08,200 --> 00:09:12,030 >> Dakle, to je isti broj to je iz primjera 183 00:09:12,030 --> 00:09:16,430 da sam samo trčao, pa kad smo posjetiti Slash, to naziva Hello World funkciju, koja 184 00:09:16,430 --> 00:09:20,470 Samo vraća niz, Pozdrav Tikvica, i koji se ispisuju na zaslonu. 185 00:09:20,470 --> 00:09:27,290 >> Dakle, tu je još jedan primjer, što je, prilikom posjete / Pozdrav, 186 00:09:27,290 --> 00:09:30,370 to ispisuje Hello Riječ, koja zapravo trebao reći, Hello World, 187 00:09:30,370 --> 00:09:32,010 ali neka je pretvarati se da je namjerno. 188 00:09:32,010 --> 00:09:35,140 Tako ćemo povući da se jako brzo. 189 00:09:35,140 --> 00:09:41,290 >> Dakle, ako idete na localhost / Pozdrav, sada će ispisati nešto drugo. 190 00:09:41,290 --> 00:09:45,680 Dakle, to je samo brzo primjer kako možete stvoriti dvije različite rute. 191 00:09:45,680 --> 00:09:50,630 >> Dakle, do sada to nije super korisno, nema puno što možete učiniti, 192 00:09:50,630 --> 00:09:55,360 možete jednostavno napraviti sve što je u imaju različite HTML stranice, 193 00:09:55,360 --> 00:09:58,000 a kada posjetite određeni Stranica to samo učitava stranicu. 194 00:09:58,000 --> 00:10:00,864 Tako ćemo vidjeti nešto više korisne stvari koje možete učiniti. 195 00:10:00,864 --> 00:10:03,780 Dakle, jedna stvar koju možete imati primijetili u primjeru koji sam izvukao 196 00:10:03,780 --> 00:10:07,160 gore, da sam app.run (debug = True). 197 00:10:07,160 --> 00:10:09,580 I tako, što je to ispravljanje argument čini, 198 00:10:09,580 --> 00:10:14,600 da kada pokrenuti svoj web poslužitelj, kada ste u svoj program, 199 00:10:14,600 --> 00:10:18,100 ako promijenite datoteku, ona će automatski ponovno učitavanje poslužitelja. 200 00:10:18,100 --> 00:10:21,160 >> I tako da zapravo ne morate Restart Python, koji je super korisna. 201 00:10:21,160 --> 00:10:24,020 Mogu pokazati da. 202 00:10:24,020 --> 00:10:26,960 Dopustite mi podići moj broj sa pogreška pri upisu u njemu, 203 00:10:26,960 --> 00:10:30,420 i pretvarati se da je pogreška pri upisu je stavio tamo namjerno za instruktivne svrhe. 204 00:10:30,420 --> 00:10:31,625 Tako ćemo dodati ovaj natrag u. 205 00:10:31,625 --> 00:10:33,140 Tako sada on kaže Hello World. 206 00:10:33,140 --> 00:10:34,410 Ja ću ga spasiti. 207 00:10:34,410 --> 00:10:36,540 A ako ćemo povući se terminal, vi ćete 208 00:10:36,540 --> 00:10:39,520 kažu da je to ponovno pokretanje, jer otkrije promjenu, 209 00:10:39,520 --> 00:10:43,620 pa sad kad smo ponovno odaberete ovu stranicu, to će ispisati ispravnu stvar. 210 00:10:43,620 --> 00:10:45,630 >> Dakle ispravljanje je super korisna za to. 211 00:10:45,630 --> 00:10:48,740 Također, ako imate bilo vrsta sudara, tako da 212 00:10:48,740 --> 00:10:54,370 dopustite mi da ovu aplikaciju sudar tako da se ne vrati niz. 213 00:10:54,370 --> 00:10:57,540 Dakle, neka je samo ga povratak Ništa nekog razloga. 214 00:10:57,540 --> 00:11:00,810 I onda kada sam posjetiti ovu stranica, samo će srušiti, 215 00:11:00,810 --> 00:11:04,465 ali poslužitelj ne samo srušiti, to zapravo daje vam super korisnu leđa 216 00:11:04,465 --> 00:11:06,490 trag svega što je pošlo po zlu. 217 00:11:06,490 --> 00:11:10,050 A što je jako lijepo, da se na svakom koraku u ovom leđa traga, 218 00:11:10,050 --> 00:11:14,260 možete otvoriti interaktivni shell ovdje, a nekako isprintati ono 219 00:11:14,260 --> 00:11:17,780 varijable želite pogledati. 220 00:11:17,780 --> 00:11:21,054 >> I tako ispravljanje pogrešaka stvarno korisno za figuring out 221 00:11:21,054 --> 00:11:23,470 što se događa s vašim poslužitelja, a ne samo viđenje 222 00:11:23,470 --> 00:11:28,201 nešto u PHP poput 500 unutarnja Pogreška poslužitelja, što je super beskorisno. 223 00:11:28,201 --> 00:11:30,700 Jedna stvar biti svjestan je da, ako ste stavili svoj app online 224 00:11:30,700 --> 00:11:34,260 tako da je vidljiv u javnosti, što nikada ne žele napustiti debug mod na, 225 00:11:34,260 --> 00:11:37,320 jer ljudi mogu zapravo koristiti tu konzolu sam 226 00:11:37,320 --> 00:11:39,150 pokazala da izvršavanje proizvoljnog koda. 227 00:11:39,150 --> 00:11:42,120 >> Dakle, oni mogu ispisati kao i bilo Tajni kodovi imate tamo, 228 00:11:42,120 --> 00:11:44,755 oni mogu pogledati točno kako vaše web stranice radi. 229 00:11:44,755 --> 00:11:46,630 Dakle, to je stvarno korisno za testiranje, ali uvijek 230 00:11:46,630 --> 00:11:50,090 pobrinite se da ga prije objavite nešto online. 231 00:11:50,090 --> 00:11:56,640 >> Dakle, ako koristite nešto kao što su PHP, postoji ova ideja 232 00:11:56,640 --> 00:11:58,920 koje možete proći informacija između web stranice 233 00:11:58,920 --> 00:12:03,620 stavljajući informacije zapravo u URL, što je zahtjev GET, 234 00:12:03,620 --> 00:12:07,490 ali tikvica, možete zapravo nešto vrsta kao što je to, 235 00:12:07,490 --> 00:12:10,590 tako da rutu koja ima varijabla kao dio. 236 00:12:10,590 --> 00:12:14,090 >> Dakle, ako pogledate ovaj Primjer na zaslonu ovdje, 237 00:12:14,090 --> 00:12:19,930 imamo put koji je ('/ Pozdrav /'), i tako, ako posjetite 238 00:12:19,930 --> 00:12:23,790 / Pozdrav / nešto, to nešto će zapravo dobiti popunjena 239 00:12:23,790 --> 00:12:25,490 u varijablu imena. 240 00:12:25,490 --> 00:12:27,850 A primijetiti da funkciji koji dolazi s te rute 241 00:12:27,850 --> 00:12:31,302 mora uzeti u parametru ime, tako da će zapravo 242 00:12:31,302 --> 00:12:32,510 bi prošao u funkciju. 243 00:12:32,510 --> 00:12:34,190 >> A onda, nakon što ste unutar tu funkciju, 244 00:12:34,190 --> 00:12:36,420 možete liječiti da kao normalna Python varijabla, 245 00:12:36,420 --> 00:12:39,650 pa onda, ona će ispis Pozdrav, i to 246 00:12:39,650 --> 00:12:42,000 će ispuniti ime pomoću Neki oblikovanje niza. 247 00:12:42,000 --> 00:12:48,060 >> Dakle dodati promjenjive dijelove na usmjeravanje, koristite kutnikom oznaku. 248 00:12:48,060 --> 00:12:51,220 A po želji, možete koristiti ono što se naziva konverter. 249 00:12:51,220 --> 00:12:56,840 I tako, ako ste stavili ovo napomene uz debelog crijeva, 250 00:12:56,840 --> 00:13:00,015 možete odrediti da je int ili float, ili put, 251 00:13:00,015 --> 00:13:01,640 i ona će automatski pretvoriti to. 252 00:13:01,640 --> 00:13:05,130 Također možete napraviti konverziju u funkciji Python, 253 00:13:05,130 --> 00:13:09,710 Samo pomoću cast, ali ponekad, ako želite osigurati da je int, 254 00:13:09,710 --> 00:13:12,080 možete staviti pravilo konverzije tamo. 255 00:13:12,080 --> 00:13:15,930 >> Tako ćemo podići primjer nekih promjenjivim pravilima. 256 00:13:15,930 --> 00:13:21,480 Dakle, ovdje, to je isti osnovni Struktura s od tikvica uvoza 257 00:13:21,480 --> 00:13:25,030 Tikvica, app = tikvica (_NAME_), a zatim je pokrenut krajem. 258 00:13:25,030 --> 00:13:28,050 Imamo dva različita varijabilni ruta ovdje. 259 00:13:28,050 --> 00:13:29,900 I prvi je onaj koji sam pokazao 260 00:13:29,900 --> 00:13:34,230 u slajd, što je to samo je potrebno u ime string 261 00:13:34,230 --> 00:13:35,650 i to će ispisati Pozdrav, ime. 262 00:13:35,650 --> 00:13:41,410 >> I tada, drugi on koristi pretvorbe. 263 00:13:41,410 --> 00:13:44,690 Dakle, ovo će ga automatski pretvoriti na int, a zatim dvostruko int, 264 00:13:44,690 --> 00:13:46,150 i ispisati to van. 265 00:13:46,150 --> 00:13:48,220 I, ne činimo bilo kakve obraćenja unutar nje 266 00:13:48,220 --> 00:13:49,594 jer Posuda brine o tome. 267 00:13:49,594 --> 00:13:53,181 Tako ćemo dobiti ovu trčanje. 268 00:13:53,181 --> 00:13:54,930 Kada imate tikvica aplikacija trčanje, 269 00:13:54,930 --> 00:13:58,440 možete kontrolirati-C iz njega zaustaviti poslužitelj trčanje. 270 00:13:58,440 --> 00:14:02,420 A onda ću pokrenuti varijable. 271 00:14:02,420 --> 00:14:11,740 >> Tako ćemo ići na localhost / zdravo / Ezra i nadamo se, to će pozdraviti me. 272 00:14:11,740 --> 00:14:14,530 273 00:14:14,530 --> 00:14:20,310 >> Dakle, to je u moje ime, u varijablu rute, a to ga popuniti ovdje. 274 00:14:20,310 --> 00:14:23,950 Dakle, i ja ću pokazati brz Primjer udvostručenje. 275 00:14:23,950 --> 00:14:28,600 Dakle, ako idete / double / 3, to će ispisati 6. 276 00:14:28,600 --> 00:14:31,440 Dakle, ovo brinula konverzija za nas. 277 00:14:31,440 --> 00:14:34,190 >> Dakle, možete to učiniti sa float, i nešto posebno, 278 00:14:34,190 --> 00:14:37,530 ako je potrebno navesti nešto poput put, koji vam omogućuje da prihvate kose crte, 279 00:14:37,530 --> 00:14:39,155 ali to ne bi trebao biti problem obično. 280 00:14:39,155 --> 00:14:41,480 281 00:14:41,480 --> 00:14:43,820 Do sada smo, još uvijek imamo upravo vraćaju 282 00:14:43,820 --> 00:14:46,320 žice, što nije vrlo zanimljiv. 283 00:14:46,320 --> 00:14:48,730 >> Mi bi zapravo mogao vratiti doslovni HTML niz. 284 00:14:48,730 --> 00:14:54,322 Tako je u kodu možemo umetnuti nešto poput b-privjesak kako bi ga podebljano, 285 00:14:54,322 --> 00:14:56,030 ali većina You vrijeme ne zapravo žele 286 00:14:56,030 --> 00:14:58,420 da pisanje HTML koda u svoj Python koda. 287 00:14:58,420 --> 00:15:01,940 Ona dobiva stvarno neuredan, a to nije dobro vrijeme. 288 00:15:01,940 --> 00:15:06,430 >> Boca omogućuje nam izdvojiti HTML u ono što se zove Predložak, 289 00:15:06,430 --> 00:15:09,467 pa ako ste mislili u smislu MVC modela 290 00:15:09,467 --> 00:15:11,550 da ste upoznati s, nadamo se, od rada 291 00:15:11,550 --> 00:15:15,520 s CS50 financija malo, možete misliti na Python datoteka 292 00:15:15,520 --> 00:15:19,430 kao više od kontrolora, gdje su u interakciji s bilo 293 00:15:19,430 --> 00:15:20,970 podaci Model možete imati. 294 00:15:20,970 --> 00:15:24,900 >> A onda su se pozivaju na Posjeta i prolazi informacije na tu View 295 00:15:24,900 --> 00:15:28,120 popuniti podatke u HTML kako treba. 296 00:15:28,120 --> 00:15:30,490 I ono što mi zovemo one Posjeta Predlošci su u klasi. 297 00:15:30,490 --> 00:15:35,280 >> Dakle Posuda koristi još Python modul koji će se automatski 298 00:15:35,280 --> 00:15:38,620 instalirati kada Pip instalirali Tikvica se zove Jinja, koji 299 00:15:38,620 --> 00:15:40,885 omogućuje dodavanje tih primjedbe na HTML 300 00:15:40,885 --> 00:15:45,140 da vidite na zaslonu, koji omogućuje stavite u stvari kao što su uvjetne, 301 00:15:45,140 --> 00:15:47,230 i petlje u HTML. 302 00:15:47,230 --> 00:15:51,140 >> Tako to izgleda malo kao i kako vama može koristiti PHP u HTML datoteke, 303 00:15:51,140 --> 00:15:57,380 ali to je samo kada je tikvica poslužitelj služi se HTML datoteku, 304 00:15:57,380 --> 00:16:01,610 to će pokrenuti ovaj templating motor i analizirati kroz to i ispuniti stvari. 305 00:16:01,610 --> 00:16:06,650 Dakle Posuda ima funkciju render_template koje možete vidjeti na dnu ovdje. 306 00:16:06,650 --> 00:16:14,300 I tako kada posjetite ovu stranicu, to će donijeti ovu hello.html predložak, 307 00:16:14,300 --> 00:16:16,407 a zatim ispunite HTML stranice. 308 00:16:16,407 --> 00:16:18,990 Pa neka je samo pokrenuti taj stvaran brzo, i vidjeti kako to izgleda, 309 00:16:18,990 --> 00:16:21,198 a onda ću proći kroz malo detaljnije. 310 00:16:21,198 --> 00:16:25,380 311 00:16:25,380 --> 00:16:30,260 Dakle, vaši predlošci idu ići u mapu Obrasci. 312 00:16:30,260 --> 00:16:33,980 To će automatski tražiti unutar Predlošci mapu za taj predložak. 313 00:16:33,980 --> 00:16:35,615 Tako ćemo otvoriti ovo. 314 00:16:35,615 --> 00:16:47,350 315 00:16:47,350 --> 00:16:50,005 Dakle, ja ću pokrenuti templating primjer. 316 00:16:50,005 --> 00:16:52,820 317 00:16:52,820 --> 00:17:03,660 >> Dakle, ako idem na / zdravo / Ezra, to je to strašno, 318 00:17:03,660 --> 00:17:05,930 antipatičan nadstrešnica oznaka koje sam stavio u. 319 00:17:05,930 --> 00:17:08,050 Vrlo lijepo, vrlo dinamičan. 320 00:17:08,050 --> 00:17:09,349 Ja sam veliki fan. 321 00:17:09,349 --> 00:17:13,900 Ali što se događa ako Upravo sam ići, / zdravo? 322 00:17:13,900 --> 00:17:15,220 Dakle, to samo govori Hello World. 323 00:17:15,220 --> 00:17:17,678 Nisam prođe to ime, i što ga ispunjava automatski. 324 00:17:17,678 --> 00:17:22,050 Tako ćemo vidjeti kako je to učinio i kako možemo riješiti taj nadstrešnica možda. 325 00:17:22,050 --> 00:17:26,240 >> Dakle, ovdje, to je vrsta zanimljiv primjer, 326 00:17:26,240 --> 00:17:29,101 ako ste upoznati s načinom prekidač izjava raditi na jeziku. 327 00:17:29,101 --> 00:17:31,350 Recimo ovo je nešto kao, koja vrsta pada kroz, 328 00:17:31,350 --> 00:17:34,266 gdje se zapravo vezani dva različiti putevi do istog funkciju. 329 00:17:34,266 --> 00:17:41,190 Tako smo pričvrstite / Hello put i A / Pozdrav / naziv rute Hello, 330 00:17:41,190 --> 00:17:45,130 a mi navesti using-- vam omogućuje Piton odrediti zadanu funkciju arguments-- 331 00:17:45,130 --> 00:17:48,300 pa ako nema ime, tako ako idemo samo / hello, 332 00:17:48,300 --> 00:17:50,680 on će automatski filtrirati na ime jednak Ništa. 333 00:17:50,680 --> 00:17:55,010 >> Dakle, možemo iscrtati Predložak s name = imenom, 334 00:17:55,010 --> 00:17:59,510 tako da će proći u parametru ime jednaka ovaj naziv funkcija parametra, 335 00:17:59,510 --> 00:18:00,730 u predložak. 336 00:18:00,730 --> 00:18:04,040 To još uvijek ne objašnjava kako je odluči li ispisati Hello World, 337 00:18:04,040 --> 00:18:05,100 ili ispisati svoje ime. 338 00:18:05,100 --> 00:18:08,050 Tako ćemo zapravo izgledaju u samom Predložak, 339 00:18:08,050 --> 00:18:11,610 i vidjeti gdje se koji dolazi iz. 340 00:18:11,610 --> 00:18:18,680 >> Dakle, u ovom predlošku, mi zapravo imaju neke uvjetno logike, 341 00:18:18,680 --> 00:18:20,580 što neki ljudi bi tvrde, zapravo 342 00:18:20,580 --> 00:18:23,730 ne bi trebali imati puno uvjetno logika unutar same svoj predložak. 343 00:18:23,730 --> 00:18:26,310 To bi trebao biti unutar Kontroler, ali za ovaj primjer 344 00:18:26,310 --> 00:18:27,476 to je nešto prilično mala. 345 00:18:27,476 --> 00:18:31,060 Dakle ovdje smo provjeriti, ako je ime, tako Ako ime nije jednaka Ništa, 346 00:18:31,060 --> 00:18:33,130 ako je ime zapravo donesen, onda ćemo 347 00:18:33,130 --> 00:18:36,210 kažu Pozdrav, ime s zaglavlja i nadstrešnica, 348 00:18:36,210 --> 00:18:41,490 sve je to normalno HTML, inače, mi ćemo ispis Pozdrav, Svijet baš normalno. 349 00:18:41,490 --> 00:18:45,820 Dakle, par stvari za primijetiti ovdje o tome kako formatirati templating, 350 00:18:45,820 --> 00:18:49,110 je da sve ove uvjetne izjave, 351 00:18:49,110 --> 00:18:54,475 vrsta kao što su kako smo ga kada PHP želite umetnuti neke PHP, 352 00:18:54,475 --> 00:18:58,380 koristite manje-nego pitanje Mark, to je vrsta analogna ovdje 353 00:18:58,380 --> 00:19:00,140 s {%. 354 00:19:00,140 --> 00:19:02,130 >> Dakle ovdje imamo uvjetnu kôd. 355 00:19:02,130 --> 00:19:05,920 A onda, kada zapravo želite doslovno procijeniti nešto, i ispis 356 00:19:05,920 --> 00:19:08,710 je na zaslonu, možete koristiti dvostruke aparatić. 357 00:19:08,710 --> 00:19:12,310 Dakle, ovdje su dvokrevetne aparatić, a onda ćemo navesti ime, 358 00:19:12,310 --> 00:19:15,500 pa unutar toga, to će procijeniti na ime varijable koje 359 00:19:15,500 --> 00:19:18,860 donesen je u od uzvratiti funkciju predloška, 360 00:19:18,860 --> 00:19:21,484 a ne samo ispis kako, ako smo dobili osloboditi od njih, 361 00:19:21,484 --> 00:19:23,150 to bi samo ispisati riječ "ime". 362 00:19:23,150 --> 00:19:26,340 Dakle, to je nešto što treba paziti. 363 00:19:26,340 --> 00:19:29,792 >> Dakle, još jedna stvar obavijest je da, kad smo 364 00:19:29,792 --> 00:19:31,500 želite koristiti render_template funkcija, 365 00:19:31,500 --> 00:19:34,490 mi zapravo moramo uvoziti to izričito od tikvica. 366 00:19:34,490 --> 00:19:36,915 I to je primjer modularnost tikvica, 367 00:19:36,915 --> 00:19:39,290 da ne moraju uvoziti stvari koje ne trebaju. 368 00:19:39,290 --> 00:19:41,290 Vi samo može donijeti u Funkcije ste zapravo 369 00:19:41,290 --> 00:19:43,450 potrebno, što je ponekad lijepo, tako da ne 370 00:19:43,450 --> 00:19:46,560 imati sve ove funkcije sjedi oko koje ne koristite, 371 00:19:46,560 --> 00:19:49,730 ali, ako zaboravite da vas potrebno je uvesti render_template, 372 00:19:49,730 --> 00:19:52,660 vjerojatno ćete dobiti upozorenje koji će vas obavijestiti o tome. 373 00:19:52,660 --> 00:19:56,700 Dakle, to je templating. 374 00:19:56,700 --> 00:20:01,680 >> Dakle, mi smo pokazali kako se napraviti jednostavne web stranice, 375 00:20:01,680 --> 00:20:04,947 i dodati malo više logike je, u smislu usmjeravanja varijable. 376 00:20:04,947 --> 00:20:08,280 To vam omogućuje da učinite različite stvari na temelju ono URL idete, i onda, dati 377 00:20:08,280 --> 00:20:11,950 HTML malo više smisla Uvjeti kako želite učiniti stvari. 378 00:20:11,950 --> 00:20:14,210 Ne morate staviti sve Vaša HTML u vašem Python, 379 00:20:14,210 --> 00:20:16,640 ali prilično mnogo svaka web aplikacija, 380 00:20:16,640 --> 00:20:21,480 ti si idući u ištanje nekakvu modela podataka povezane s njom. 381 00:20:21,480 --> 00:20:25,560 >> I tako već tradicionalno, to bi biti nešto poput SQL baze podataka. 382 00:20:25,560 --> 00:20:30,280 A možete jednostavno komunicirati izravno s SQL. 383 00:20:30,280 --> 00:20:32,190 Python je, mislim da se zove. 384 00:20:32,190 --> 00:20:33,040 SQLite 3. 385 00:20:33,040 --> 00:20:38,454 Možete jednostavno uvesti SQLite 3 i izvršavanje SQL upita izravno, 386 00:20:38,454 --> 00:20:40,870 ali ja ne znam o vama, ali ja stvarno ne sviđa, jednostavno, 387 00:20:40,870 --> 00:20:42,750 pisanje SQL upita. 388 00:20:42,750 --> 00:20:45,350 Ona teži da se stvarno dugo i komplicirano. 389 00:20:45,350 --> 00:20:49,180 >> I tako, nešto što Volim koristiti je ono što je 390 00:20:49,180 --> 00:20:53,610 poznat kao ORM, koji je objektno-relacijske mapiranje. 391 00:20:53,610 --> 00:20:56,890 I točka od objektno-relacijske mapiranje, 392 00:20:56,890 --> 00:21:00,100 je da postoje dva različita načina na koje možete razmišljati o bazama podataka. 393 00:21:00,100 --> 00:21:03,240 >> Tako je, primjerice da Profesor Malan obično 394 00:21:03,240 --> 00:21:07,660 koristi u razredu, je Excel tablicu, u kojoj imate ove retke i stupce te, 395 00:21:07,660 --> 00:21:10,210 i to je stvarno korisno za kako je zastupljena u SQL 396 00:21:10,210 --> 00:21:13,170 i kako komunicirati s njim, ali još jedan način da se to zapravo 397 00:21:13,170 --> 00:21:16,390 korisno razmišljati o tome ponekad, je u smislu klase i objekte. 398 00:21:16,390 --> 00:21:20,420 >> Dakle, umjesto razmišljanja svakog stola kao vlasništvo 399 00:21:20,420 --> 00:21:23,040 Ovaj redak koji ima određeni informacije, možete zapravo 400 00:21:23,040 --> 00:21:26,100 mislim da je to bio svaki stol je klasa, 401 00:21:26,100 --> 00:21:29,810 i onda svaki primjerak klasa ima određena svojstva. 402 00:21:29,810 --> 00:21:35,110 Dakle, u ovom primjeru, slučajevi klasa su redovi u tablici, 403 00:21:35,110 --> 00:21:37,490 i onda svaki objekt bi biti stupac u tablici. 404 00:21:37,490 --> 00:21:40,840 >> Dakle, ORM da volim koristiti se zove Peewee. 405 00:21:40,840 --> 00:21:43,520 To je stvarno mali, nešto poput tikvice. 406 00:21:43,520 --> 00:21:46,760 Mislim da oni idu dobro zajedno, ali ima puno drugih ORMs 407 00:21:46,760 --> 00:21:47,730 koje možete koristiti. 408 00:21:47,730 --> 00:21:52,180 Više popularan jedan je poznat kao SQLAlchemy, 409 00:21:52,180 --> 00:21:56,050 a ja se ne mogu sjetiti zašto sam prvobitno izabrao Peewee preko SQLAlchemy, 410 00:21:56,050 --> 00:21:58,311 ili bih vam reći zašto sam Mislim da je najbolji, 411 00:21:58,311 --> 00:22:01,060 ali mi jednostavno ide koristiti ovaj jedan jer znam kako ga koristiti. 412 00:22:01,060 --> 00:22:04,760 >> Dakle, jedno pitanje je, zašto treba li gnjaviti pomoću ORM, 413 00:22:04,760 --> 00:22:07,552 umjesto samo izravno pisanja SQL upita? 414 00:22:07,552 --> 00:22:09,760 I mislim najboljem slučaju, je da zapravo ne 415 00:22:09,760 --> 00:22:11,356 napisati SQL upita. 416 00:22:11,356 --> 00:22:14,480 To je puno lakše, jer ja ću vam pokazati, da učiniti stvari kao izbor, umetanjem, 417 00:22:14,480 --> 00:22:16,157 brisanje, osobito stvaranjem tablice. 418 00:22:16,157 --> 00:22:17,990 To je puno lakše napisati klasnu strukturu, 419 00:22:17,990 --> 00:22:22,250 nego što je potrebno izgraditi Napravite Tablica izjava, ali jedno 420 00:22:22,250 --> 00:22:25,710 biti svjesni, je da je ORM će pokušati svoje najbolje 421 00:22:25,710 --> 00:22:28,640 shvatiti što najviše učinkovit SQL upit će biti, 422 00:22:28,640 --> 00:22:30,110 ali ponekad se dobiva krivu. 423 00:22:30,110 --> 00:22:32,660 >> A pogotovo ako ste rad s velikom bazom podataka, 424 00:22:32,660 --> 00:22:35,557 možete primijetiti da upita koji bi trebao biti trčanje brzo, 425 00:22:35,557 --> 00:22:36,640 zapravo traje dulje. 426 00:22:36,640 --> 00:22:40,164 A ako pogledate ispod haube kako ORM je tumačenja da je u SQL, 427 00:22:40,164 --> 00:22:42,080 to bi moglo biti događaj nešto stvarno smiješno, 428 00:22:42,080 --> 00:22:44,371 samo zato što je vrsta Pokazao vaše namjere u krivu. 429 00:22:44,371 --> 00:22:48,080 A, bilo je vrijeme kada Morao sam ga nadjačati, i samo 430 00:22:48,080 --> 00:22:52,429 izvršavati svoje vlastite SQL upita, samo jer je raščlanjivanjem na čudan način. 431 00:22:52,429 --> 00:22:54,220 Dakle, postoji neki iznad glave, samo na putu 432 00:22:54,220 --> 00:22:58,680 da prikuplja vaše izvještaji dolje u SQL. 433 00:22:58,680 --> 00:23:06,200 >> Dakle, pogledajmo super brzo na jednostavan primjer modela podataka 434 00:23:06,200 --> 00:23:07,350 da biste mogli koristiti. 435 00:23:07,350 --> 00:23:11,880 Dakle, ovo je Python koda, i tako Prva stvar koju želite učiniti je iz 436 00:23:11,880 --> 00:23:12,950 Peewee uvoz *. 437 00:23:12,950 --> 00:23:15,850 Dakle, za razliku od tikvica, gdje imate svi ti pojedinačni moduli, 438 00:23:15,850 --> 00:23:18,125 i želite uvesti tikvicu i napisati predložak, i neki drugi 439 00:23:18,125 --> 00:23:20,690 kako ćemo vidjeti kasnije, iz Peewee, možete samo uvesti sve, 440 00:23:20,690 --> 00:23:22,290 jer to je prilično mala knjižnica. 441 00:23:22,290 --> 00:23:26,490 >> Dakle, prva stvar koju želite učiniti je zapravo stvoriti ovaj objekt baze podataka. 442 00:23:26,490 --> 00:23:31,212 Dakle, imate db = SqliteDatabase, a zatim naziv baze podataka. 443 00:23:31,212 --> 00:23:33,170 A to će zapravo stvoriti objekt baze podataka 444 00:23:33,170 --> 00:23:36,230 da možete komunicirati s, s Peewee. 445 00:23:36,230 --> 00:23:40,570 >> A onda, imamo stvarna model koji želimo stvoriti. 446 00:23:40,570 --> 00:23:42,470 Tako stol želimo stvoriti. 447 00:23:42,470 --> 00:23:47,270 Dakle, u roku Peewee, svaki razred ima vlastite tablice u bazi podataka. 448 00:23:47,270 --> 00:23:52,800 Dakle, svih vrsta naslijediti od osnovnog modela, 449 00:23:52,800 --> 00:23:55,960 i glavni M model nešto što je definirano u Peewee. 450 00:23:55,960 --> 00:24:02,162 >> Dakle, sve svoje modele trebao naslijediti kao njihov najviši superclass, 451 00:24:02,162 --> 00:24:04,620 oni bi trebali naslijediti od Model, ali ono što je stvarno cool, 452 00:24:04,620 --> 00:24:07,610 je da zapravo možete imati svoj Modeli naslijediti od drugoga. 453 00:24:07,610 --> 00:24:10,530 I puno vremena, vaš Modeli podataka ne moraju nužno 454 00:24:10,530 --> 00:24:13,754 napraviti lijepo nasljedstvo hijerarhiju, ali vremena u kojem se radi, to je jako lijepo, 455 00:24:13,754 --> 00:24:15,920 jer imate model svojstvena od drugoga. 456 00:24:15,920 --> 00:24:19,710 >> Dakle, definirali smo ovu klasu 'student', koji nasljeđuje model, 457 00:24:19,710 --> 00:24:21,170 i ima tri svojstva. 458 00:24:21,170 --> 00:24:24,080 Ona ima ID, koji je PrimaryKeyField, koji 459 00:24:24,080 --> 00:24:26,920 je nešto što je predviđeno po Peewee, naziv je CharField, 460 00:24:26,920 --> 00:24:28,490 a ocjena je IntegerField. 461 00:24:28,490 --> 00:24:32,260 Dakle, to može i ne mora biti Kako CS50 zapravo pohranjuje sve 462 00:24:32,260 --> 00:24:33,650 razreda studenata. 463 00:24:33,650 --> 00:24:36,060 To nije, ali to je kako bih to učiniti. 464 00:24:36,060 --> 00:24:37,920 >> A onda je, u roku Ovaj razred, i to 465 00:24:37,920 --> 00:24:41,620 je nešto što možete učiniti s Python, možete imati ugniježđena nastavu. 466 00:24:41,620 --> 00:24:43,920 A to je nešto što je potrebno od strane Peewee. 467 00:24:43,920 --> 00:24:47,250 Dakle, ova klasa Meta, imate navesti da je baza podataka 468 00:24:47,250 --> 00:24:49,830 jednaka predmeta koje smo stvorili gore. 469 00:24:49,830 --> 00:24:54,339 I to govori što je datoteka ovaj stol zapravo će se nalaziti u. 470 00:24:54,339 --> 00:24:57,130 Dakle, to je nešto što morate učiniti u roku sve svoje modele. 471 00:24:57,130 --> 00:24:59,380 Vi samo morati navesti u ovoj klasi Meta 472 00:24:59,380 --> 00:25:01,400 da baza podataka je jednak db. 473 00:25:01,400 --> 00:25:03,940 Dakle, ono što ja obično učiniti, ako imam hrpa različitih modela, 474 00:25:03,940 --> 00:25:05,910 je da imam jednu bazu Model, koji obično 475 00:25:05,910 --> 00:25:08,839 samo nazvati "osnovni model" koja ima Meta klasa, 476 00:25:08,839 --> 00:25:10,380 a postavlja baze podataka je jednak db. 477 00:25:10,380 --> 00:25:13,710 I onda sve moje naknadne modela će naslijediti od tog osnovnog klase. 478 00:25:13,710 --> 00:25:16,760 I onda ja ne moram brinuti o postavljanju Meta klase. 479 00:25:16,760 --> 00:25:21,490 >> Dakle, kada se to zapravo dobiva sastaviti dolje u SQL izraza, 480 00:25:21,490 --> 00:25:24,875 to izgleda ovako neugodne stvari dolje Ovdje, "Stvaranje tablica Student ID cijeli broj, 481 00:25:24,875 --> 00:25:26,020 " kako god. 482 00:25:26,020 --> 00:25:30,002 >> I, mislim da je kraći, to SQL upit ovdje, 483 00:25:30,002 --> 00:25:32,960 ali ako pogledate ove klase ovdje možete točno vidjeti što se događa. 484 00:25:32,960 --> 00:25:36,116 Možete vidjeti što vrste polja postoje, ono što oni nazivaju, 485 00:25:36,116 --> 00:25:38,115 i tako, mislim da gledajući ovaj Python koda 486 00:25:38,115 --> 00:25:43,340 je puno više čitati nego pokušavajući napisati ovaj SQL upita. 487 00:25:43,340 --> 00:25:45,990 >> Dakle, da bi se zapravo koristiti bazu podataka, 488 00:25:45,990 --> 00:25:48,470 moramo spojiti na njega u Python. 489 00:25:48,470 --> 00:25:52,770 Dakle, ja obično napisati funkciju pod nazivom initialize_db da se dvije stvari. 490 00:25:52,770 --> 00:25:54,880 Potrebno je u bazi podataka Objekt db i to 491 00:25:54,880 --> 00:25:58,360 spaja na njega, koji je upravo otvara ODSJEK u bazu podataka. 492 00:25:58,360 --> 00:26:00,860 Ako ste samo trčanje, iako web stranice na vašem lokalnom računalu, 493 00:26:00,860 --> 00:26:04,320 to nije super velika stvar brinuti oko spajanja i odvajanja, 494 00:26:04,320 --> 00:26:06,885 ali ako radite je na internetskim stranicama, 495 00:26:06,885 --> 00:26:10,010 želite biti sigurni da je, kad korisnik spaja na njega, kad zatvoriti 496 00:26:10,010 --> 00:26:12,270 web stranica, što isključite tako da nemaju hrpu ljudi povezanih 497 00:26:12,270 --> 00:26:14,480 na svoju bazu podataka odjednom. 498 00:26:14,480 --> 00:26:16,370 >> A onda, kad vam povezivanje na bazu podataka, 499 00:26:16,370 --> 00:26:20,832 želite nazvati db.create_tables, i popis modela za ono što želite 500 00:26:20,832 --> 00:26:21,540 za stvaranje tablice. 501 00:26:21,540 --> 00:26:23,950 Dakle ovdje, ja samo želim stvoriti ga za ovog studenta. 502 00:26:23,950 --> 00:26:28,070 A onda, ono što je važno, je da navesti siguran = true najviše vremena. 503 00:26:28,070 --> 00:26:30,380 Pa što ova izjava će učiniti, je da je to 504 00:26:30,380 --> 00:26:33,580 stvara tablice za Student model, ali samo 505 00:26:33,580 --> 00:26:36,109 ako da tablica ima ne stvorena već. 506 00:26:36,109 --> 00:26:37,400 To je ono što je sigurno navodi se. 507 00:26:37,400 --> 00:26:39,150 Dakle, to neće prebrisati Vaš postojeći stol, 508 00:26:39,150 --> 00:26:41,525 to će samo stvoriti nova stol, ako ne postoji jedan tamo. 509 00:26:41,525 --> 00:26:45,090 Dakle, vi samo mogao stvoriti stolovi jednom pomoću SQL. 510 00:26:45,090 --> 00:26:49,410 I onda se taj baze sjedenje tamo, i zatim spojite svaki put, 511 00:26:49,410 --> 00:26:52,450 ali to je obično lijepo samo stavite u ovom create_tables pozivu, 512 00:26:52,450 --> 00:26:55,550 tako da, ako ikad izbrisati svoje Baza kada pokrenete vaše web 513 00:26:55,550 --> 00:26:57,960 Ponovno app, to će ga ponovno. 514 00:26:57,960 --> 00:27:00,730 >> Dakle, samo bi bili sigurni da je sigurno je navedeno da je istina, 515 00:27:00,730 --> 00:27:03,580 ili ćete pronaći podatke samo uzimajući clobbered svaki put. 516 00:27:03,580 --> 00:27:06,380 A onda, možete jednostavno nazvati initialize_db uspostaviti 517 00:27:06,380 --> 00:27:09,820 veza, i stvoriti tablice ako je potrebno. 518 00:27:09,820 --> 00:27:13,150 >> Dakle, najčešći stvar da ćete želite učiniti, 519 00:27:13,150 --> 00:27:15,920 ili jedan od najčešćih stvari, je zapravo umetanje stvari 520 00:27:15,920 --> 00:27:17,170 u bazu podataka. 521 00:27:17,170 --> 00:27:19,430 I tako, umjesto da napisati umetnuti u 522 00:27:19,430 --> 00:27:21,990 Izjava sa svim navedeno vrijednosti, 523 00:27:21,990 --> 00:27:24,650 zapravo možete nazvati Funkcija na studentske klase. 524 00:27:24,650 --> 00:27:28,200 Dakle, kad stvorite razred koji nasljeđuje od modela, 525 00:27:28,200 --> 00:27:30,200 to je to stvoriti metodu. 526 00:27:30,200 --> 00:27:33,870 >> Dakle, što učiniti klase name.create, i odrediti parametre 527 00:27:33,870 --> 00:27:35,260 da želite proći. 528 00:27:35,260 --> 00:27:39,200 Dakle, ako želim dodati neke učenike našem CS50 stupnja knjiga, primjerice, 529 00:27:39,200 --> 00:27:41,820 Ja ću staviti u Davida, koji ima ocjenom vrlo dobar, on ima 95. 530 00:27:41,820 --> 00:27:45,100 I ja, koji ne radi tako dobro u CS50, imam 50. 531 00:27:45,100 --> 00:27:47,600 I tako je lijepa stvar o što to stvaranje funkcija radi, 532 00:27:47,600 --> 00:27:53,040 je da se vrati na primjer, ili red, da je stvorena u tablici, 533 00:27:53,040 --> 00:27:55,750 pa onda se spremite da u promjenjiva, a rad s njom poslije. 534 00:27:55,750 --> 00:27:58,830 Možete promijeniti okolo, što Ja ću pokazati primjer. 535 00:27:58,830 --> 00:28:03,050 >> Obavijest da nisam moraju navesti ID, 536 00:28:03,050 --> 00:28:09,340 zato jer je PrimaryKeyField, on će se automatski 537 00:28:09,340 --> 00:28:10,930 povećajte ga ako ne navedete. 538 00:28:10,930 --> 00:28:12,250 A, u stvari, vjerojatno Ne treba ga navesti, 539 00:28:12,250 --> 00:28:14,810 jer možda slučajno clobber tuđi ID. 540 00:28:14,810 --> 00:28:16,830 I želite napraviti sigurni da je jedinstven. 541 00:28:16,830 --> 00:28:20,662 >> Dakle, zapravo, najviše uobičajena stvar koju želite učiniti, 542 00:28:20,662 --> 00:28:22,620 vjerojatno odabrati iz baze podataka Nakon što 543 00:28:22,620 --> 00:28:24,078 ima puno informacija tamo. 544 00:28:24,078 --> 00:28:27,360 I tako, ako želite dobiti sve, pa je ekvivalent odaberite zvijezde 545 00:28:27,360 --> 00:28:30,940 od učenika izjave, to samo bi se student.select. 546 00:28:30,940 --> 00:28:34,380 A to će vam vratiti niz sa svim studenta objekata u njoj 547 00:28:34,380 --> 00:28:35,770 koje ponoviti više želite. 548 00:28:35,770 --> 00:28:37,019 Možete dobiti stvari iz nje. 549 00:28:37,019 --> 00:28:39,310 I većinu vremena, ne samo želim raditi odabir, 550 00:28:39,310 --> 00:28:40,935 vi zapravo želite odrediti nešto. 551 00:28:40,935 --> 00:28:44,580 I tako, možete lanac zajedno ove funkcije poziva, 552 00:28:44,580 --> 00:28:48,830 kao i kako bi lanac ste zajedno su navodi u SQL. 553 00:28:48,830 --> 00:28:53,002 Dakle, što možete učiniti student.select ()., Gdje u ovom primjeru. 554 00:28:53,002 --> 00:28:54,710 A onda, možete odrediti uvjete, 555 00:28:54,710 --> 00:28:57,880 samo pomoću normalan Python Logičke izraze provjeriti stvari. 556 00:28:57,880 --> 00:29:02,110 >> Dakle, u ovom slučaju, da želite ograničiti ono što odaberete da, 557 00:29:02,110 --> 00:29:06,790 gdje student.grade jednak 50, i student.name jednaka Ezra, 558 00:29:06,790 --> 00:29:09,130 tako da će samo me izaći iz nje. 559 00:29:09,130 --> 00:29:11,340 I primijetite, jedan stvarno suptilna stvar ovdje je 560 00:29:11,340 --> 00:29:15,570 da, ako želite odrediti AND i / ili ili / ili, 561 00:29:15,570 --> 00:29:19,840 u Python, koju inače koristite, Mislim da je riječ "i" zapravo, 562 00:29:19,840 --> 00:29:23,351 ali ovdje koristite jednu ampersand, što je normalno bitovni operator, 563 00:29:23,351 --> 00:29:25,600 ali u ovom posebnom slučaju, upravo onako Peewee to radi, 564 00:29:25,600 --> 00:29:27,660 koristite singl znak za struju navesti "i". 565 00:29:27,660 --> 00:29:29,451 To je nešto što Ja se miješaju se puno, 566 00:29:29,451 --> 00:29:32,530 ali ne dolazi do toliko u praksi. 567 00:29:32,530 --> 00:29:36,350 >> A onda, nakon što su svi studenti izvan baze podataka, 568 00:29:36,350 --> 00:29:39,420 nakon što ste učinili da ste odaberite i vaš trošenje ili što god, 569 00:29:39,420 --> 00:29:42,334 možete koristiti foreach petlju, baš kao normalno u Python, 570 00:29:42,334 --> 00:29:44,500 s bilo kakve iteratora ili bilo kakve ponude. 571 00:29:44,500 --> 00:29:46,333 Dakle, što možete učiniti za s u student.select (). whe 572 00:29:46,333 --> 00:29:52,930 Re (Student.grade <75), a tako da će ponoviti tijekom svakog studenta u tablici 573 00:29:52,930 --> 00:29:56,260 čija je ocjena manja od 75, što u ovom slučaju, još uvijek je samo mene. 574 00:29:56,260 --> 00:29:59,218 A onda ste mogli učiniti nešto u to petlja, kao i pošaljite mi email 575 00:29:59,218 --> 00:30:01,680 i reci mi da zapravo pretvoriti u moj problem setovima. 576 00:30:01,680 --> 00:30:04,550 >> Dakle, još jedna stvar koju možete to je to je stvarno lako 577 00:30:04,550 --> 00:30:06,460 ažurirati redaka u tablici. 578 00:30:06,460 --> 00:30:08,720 Dakle, ne zaboravite vratiti ovdje, Vaš kada sam umetnuta, 579 00:30:08,720 --> 00:30:11,440 Uzeo sam vrijednost koja je vratio student.create, 580 00:30:11,440 --> 00:30:14,920 i ja ga dodijeliti ime zove Ezra. 581 00:30:14,920 --> 00:30:18,995 I tako sada, možete mijenjati vrijednosti unutar tog stupnja, 582 00:30:18,995 --> 00:30:20,870 baš kao što bi normalno klase u Pythonu. 583 00:30:20,870 --> 00:30:25,060 >> Na taj način možete postaviti ezra.grade = 95 i koje će ažurirati lokalnu kopiju, 584 00:30:25,060 --> 00:30:28,380 ali ako stvarno želite obvezati da promjene u bazi podataka, 585 00:30:28,380 --> 00:30:31,410 moraš zvati ezra.save, tako da se zove .save metoda 586 00:30:31,410 --> 00:30:32,650 na primjer. 587 00:30:32,650 --> 00:30:38,085 >> I tako sada, uspješno su se promijenile moja ocjena u bazu podataka. 588 00:30:38,085 --> 00:30:41,210 Dakle, onda recimo da sam dobiti je uhvaćen mijenja moj razred unutar baze podataka. 589 00:30:41,210 --> 00:30:44,126 Profesor Malan vjerojatno ide da me želiš izbrisati iz razreda, 590 00:30:44,126 --> 00:30:48,630 i tako možete nazvati .delete instanca metoda samo na tu stvar. 591 00:30:48,630 --> 00:30:51,674 >> Dakle, ako ste htjeli otići natrag u ovu petlju ovdje 592 00:30:51,674 --> 00:30:53,465 i zapravo, umjesto slanja e-pošte sve 593 00:30:53,465 --> 00:30:56,577 učenika čiji stupanj manje od 75, što ste htjeli da ih izbrisati, 594 00:30:56,577 --> 00:30:58,660 unutar ove petlje ste mogli pozvati s.delete instancu. 595 00:30:58,660 --> 00:31:04,180 596 00:31:04,180 --> 00:31:07,780 I zadnja stvar koju želite učiniti, je kad god uspostaviti vezu, 597 00:31:07,780 --> 00:31:10,350 i završite sa svojim radom, želite nazvati db.close, 598 00:31:10,350 --> 00:31:13,190 gdje db je da baza podataka prigovoriti da smo imali prije. 599 00:31:13,190 --> 00:31:18,290 A vi želite biti sigurni da je sve dobiva zatvorena iz. 600 00:31:18,290 --> 00:31:18,790 >> Cool. 601 00:31:18,790 --> 00:31:22,410 Pa sad, ja imam primjer aplikacije. 602 00:31:22,410 --> 00:31:26,880 Ja sam nekako pre-made sve jednostavno tako da neće biti bilo živjeti kodiranje 603 00:31:26,880 --> 00:31:30,220 pogreške, ali možemo šetati to i vidjeti kako će staviti tikvice 604 00:31:30,220 --> 00:31:33,685 i Peewee zajedno, i napraviti jednostavnu aplikaciju. 605 00:31:33,685 --> 00:31:38,680 Ja bih to nazvao CS50 dreka, a to je vrsta jednostavnog blog platforme. 606 00:31:38,680 --> 00:31:41,150 >> Dakle, prvo, ja ću ga pokrenuti i pokazati kako to izgleda, 607 00:31:41,150 --> 00:31:42,890 a onda možemo gledati više u kodu. 608 00:31:42,890 --> 00:32:00,470 609 00:32:00,470 --> 00:32:02,830 Ok, pa neka je samo pokrenuti ovo. 610 00:32:02,830 --> 00:32:14,040 611 00:32:14,040 --> 00:32:17,250 Cool, ja ću to malo manji. 612 00:32:17,250 --> 00:32:20,000 To nije vrlo lijepo, samo zato Nisam puno CSS, 613 00:32:20,000 --> 00:32:23,255 ali ono što čini, ona ima ova baza blogu, 614 00:32:23,255 --> 00:32:25,630 i to ide kroz sve ih, i to će ih prikazati 615 00:32:25,630 --> 00:32:28,170 na stranici u poretku najnoviji. 616 00:32:28,170 --> 00:32:30,920 I tako to su samo neke postove da sam sprema u bazu podataka. 617 00:32:30,920 --> 00:32:35,680 >> Dakle, ako želimo stvoriti novi Post, možemo ići Dodaj novi post, 618 00:32:35,680 --> 00:32:42,720 i mi možemo ući titulu Post, tako nešto slično, CS50 seminar. 619 00:32:42,720 --> 00:32:45,360 620 00:32:45,360 --> 00:32:46,735 Wow, stvarno uživati ​​seminar. 621 00:32:46,735 --> 00:32:51,070 622 00:32:51,070 --> 00:32:52,270 >> Cool. 623 00:32:52,270 --> 00:32:56,060 Zatim pritisnete post, a to će preusmjeriti vas vratiti na početnu stranicu, 624 00:32:56,060 --> 00:33:00,039 i onda ćete vidjeti da Zadnji post je dodan. 625 00:33:00,039 --> 00:33:01,580 I dalje imamo sve one tamo. 626 00:33:01,580 --> 00:33:08,080 Tako sada, idemo korak kroz sve broj i vidjeti kako se to provodi. 627 00:33:08,080 --> 00:33:11,995 >> Dakle, mislim da je prva stvar koja Idemo pogledamo, zapravo modeli. 628 00:33:11,995 --> 00:33:14,120 Puno vremena, kada ste projektiranje nešto, 629 00:33:14,120 --> 00:33:17,036 Želite razmišljati najprije o tome idete zastupati svoje podatke, 630 00:33:17,036 --> 00:33:22,915 a zatim dizajn stvari oko toga, tako da sve ima smisla. 631 00:33:22,915 --> 00:33:25,290 I to je zapravo kako sam to učinio kad sam bio stvaranje ovo, 632 00:33:25,290 --> 00:33:28,030 Sjeo sam i mislio, Što želim u postu. 633 00:33:28,030 --> 00:33:32,130 >> Dakle, ovdje imamo istu strukturu da sam spomenuti ranije, 634 00:33:32,130 --> 00:33:33,755 gdje radimo DB = Sqldatabase ('posts.db'). 635 00:33:33,755 --> 00:33:37,840 636 00:33:37,840 --> 00:33:40,980 U stvarnosti, vjerojatno ne želite na tvrdi koda na vaše ime u bazama podataka. 637 00:33:40,980 --> 00:33:43,730 To bi vjerojatno trebalo biti parametar koja je pohranjena negdje, možda 638 00:33:43,730 --> 00:33:45,940 u config file, ali u mali primjer kao što je ovaj, 639 00:33:45,940 --> 00:33:48,310 to je u redu da se hard kôd koji u. 640 00:33:48,310 --> 00:33:53,510 >> Tako sada imamo ovaj post klasu, koja nasljeđuje iz baze modela. 641 00:33:53,510 --> 00:33:56,930 I to je, opet, ID = PrimaryKeyField. 642 00:33:56,930 --> 00:34:02,250 Zapravo, ako ne odredite, ako sam zapravo dobio osloboditi od toga, 643 00:34:02,250 --> 00:34:07,152 onda Peewee ćemo se pobrinuti automatski stvara taj ID polje, 644 00:34:07,152 --> 00:34:09,360 i ona će automatski čine ga PrimaryKey, koji 645 00:34:09,360 --> 00:34:12,485 Mislim da je jako lijepo, jer obično, to je nešto što želite imati, 646 00:34:12,485 --> 00:34:16,239 ali ja bih ga stavio u posebno, Samo tako se sjećam da je tamo. 647 00:34:16,239 --> 00:34:19,480 Ali ako ne navedete da, koji će biti tamo automatski. 648 00:34:19,480 --> 00:34:22,198 >> Dakle, imam datum koji je DateTimeField, a sve 649 00:34:22,198 --> 00:34:24,864 ovi različita područja, ako vas pogledajte Peewee dokumentacije, 650 00:34:24,864 --> 00:34:28,920 to će vam dati popis različitih Vrste polja koje možete koristiti. 651 00:34:28,920 --> 00:34:34,440 Za veći dio, to je analogna na ono što će vidjeti u SQL. 652 00:34:34,440 --> 00:34:37,699 Dakle, tu je CharField, A VarCharFields, TextFields, 653 00:34:37,699 --> 00:34:40,550 koji su jako dugo tekstovi, poput blogu 654 00:34:40,550 --> 00:34:44,460 potencijalno, DateTimeFields, DoubleFields, FloatFields, 655 00:34:44,460 --> 00:34:46,100 sve takve stvari. 656 00:34:46,100 --> 00:34:51,570 >> A možete proći u ostalim argumentima na to što nisam navesti ovdje. 657 00:34:51,570 --> 00:34:55,719 Recimo, na primjer, vi ne želite omogućuju dva postovi imati isti naslov, 658 00:34:55,719 --> 00:34:59,672 možete navesti nešto jedinstveno = Istina, 659 00:34:59,672 --> 00:35:02,880 i to je samo dodatni parametar polje koje kad ga sastavlja dolje 660 00:35:02,880 --> 00:35:06,865 u SQL, to će odrediti da to mora biti jedinstven. 661 00:35:06,865 --> 00:35:09,740 Također možete odrediti nešto poput nije null i sve ostale stvari 662 00:35:09,740 --> 00:35:11,750 normalno raditi u SQL. 663 00:35:11,750 --> 00:35:16,020 Dakle, to je prilično jednostavan Model koji je datum. 664 00:35:16,020 --> 00:35:19,460 Obavijest ovdje, u DateTimeField, Naveden sam što je zadana. 665 00:35:19,460 --> 00:35:22,560 Ja ga je navedeno da se datetime.datetime.now, 666 00:35:22,560 --> 00:35:24,920 zbog načina na koji to dobiva ocjenjuje, 667 00:35:24,920 --> 00:35:28,750 to je zapravo ocjenjuje datetime.now kada 668 00:35:28,750 --> 00:35:32,110 to dobiva umetnuti u bazu podataka. 669 00:35:32,110 --> 00:35:34,760 >> Mislim da je, ja bih provjeriti ovaj, 670 00:35:34,760 --> 00:35:38,222 ali ako si učinio ovako nešto, onda to bi zapravo ocjenjuje da je jednom, 671 00:35:38,222 --> 00:35:40,180 a onda Dio sekunde u kojem će uvijek biti isti. 672 00:35:40,180 --> 00:35:44,240 Dakle, samo ako radite nešto s datetimes, dvostruka provjera 673 00:35:44,240 --> 00:35:47,080 da je to ocjenjivanje, kada zapravo dobiva umetnuta, inače 674 00:35:47,080 --> 00:35:48,780 možda biti zbunjen. 675 00:35:48,780 --> 00:35:51,221 >> Naslov je samo CharField, koji postoji 676 00:35:51,221 --> 00:35:53,970 više argumenata možete proći u navodeći točno koliko dugo 677 00:35:53,970 --> 00:35:56,170 želite da bude, ali ovdje, to stvarno nije važno. 678 00:35:56,170 --> 00:35:58,687 I tekst će biti tekst cijelog poštom, 679 00:35:58,687 --> 00:36:01,020 i da će biti TextField samo zato što želite 680 00:36:01,020 --> 00:36:03,370 kako bi se omogućilo da se prilično dugo niz. 681 00:36:03,370 --> 00:36:05,970 >> Onda smo tu Metu podrazred da je samo 682 00:36:05,970 --> 00:36:11,250 navodi da želimo bazu gdje je to zapravo otvara u 683 00:36:11,250 --> 00:36:14,267 biti DB objekt koji smo ovdje. 684 00:36:14,267 --> 00:36:16,350 I zadnje što imamo ovdje je samo ova funkcija 685 00:36:16,350 --> 00:36:18,120 kako ćemo koristiti s naše glavne aplikacije 686 00:36:18,120 --> 00:36:23,970 inicijalizirati baze podataka za povezivanje je, a zatim stvoriti Post tablicu. 687 00:36:23,970 --> 00:36:26,880 >> Sada, pogledajmo same glavne aplikacije. 688 00:36:26,880 --> 00:36:30,800 Dakle, ovo je dosta malo duže od onih 689 00:36:30,800 --> 00:36:34,840 kako smo vidjeli prije, ali nadamo se ne previše loš. 690 00:36:34,840 --> 00:36:37,140 Dakle, dopustite mi produžiti ovo. 691 00:36:37,140 --> 00:36:38,370 Dobro. 692 00:36:38,370 --> 00:36:42,070 >> Dakle, primijetite i na vrhu sam uvozi cijela hrpa drugih stvari 693 00:36:42,070 --> 00:36:44,129 od tikvica da nemamo stvarno vidio prije. 694 00:36:44,129 --> 00:36:46,670 I nadam se, možemo proći kroz svaki od njih jedan po jedan 695 00:36:46,670 --> 00:36:49,420 i razgovarati malo više o ih, razvrstani prema npr. 696 00:36:49,420 --> 00:36:51,380 Dakle, imamo tikvici a render_template, 697 00:36:51,380 --> 00:36:54,370 što smo vidjeli, ovaj zahtjev objekt, 698 00:36:54,370 --> 00:37:00,400 koji će doći kad gledamo kako oblik da sam zapravo pokazuje 699 00:37:00,400 --> 00:37:01,170 djela. 700 00:37:01,170 --> 00:37:04,850 Preusmjeravanje, koji vam omogućuje da preusmjerite natrag iz stvaranje novih post 701 00:37:04,850 --> 00:37:11,710 natrag na izvornu početnu stranicu, a zatim URL, što je nešto što vam omogućuje 702 00:37:11,710 --> 00:37:15,550 shvatiti gdje se na Web stranica je ta stranica. 703 00:37:15,550 --> 00:37:17,810 >> Dakle, sljedeći što mi je činiti, ja se uvoz 704 00:37:17,810 --> 00:37:21,550 sve informacije iz modela datoteke koje smo upravo gledali. 705 00:37:21,550 --> 00:37:23,140 A, da. 706 00:37:23,140 --> 00:37:28,720 >> Dakle, nešto novo što dolazi kada ste se bave, 707 00:37:28,720 --> 00:37:31,850 osobito baze podataka, je da možete odrediti 708 00:37:31,850 --> 00:37:35,110 funkcija koja dobiva zove prije svaki zahtjev, a funkcija koja dobiva 709 00:37:35,110 --> 00:37:39,690 nazvao nakon svakog zahtjeva, koristeći ovaj Zahtjev funkciju dekoratere app.before. 710 00:37:39,690 --> 00:37:42,324 >> I tako će se izvršiti gdje god je ova funkcija. 711 00:37:42,324 --> 00:37:44,240 To ne mora biti nazvao prije zahtjeva, 712 00:37:44,240 --> 00:37:46,281 ali obično to je nešto pametno nazvati. 713 00:37:46,281 --> 00:37:48,580 714 00:37:48,580 --> 00:37:51,650 Možete odrediti god funkciju Želite li se zove tamo, 715 00:37:51,650 --> 00:37:56,330 pa sam ovo navedeno initialize_db Funkcija da smo imali još u Models 716 00:37:56,330 --> 00:38:02,390 datoteku, tako da prije svakog zahtjev, želite spojiti na bazu podataka. 717 00:38:02,390 --> 00:38:04,560 >> Postoje dvije različite načina na koje možete učiniti. 718 00:38:04,560 --> 00:38:10,830 Možete napravitiapp., Ja Vjerujem da je after_request. 719 00:38:10,830 --> 00:38:13,800 A razlika između after_request i teardown_request, 720 00:38:13,800 --> 00:38:17,590 je da after_request će se dogoditi samo ako je zahtjev zapravo bio valjan. 721 00:38:17,590 --> 00:38:20,440 I tako, samo ako je Zahtjev je bio uspješan, 722 00:38:20,440 --> 00:38:22,490 ako ništa otišao u krivu, ali teardown_request 723 00:38:22,490 --> 00:38:26,300 se događa u slučaju uspješan zahtjev ili u slučaju pogreške. 724 00:38:26,300 --> 00:38:28,252 >> Dakle, obično, želite koristiti teardown_request, 725 00:38:28,252 --> 00:38:30,460 osim ako ne želite učiniti nešto posebno drugačije 726 00:38:30,460 --> 00:38:31,470 u slučaju pogreške. 727 00:38:31,470 --> 00:38:35,122 No, samo za zatvaranje baze podataka, je li to uspije ili ako to ne uspije, 728 00:38:35,122 --> 00:38:37,080 mi želite odspojiti iz baze podataka. 729 00:38:37,080 --> 00:38:41,240 Dakle, to se zove, db.close na db objekt. 730 00:38:41,240 --> 00:38:43,740 >> Obavijest da je teardown_request uzima u izuzetka. 731 00:38:43,740 --> 00:38:46,781 Tako možete provjeriti postoji li doista pogreška kada je zatvaranje, 732 00:38:46,781 --> 00:38:49,390 ali ovdje, nadamo se, tu nisu puno pogrešaka, 733 00:38:49,390 --> 00:38:52,720 tako da smo samo vrsta ignoriranje toga. 734 00:38:52,720 --> 00:38:55,990 >> Ok, a ostatak od njega nije previše loše. 735 00:38:55,990 --> 00:39:02,240 Dakle, kad idemo na početnu stranicu, donio mi ovo home.html predloška 736 00:39:02,240 --> 00:39:03,490 koja će se otvoriti. 737 00:39:03,490 --> 00:39:06,240 Protivnički u post jednak, a što je to 738 00:39:06,240 --> 00:39:10,260 čini se, sjetite imamo ovaj post Model, pa smo odabrali sve postove, 739 00:39:10,260 --> 00:39:13,890 a zatim još jedna stvar koju možete učiniti, možete odrediti WHERE, 740 00:39:13,890 --> 00:39:16,910 možete specificirati naručiti, pa smo se 741 00:39:16,910 --> 00:39:18,820 sve postove koje dobili odabrane, a onda 742 00:39:18,820 --> 00:39:22,590 ih naručiti od strane post.date.descending. 743 00:39:22,590 --> 00:39:25,030 I to će se navesti kada oni zapravo izaći, 744 00:39:25,030 --> 00:39:29,250 najnovija jedan će biti vrlo prvi. 745 00:39:29,250 --> 00:39:31,420 >> A onda, prolazimo da u home.html predložak, 746 00:39:31,420 --> 00:39:34,240 pa neka je zapravo otvaraju da Predložak stvarno brzo, 747 00:39:34,240 --> 00:39:36,760 i pogledajte kako se to radi. 748 00:39:36,760 --> 00:39:42,130 A to nije velika HTML, ali nadam se, možemo se usredotočiti na Python. 749 00:39:42,130 --> 00:39:46,960 >> Dakle, tu je link na dodavanje novih Post, i tako to određuje put 750 00:39:46,960 --> 00:39:51,580 u tikvicu da smo definirati, što je upravo ovdje. 751 00:39:51,580 --> 00:39:56,310 Ovo je novi post rutu, i mi navesti da se ovdje. 752 00:39:56,310 --> 00:40:00,450 I tako to je link koji će zatim ići na toj ruti unutar tikvica poslužitelja. 753 00:40:00,450 --> 00:40:03,820 >> Više zanimljiva stvar je to za petlju ovdje. 754 00:40:03,820 --> 00:40:07,685 Tako smo odredili da je ova Post parametar koji 755 00:40:07,685 --> 00:40:09,560 je prošao u render_template funkcija, 756 00:40:09,560 --> 00:40:13,550 za svaki post u post-a Predmet koji se prošlo u. 757 00:40:13,550 --> 00:40:16,600 Želimo ispisati post naslov, u H1, 758 00:40:16,600 --> 00:40:21,930 a onda u nastavku, želimo ispisati post tekst unutar stava. 759 00:40:21,930 --> 00:40:25,710 >> I ovdje, možemo zapravo pozvati funkciju Python, 760 00:40:25,710 --> 00:40:35,130 tako možemo nazvati strftime, ST-RF-vrijeme, i možete proći u formatu nizu 761 00:40:35,130 --> 00:40:37,064 koju želite ispisati podatke u. 762 00:40:37,064 --> 00:40:39,980 Dakle, to je prilično lijepo da možete Zapravo to zovu Python funkciju 763 00:40:39,980 --> 00:40:41,090 iznutra ovdje. 764 00:40:41,090 --> 00:40:44,370 Ne morate raditi oblikovanje na strana kontroler, jer stvarno, 765 00:40:44,370 --> 00:40:47,770 formatiranje datum je nešto što želite nositi u prikazu. 766 00:40:47,770 --> 00:40:51,480 >> I sve ove posto stvari nije super važno. 767 00:40:51,480 --> 00:40:55,270 Ako ste u potrazi dokumentaciju za funkciju strftime u Python, 768 00:40:55,270 --> 00:40:57,040 što određuje sve to stvari, ali to je 769 00:40:57,040 --> 00:40:59,190 kako, kad smo bili u potrazi na početnoj stranici ovdje, 770 00:40:59,190 --> 00:41:04,440 to formata ovo s lijepo datum, a to određuje AM ili PM, 771 00:41:04,440 --> 00:41:09,410 ali normalno, ako nije imao ovo ovdje, 772 00:41:09,410 --> 00:41:14,024 vjerojatno ćete dobiti neke smeća datum koji nije izgledao jako dobro. 773 00:41:14,024 --> 00:41:15,940 A onda smo odrediti post.text, i ja bi 774 00:41:15,940 --> 00:41:19,460 stavili par redaka ovdje, 775 00:41:19,460 --> 00:41:21,820 staviti neke prostore između svakog posta. 776 00:41:21,820 --> 00:41:26,270 >> Dakle, mislim da je najvažnija što u ovom primjeru, 777 00:41:26,270 --> 00:41:28,697 je da možete koristiti ovu za petlju. 778 00:41:28,697 --> 00:41:30,780 A to je slično stvari koje možete učiniti u PHP-u. 779 00:41:30,780 --> 00:41:32,905 Možete ponoviti kroz, sve dobiva donesen, 780 00:41:32,905 --> 00:41:36,719 i tako, umjesto da se to copy / paste, copy / paste sve HTML, 781 00:41:36,719 --> 00:41:40,010 samo trebate napisati jednom, a zatim možete ponoviti tijekom sve postove. 782 00:41:40,010 --> 00:41:41,510 >> A to je nešto Uobičajeno je da želite 783 00:41:41,510 --> 00:41:44,510 učiniti, kada imate puno podataka, je da je za sve u svoje podatke, 784 00:41:44,510 --> 00:41:48,370 želite učiniti sličnu stvar. 785 00:41:48,370 --> 00:41:51,690 A onda, samo zapamtite, da kad vas želite ispisati nešto izričito 786 00:41:51,690 --> 00:41:54,780 u HTML, koristite dvostruka aparatić ovdje, 787 00:41:54,780 --> 00:41:57,820 ali onda kada želite odrediti neke informacije o stanju, 788 00:41:57,820 --> 00:42:02,430 ili oko for petlje, što koristite posto nosač. 789 00:42:02,430 --> 00:42:08,730 >> Dakle, ide natrag u Python kod, tako da objašnjava 790 00:42:08,730 --> 00:42:12,242 što se događa u glavni Ruta, kad idemo tamo, 791 00:42:12,242 --> 00:42:14,450 to samo pokazuje sve postovi, ali onda se postavlja pitanje 792 00:42:14,450 --> 00:42:17,440 je, kako ćemo zapravo dobiti postovi u bazi podataka, koja 793 00:42:17,440 --> 00:42:18,970 je malo više zanimljiv. 794 00:42:18,970 --> 00:42:23,960 >> Dakle, kad kliknete na novi Post veza, što smo vidjeli ovdje, 795 00:42:23,960 --> 00:42:26,000 vas preusmjerava na ovom obrascu. 796 00:42:26,000 --> 00:42:29,580 A to je samo jednostavan poziv na render_template funkcija, koji je tada 797 00:42:29,580 --> 00:42:32,110 prolazi u novi post u HTML obliku. 798 00:42:32,110 --> 00:42:36,212 Tako ćemo pogledati kako. 799 00:42:36,212 --> 00:42:37,420 Dakle, ovo je vrlo jednostavna. 800 00:42:37,420 --> 00:42:45,110 To je jednostavan HTML oblik koji će izgledati malo poznato, 801 00:42:45,110 --> 00:42:47,380 na temelju oblika u CS50 financija. 802 00:42:47,380 --> 00:42:49,940 I tako smo naveli ovdje, akciju. 803 00:42:49,940 --> 00:42:52,435 I ovdje, ako radite s PHP, normalno je, 804 00:42:52,435 --> 00:42:55,930 će biti nešto poput, create.PHP, ali ovdje 805 00:42:55,930 --> 00:42:59,960 mi zapravo odrediti rutu u tikvicu poslužitelja. 806 00:42:59,960 --> 00:43:02,520 I tako, ovaj put odgovara do stvaranja rute 807 00:43:02,520 --> 00:43:05,680 da smo ovdje, što ćemo ići u u sekundi. 808 00:43:05,680 --> 00:43:07,630 >> I tako smo odredili da to je metoda poslije, 809 00:43:07,630 --> 00:43:09,820 jer želimo poslati ovaj oblik podataka, a obično 810 00:43:09,820 --> 00:43:12,945 kada šaljete podatke iz obrasca, možda želite koristiti POST zahtjev, 811 00:43:12,945 --> 00:43:15,760 Samo tako da ne završiti s ovom velikom, nezgrapan URL. 812 00:43:15,760 --> 00:43:18,970 Ali možete se također može koristiti zahtjev GET, i to prođe u promjenjivu usmjeravanje, 813 00:43:18,970 --> 00:43:21,170 ali za oblicima, to je lijepo na post zahtjev ovdje. 814 00:43:21,170 --> 00:43:24,620 I tako onda, baš kao i ti će učiniti s HTML i PHP, 815 00:43:24,620 --> 00:43:28,420 možete odrediti ove tekstualne unose, a možete odrediti naziv njima, 816 00:43:28,420 --> 00:43:33,490 a to je ime koje će dobiti prošao u zahtjev objekt u tikvicu. 817 00:43:33,490 --> 00:43:36,960 >> I onda imamo Pošalji gumb koji kaže Post. 818 00:43:36,960 --> 00:43:40,760 I ovdje, post je naziv gumb, jer to je blog post, 819 00:43:40,760 --> 00:43:42,700 ali ovdje, post je metoda zahtjev. 820 00:43:42,700 --> 00:43:47,060 Dakle, oni su ista riječ ali zapravo povezani. 821 00:43:47,060 --> 00:43:48,460 Da 822 00:43:48,460 --> 00:43:54,800 >> Vraćajući se u Python koda, kad smo se zove stvoriti metodu, 823 00:43:54,800 --> 00:43:57,702 primijetiti da se ovdje možete zapravo navesti u ruti 824 00:43:57,702 --> 00:44:00,650 metode zahtjev da želite prihvatiti, 825 00:44:00,650 --> 00:44:04,770 pa ovdje sam navesti da ja samo želim prihvatiti Post metodu. 826 00:44:04,770 --> 00:44:09,800 Dakle, ako sam zapravo pokušati posjetiti stranicu izravno, koji se koristi zahtjev GET, 827 00:44:09,800 --> 00:44:11,700 to će mi reći "Metoda nije dopuštena." 828 00:44:11,700 --> 00:44:15,840 >> I tako, morate stranice, nešto poput to stvoriti stranice, koje sam samo 829 00:44:15,840 --> 00:44:20,192 stvarno koristi kao način za obrazac da biste poslali, 830 00:44:20,192 --> 00:44:22,900 možete odrediti da se ne želite da ljudi biti u mogućnosti otići tamo 831 00:44:22,900 --> 00:44:25,650 izravno putem GET zahtjeva, ili ako ne žele, 832 00:44:25,650 --> 00:44:28,580 iz nekog razloga, post zahtjev, možeš samo navesti ovamo, 833 00:44:28,580 --> 00:44:32,720 no u ovom primjeru, samo Želite Post Zahtjev za izlazak. 834 00:44:32,720 --> 00:44:38,700 >> Dakle, kada create_post se zove, kad posjećujemo da putem pošte zahtjev, 835 00:44:38,700 --> 00:44:43,600 kada ići na određeni Ruta, tu je ovaj zahtjev objekt, 836 00:44:43,600 --> 00:44:46,640 i morali smo uvesti Zahtjevi na samom vrhu, 837 00:44:46,640 --> 00:44:49,640 ali tu je ovaj zahtjev Predmet koji se prošlo u, 838 00:44:49,640 --> 00:44:53,210 i možete pristupiti podatke obrasca, koji automatski će se napuni 839 00:44:53,210 --> 00:44:55,070 kada šaljete zahtjev obliku. 840 00:44:55,070 --> 00:44:56,990 >> A onda, ono što ja mislim je stvarno cool, je 841 00:44:56,990 --> 00:45:02,840 da je oblik objekta da bi prošli u, samo Python rječnik koji 842 00:45:02,840 --> 00:45:10,560 sadrži, ako access-- pa evo, neka ja podići HTML pokraj njega, samo 843 00:45:10,560 --> 00:45:17,670 tako da možete imati da kao referencu, da, tako 844 00:45:17,670 --> 00:45:21,060 imena koje smo naveli ovdje za različita područja, tako da 845 00:45:21,060 --> 00:45:23,900 naslov i tekst, što onda samo koristiti one ovdje 846 00:45:23,900 --> 00:45:27,110 kao indeksi u podatke obrasca. 847 00:45:27,110 --> 00:45:28,950 Dakle, to je super povoljno. 848 00:45:28,950 --> 00:45:33,320 >> Pa onda zovemo post.create, koji će stvoriti i automatski umetnuti 849 00:45:33,320 --> 00:45:36,850 ovaj novi post objekt u bazu podataka. 850 00:45:36,850 --> 00:45:40,690 I mislim da je to stvaranje funkcija Ovdje je stvarno super primjer kako 851 00:45:40,690 --> 00:45:44,900 moćna Tikvica se i radi s tim, jer ako se radi nešto 852 00:45:44,900 --> 00:45:48,660 u PHP-u, možda ćete morati učiniti puno valjanosti, 853 00:45:48,660 --> 00:45:51,730 ti bi se onda uspostaviti vezu baze podataka, 854 00:45:51,730 --> 00:45:55,210 ti bi se onda izvršiti SQL upit, 855 00:45:55,210 --> 00:45:59,550 ali ovdje imamo samo ovo lijepo post.create, što možemo onda samo 856 00:45:59,550 --> 00:46:01,520 dobiti podatke iz od zahtjeva objekta, 857 00:46:01,520 --> 00:46:05,370 a zatim ga proći u novi objaviti da smo stvaranja. 858 00:46:05,370 --> 00:46:07,850 >> A onda je posljednja stvar koju želite učiniti, 859 00:46:07,850 --> 00:46:09,630 je preusmjeriti Korisnik natrag do kuće. 860 00:46:09,630 --> 00:46:13,020 I tako smo koristiti ovaj Boca preusmjeravanje funkciju. 861 00:46:13,020 --> 00:46:17,770 I nešto što nismo vidjeli prije, bio taj URL funkcija. 862 00:46:17,770 --> 00:46:21,970 Dakle URL funkcija omogućuje prođe u zapravo ime 863 00:46:21,970 --> 00:46:26,090 od funkcija u vašem Python koda, umjesto određenom načinu 864 00:46:26,090 --> 00:46:26,720 da je na. 865 00:46:26,720 --> 00:46:32,107 >> Tako sam mogao samo tako lako preusmjeriti korisnika smanjiti, 866 00:46:32,107 --> 00:46:37,050 koji će ga poslati natrag kući, ali pomoću URL funkcija je lijepo, 867 00:46:37,050 --> 00:46:39,990 jer ako promijenite mjesto gdje su stvari, 868 00:46:39,990 --> 00:46:44,080 pa recimo da sam promjenu dom biti na / home umjesto toga, 869 00:46:44,080 --> 00:46:47,040 to bi još onda vratiti / kući, jer zapravo ide i gleda 870 00:46:47,040 --> 00:46:50,770 naziv funkcije, i to će vam dati natrag URL za to. 871 00:46:50,770 --> 00:46:52,490 >> Dakle, vrsta na Pretpostavka da si 872 00:46:52,490 --> 00:46:55,489 više vjerojatno da će promijeniti gdje stvari su, osim imena funkcijama. 873 00:46:55,489 --> 00:46:58,840 Možete koristiti ovo stvarno Lijepo URL funkciju. 874 00:46:58,840 --> 00:47:02,470 I jedna stvar biti svjestan to je malo zeznuto, 875 00:47:02,470 --> 00:47:05,750 je da mislite da bi upravo poziv preusmjeriti na URL za, 876 00:47:05,750 --> 00:47:10,600 ali zapravo sve ruta ima Za povratak nekakvu teksta i HTML, 877 00:47:10,600 --> 00:47:14,360 tako da zapravo morati povratak na preusmjeravanje poziva. 878 00:47:14,360 --> 00:47:18,379 Inače, da ćete dobiti nešto nevažeći o ne povratku niz, 879 00:47:18,379 --> 00:47:21,420 jer svi oni moraju vratiti HTML vi zapravo želite učiniti. 880 00:47:21,420 --> 00:47:26,980 >> I tako, kad nazovite preusmjeravanje, to ti preusmjerava na stranicu, 881 00:47:26,980 --> 00:47:30,270 ali zapravo vraća HTML morate izvršiti tu preusmjeravanje. 882 00:47:30,270 --> 00:47:34,430 883 00:47:34,430 --> 00:47:37,110 Vratite se na početnu stranicu. 884 00:47:37,110 --> 00:47:39,200 Tako smo ove dvije različite poglede. 885 00:47:39,200 --> 00:47:40,132 Imamo pogled kući. 886 00:47:40,132 --> 00:47:41,590 Ili, valjda bih trebao reći predloške. 887 00:47:41,590 --> 00:47:44,190 Imamo ove dvije predloške, dom predložak koji 888 00:47:44,190 --> 00:47:48,500 prikazuje sve naše postove, i onda imamo ovo oglasa stvar, 889 00:47:48,500 --> 00:47:52,970 a kad kliknete na post, to ide novom načinu u tikvicu 890 00:47:52,970 --> 00:47:55,920 ali koji put ne mora nužno imaju odgovarajuću predložak. 891 00:47:55,920 --> 00:47:59,290 892 00:47:59,290 --> 00:48:01,560 Ne morate vidjeti ništa, ali još uvijek možete 893 00:48:01,560 --> 00:48:04,090 ima ovo djelo ide iza scene. 894 00:48:04,090 --> 00:48:07,450 I onda se preusmjeravaju Natrag na početnu stranicu. 895 00:48:07,450 --> 00:48:12,230 I svakako, to je lako raditi u nekom ljepšem CSS u predlošku 896 00:48:12,230 --> 00:48:15,580 i čine ovaj izgleda puno ljepše, ali svi glavni logike 897 00:48:15,580 --> 00:48:18,590 postoji u Pythonu. 898 00:48:18,590 --> 00:48:20,020 >> Bilo kakva pitanja o tom primjeru? 899 00:48:20,020 --> 00:48:22,760 Znam da ima puno različite stvari događa tamo, 900 00:48:22,760 --> 00:48:25,341 puno stvari nismo vidjeli prije, ali kao ništa. 901 00:48:25,341 --> 00:48:25,840 Da. 902 00:48:25,840 --> 00:48:28,346 >> PUBLIKA 1: Imate ništa učiniti Posebna pročišćavati podataka koji je 903 00:48:28,346 --> 00:48:29,600 dolaze iz obrasca? 904 00:48:29,600 --> 00:48:31,109 Primijetio sam da si samo rekao "stvoriti" 905 00:48:31,109 --> 00:48:33,900 EZRA ZIGMOND: Da, tako da je Zapravo, to je stvarno dobra stvar. 906 00:48:33,900 --> 00:48:36,350 Dakle, pitanje je, je li potrebno provjeriti i uvjerite se 907 00:48:36,350 --> 00:48:39,190 da su podaci vrijedi i ne bilo kakve ribanje 908 00:48:39,190 --> 00:48:41,840 kako bi bili sigurni da je valjana, jer kao što možete vidjeti ovdje, 909 00:48:41,840 --> 00:48:42,660 Neću to raditi. 910 00:48:42,660 --> 00:48:48,140 Tako ćemo vidjeti što će se dogoditi ako sam post nešto prazan. 911 00:48:48,140 --> 00:48:51,190 Dakle, to će zapravo samo napraviti prazno mjesto i ispuniti u datetime. 912 00:48:51,190 --> 00:48:55,990 >> Dakle, u stvarnosti, što bi vjerojatno želite učiniti nešto slično, 913 00:48:55,990 --> 00:49:04,749 možda navesti ako naslov jednak prazan string, onda nemojte to raditi. 914 00:49:04,749 --> 00:49:07,290 Ili, samo to učiniti ako je naslov nije jednako prazan string. 915 00:49:07,290 --> 00:49:10,330 Tako da zapravo ne automatski voditi brigu o tom ribanje 916 00:49:10,330 --> 00:49:12,820 za vas, tako da još uvijek trebate učiniti. 917 00:49:12,820 --> 00:49:14,330 Da, dobro pitanje. 918 00:49:14,330 --> 00:49:18,497 >> PUBLIKA 2: Da li to ribati za injekciju nastavaka? 919 00:49:18,497 --> 00:49:19,890 Znaš li? 920 00:49:19,890 --> 00:49:22,830 >> EZRA ZIGMOND: Nadam se, Peewee to radi. 921 00:49:22,830 --> 00:49:25,830 Mislim da će sigurno biti lijepa loše knjižnica, ako to nije učinio. 922 00:49:25,830 --> 00:49:29,511 923 00:49:29,511 --> 00:49:32,690 Ne znam točno. 924 00:49:32,690 --> 00:49:34,820 Morao bih pogledati na upita da generira. 925 00:49:34,820 --> 00:49:38,980 Mislim da, ako sam upisali u blog post da nekako izgledala 926 00:49:38,980 --> 00:49:46,370 poput napada SQL injekcije, nešto kao što je ovaj, ako je to 927 00:49:46,370 --> 00:49:49,370 je kao polje zaporke ili nešto, što bi mogli učiniti nešto poput ovoga. 928 00:49:49,370 --> 00:49:53,410 >> Mislim da će i dalje dobili doslovno pošta, 929 00:49:53,410 --> 00:49:59,200 ali mislim da Peewee čini neka vrsta ribanja podataka 930 00:49:59,200 --> 00:50:01,680 prije nego što zapravo izvršava. 931 00:50:01,680 --> 00:50:04,510 >> PUBLIKA 1: Taj tekst polje osmišljen kako bi običan tekst, zar ne? 932 00:50:04,510 --> 00:50:05,710 >> EZRA ZIGMOND: Da, to je. 933 00:50:05,710 --> 00:50:06,465 Da. 934 00:50:06,465 --> 00:50:09,590 Dakle, mislim da su svi, tako da je ovo ispravno ponašanje, da će to učiniti, 935 00:50:09,590 --> 00:50:12,170 No, mislim da Peewee nadamo se napraviti 936 00:50:12,170 --> 00:50:13,780 neka vrsta zaštite na njihovom kraju. 937 00:50:13,780 --> 00:50:16,090 A ako ste htjeli dvostruka provjera da postoji 938 00:50:16,090 --> 00:50:19,530 načini kada generirati upit. 939 00:50:19,530 --> 00:50:22,622 tako da ne morate izvršiti ga izravno. 940 00:50:22,622 --> 00:50:24,330 Morao bih uzeti pogledajte dokumentaciju, 941 00:50:24,330 --> 00:50:27,930 ali zapravo možete vidjeti SQL da se generira, 942 00:50:27,930 --> 00:50:30,840 a pogledajte kako i bi sigurni da je pobjegao stvari. 943 00:50:30,840 --> 00:50:33,700 >> Drugi razlog zašto možda želim pogledajte SQL 944 00:50:33,700 --> 00:50:37,920 da Peewee je izlaza, ako je stvari čini se da ide jako sporo, 945 00:50:37,920 --> 00:50:41,090 možete pogledati i vidjeti što je to zapravo radi, jer je to ponekad 946 00:50:41,090 --> 00:50:44,670 lako slučajno dodavanje u, na način na koji to pišu, 947 00:50:44,670 --> 00:50:47,880 slučajno može imati odaberite cijelu bazu podataka prvi, 948 00:50:47,880 --> 00:50:50,230 a zatim učinite nekakvu operaciju o da, kad stvarno 949 00:50:50,230 --> 00:50:51,320 trebali odabrati podskup. 950 00:50:51,320 --> 00:50:53,560 >> I tako, ako se stvari nisu dosta ide pravo, 951 00:50:53,560 --> 00:50:57,300 to je dobro pogledati zahtjev da zapravo uzimajući generira. 952 00:50:57,300 --> 00:50:57,800 Da. 953 00:50:57,800 --> 00:51:02,100 >> PUBLIKA 2: Kad ste počeli, stavite u luci kao 5000. 954 00:51:02,100 --> 00:51:02,904 >> EZRA ZIGMOND: Da. 955 00:51:02,904 --> 00:51:06,070 PUBLIKA 2: je zadana s Peewee, ili je to nešto što se može promijeniti? 956 00:51:06,070 --> 00:51:10,870 EZRA ZIGMOND: Da, pa Luka je zadana s tikvica. 957 00:51:10,870 --> 00:51:13,061 Ako ga pokrenuti bez navodeći ništa, 958 00:51:13,061 --> 00:51:14,310 automatski će to učiniti. 959 00:51:14,310 --> 00:51:16,060 Vjerujem, ja bih provjeriti ovaj, 960 00:51:16,060 --> 00:51:19,130 ali možete odrediti da u app.run, Mislim da možete učiniti nešto slično, 961 00:51:19,130 --> 00:51:19,629 port = 8080. 962 00:51:19,629 --> 00:51:22,375 963 00:51:22,375 --> 00:51:23,750 Dajmo da pokušate jako brzo. 964 00:51:23,750 --> 00:51:29,100 965 00:51:29,100 --> 00:51:32,230 Da, tako da možete jednostavno odrediti port = 8080, a to će ga pokrenuti tu, 966 00:51:32,230 --> 00:51:36,130 što mislim da, ako biste željeli da ga pokrenuti na IDE, nisam pokušao ovo, 967 00:51:36,130 --> 00:51:38,527 ali mislim da ako vodio ga na port 8080, 968 00:51:38,527 --> 00:51:40,360 vjerojatno bih biti u mogućnosti za pristup poslužitelju, 969 00:51:40,360 --> 00:51:41,870 baš kao što su bili za web stranice. 970 00:51:41,870 --> 00:51:44,390 >> Da, ali to je lako za promjenu da ako 971 00:51:44,390 --> 00:51:48,540 imati bilo kakve poput luka prosljeđivanje stvari koje trebate učiniti. 972 00:51:48,540 --> 00:51:50,410 >> Ima li još pitanja? 973 00:51:50,410 --> 00:51:50,916 Da? 974 00:51:50,916 --> 00:51:53,416 PUBLIKA 1: Dakle, vidio sam u svom modeli koji, kao što ste spomenuli, 975 00:51:53,416 --> 00:51:55,647 morate odrediti baza podataka za svaki objekt. 976 00:51:55,647 --> 00:51:58,105 Da li se dogoditi da znaju, ne da bi ga stvarno lako, ako vas 977 00:51:58,105 --> 00:52:03,210 imaju puno SQLite baza podataka koje želite koristiti za jednu web aplikaciju, 978 00:52:03,210 --> 00:52:07,210 koje možete jednostavno odrediti hrpa različitih one u modelu? 979 00:52:07,210 --> 00:52:11,620 >> EZRA ZIGMOND: Da, neka me otvoriti da se jako brzo. 980 00:52:11,620 --> 00:52:17,570 Dakle, ti si rekao, ako želite imati hrpa različitih nešto, možda 981 00:52:17,570 --> 00:52:22,670 sviđa i studenti, za neke Razlog, nešto slično? 982 00:52:22,670 --> 00:52:26,870 Da, tako da mislim da još uvijek, svaki model 983 00:52:26,870 --> 00:52:30,652 će morati i dalje imati samo jedna baza podataka dodijeljena na njega, 984 00:52:30,652 --> 00:52:32,610 ali ako ste htjeli imati različiti modeli koji 985 00:52:32,610 --> 00:52:35,818 su različiti objekti baze podataka dodijeljena na to, svakako bi mogao učiniti. 986 00:52:35,818 --> 00:52:43,070 Dakle, ako sam stvorio novi, nešto kao ovo, 987 00:52:43,070 --> 00:52:47,000 a sada je to student koji izgleda čudno kao blogu, 988 00:52:47,000 --> 00:52:49,390 Mogao bih navesti da je baze podataka je jednak db_2 ovdje. 989 00:52:49,390 --> 00:52:51,390 Dakle, mislim da je to Glavni način možete učiniti. 990 00:52:51,390 --> 00:52:54,560 991 00:52:54,560 --> 00:52:56,200 >> Cool. 992 00:52:56,200 --> 00:52:58,410 Ima li još pitanja? 993 00:52:58,410 --> 00:53:02,170 >> Dakle, samo se završiti malo malo, ovdje su neke resurse, 994 00:53:02,170 --> 00:53:06,030 a ti slajdovi će biti objavljena na internetu tako da zapravo mogu doći do tih veza. 995 00:53:06,030 --> 00:53:08,500 Najbolji izvori su stvarno dokumentacija za tikvica 996 00:53:08,500 --> 00:53:09,930 i Peewee sebe. 997 00:53:09,930 --> 00:53:12,940 Oni napisao jako dobro, mislim. 998 00:53:12,940 --> 00:53:18,180 Dakle, web stranica Tikvica je ovdje, a imaju Quickstart tutorial koji 999 00:53:18,180 --> 00:53:20,710 će prošetati slično stvari na ono što sam prošao kroz, 1000 00:53:20,710 --> 00:53:23,560 ali ako želite bilo kakve revizije od stvari koje sam otišao, 1001 00:53:23,560 --> 00:53:26,200 ili si mislio da sam objasnio nešto u zbunjujući način, 1002 00:53:26,200 --> 00:53:28,390 oni će imati slične primjere tamo. 1003 00:53:28,390 --> 00:53:31,570 >> Peewee ima dokumentaciju i imaju Quickstart tutorial 1004 00:53:31,570 --> 00:53:34,650 da ide preko glavnih parametara koji bi željeli koristiti. 1005 00:53:34,650 --> 00:53:38,900 Dakle, ono što sam govorio o s jedinstveni, a navode zadane postavke, 1006 00:53:38,900 --> 00:53:42,710 različite vrste polja koja možete koristiti, one će sve biti tamo. 1007 00:53:42,710 --> 00:53:44,690 >> Također, ako imate pitanja o Peewee, 1008 00:53:44,690 --> 00:53:47,530 a možete ih objaviti na stackoverflow, momak koji je napravio Peewee zapravo 1009 00:53:47,530 --> 00:53:49,500 ide dalje i odgovori one ponekad. 1010 00:53:49,500 --> 00:53:53,200 Ako imate pitanje, nadam se on će biti u mogućnosti odgovoriti, 1011 00:53:53,200 --> 00:53:54,867 jer on je napisao cijelu stvar. 1012 00:53:54,867 --> 00:53:56,700 Mislim da je sve Htjela sam pokriti. 1013 00:53:56,700 --> 00:53:58,930 Hvala izlazili. 1014 00:53:58,930 --> 00:54:02,688