1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:03,227 [Predvaja glasba] 3 00:00:03,227 --> 00:00:04,705 4 00:00:04,705 --> 00:00:05,830 Ezra ZIGMOND: Živjo, vsi. 5 00:00:05,830 --> 00:00:08,020 Hvala za obisk ven danes. 6 00:00:08,020 --> 00:00:10,660 Ta seminar je "Python Web Apps z bučko. " 7 00:00:10,660 --> 00:00:14,510 >> Torej, bom govoril malo o tem, zakaj 8 00:00:14,510 --> 00:00:17,400 boste morda želeli uporabiti Flask, da bi spletne aplikacije z Python, v nasprotju 9 00:00:17,400 --> 00:00:21,556 nekaterih drugih okvirih tam, kot je Django, ki je najbolj znana. 10 00:00:21,556 --> 00:00:24,330 Podnaslov je "in peewee ", ki je nekaj 11 00:00:24,330 --> 00:00:27,250 bomo govorili o tem, kako za interakcijo z bazami SQL. 12 00:00:27,250 --> 00:00:29,610 To omogoča zelo lepo. 13 00:00:29,610 --> 00:00:32,390 >> Torej, tukaj je samo hiter potek kaj hočem, da gredo čez. 14 00:00:32,390 --> 00:00:35,520 Torej, najprej samo ena drsna da se dogaja, da so nestrpne, 15 00:00:35,520 --> 00:00:38,530 ki je, kako dobiti vse ustanovljen na vašem računalniku. 16 00:00:38,530 --> 00:00:41,760 Bom se dokazovanje to na moji lokalni Mac računalniku, 17 00:00:41,760 --> 00:00:45,220 samo zato, ker to je, če sem to storil Prej sem najbolj udobno z njim, 18 00:00:45,220 --> 00:00:48,510 vendar je to vsekakor mogoče na CD50 IDE. 19 00:00:48,510 --> 00:00:52,050 >> Torej, po tem, rad bi uvesti kaj Flask je, 20 00:00:52,050 --> 00:00:55,089 in vas prepričali, zakaj bi ga uporabili v prvi vrsti. 21 00:00:55,089 --> 00:00:56,880 Potem bom dal hitro Primer, kaj si 22 00:00:56,880 --> 00:01:00,550 lahko storite v bučko, hiter primer o tem, kaj lahko storite v peewee, 23 00:01:00,550 --> 00:01:05,010 in potem sem vam bo pokazal bolj popoln primer uporaba 24 00:01:05,010 --> 00:01:07,520 da sem dal skupaj, da smo lahko sprehodite skozi skupaj. 25 00:01:07,520 --> 00:01:10,040 >> In potem končno, v zadnji slide, imam 26 00:01:10,040 --> 00:01:12,730 nekateri viri, da si pogledate na spletu, za več informacij. 27 00:01:12,730 --> 00:01:15,560 To ni popoln tutorial kako uporabljati bučko. 28 00:01:15,560 --> 00:01:18,140 In bom upam, da zapusti nekaj časa za vprašanja. 29 00:01:18,140 --> 00:01:21,050 Kdo gledal lokalno, samo podobno, zakričal na sredini 30 00:01:21,050 --> 00:01:22,340 če imate kakršnakoli vprašanja. 31 00:01:22,340 --> 00:01:27,150 >> Tako hitra montaža stvari, Če želite slediti skupaj, 32 00:01:27,150 --> 00:01:29,240 ali če želite, da bi dobili ta up na vašem računalniku, 33 00:01:29,240 --> 00:01:32,440 Bom se uporabljajo Python 2.7.10. 34 00:01:32,440 --> 00:01:35,860 Bučko deluje z Python 3, ampak mi je všeč 35 00:01:35,860 --> 00:01:38,660 uporabo Python 2, ker je nekateri Python paketov, ki 36 00:01:38,660 --> 00:01:40,910 ne delujejo s 3 še. 37 00:01:40,910 --> 00:01:44,800 Če ste pip nameščen, ki je vodja Python paket, 38 00:01:44,800 --> 00:01:48,190 Mislim, da če vaš Python je večja ali enaka 2.7.9, 39 00:01:48,190 --> 00:01:52,220 ste ga že nameščen, je super enostaven za namestitev teh paketov. 40 00:01:52,220 --> 00:01:54,990 >> Lahko pa pip namestite Bučko, pip namestite peewee, 41 00:01:54,990 --> 00:01:58,600 Običajno boste morali teči sudo samo tako da so dovoljenja izšlo. 42 00:01:58,600 --> 00:02:01,080 In, če ste z uporabo super starejšo verzijo Python, 43 00:02:01,080 --> 00:02:05,100 Priporočam posodabljanju Python, ali z uporabo EasyInstall namestiti pip. 44 00:02:05,100 --> 00:02:09,180 45 00:02:09,180 --> 00:02:11,120 Torej, naslednjič, vprašanje je, kaj je bučko? 46 00:02:11,120 --> 00:02:13,280 In mislim, najprej smiselno vprašanje, sem se spraševal, 47 00:02:13,280 --> 00:02:15,585 za dolgo časa je, kaj je spletna aplikacija? 48 00:02:15,585 --> 00:02:17,960 Ker je to beseda, ki sem misliš, da se vrže okoli veliko 49 00:02:17,960 --> 00:02:19,240 da nisem zares vedel. 50 00:02:19,240 --> 00:02:22,340 In mislim, da je najboljša Primer, kaj je spletna aplikacija je, 51 00:02:22,340 --> 00:02:26,960 Res je CS50 Finance, kjer to ni res samo spletno stran, 52 00:02:26,960 --> 00:02:29,320 ampak to je nekaj, kar vas bi nekako interakcijo z. 53 00:02:29,320 --> 00:02:31,736 Obstajajo uporabniških računov in vse vrste različnih stvari. 54 00:02:31,736 --> 00:02:35,010 Torej, kje točno si narišite črta med tem, kaj je spletna stran, 55 00:02:35,010 --> 00:02:38,780 in kaj je spletna aplikacija, ki je nekako samovoljno, ampak mislim, da je ideja, 56 00:02:38,780 --> 00:02:42,110 to je nekaj več kot le spletno stran in to je koristno vlogo. 57 00:02:42,110 --> 00:02:46,081 >> Torej, Bučka je okvir za izdelavo spletnih aplikacij z uporabo Python. 58 00:02:46,081 --> 00:02:48,330 In upajmo, da do konca o tem, te bom prepričal 59 00:02:48,330 --> 00:02:52,210 da bi ga lahko dejansko napisati nekaj kot CS50 Finance uporabo Python, ki sem 60 00:02:52,210 --> 00:02:53,950 tako kot veliko bolje, kot so PHP, osebno. 61 00:02:53,950 --> 00:02:57,320 >> Torej Bučka je, pravijo microframework, s katero je 62 00:02:57,320 --> 00:02:59,800 pa pomeni, da je zelo preprosto, vendar razširljiv. 63 00:02:59,800 --> 00:03:02,980 Torej, to je samo tisto, kar potrebujete, če pa želite več funkcij, 64 00:03:02,980 --> 00:03:04,522 to je enostavno, da bi jih v. 65 00:03:04,522 --> 00:03:06,480 Ampak samo zato, ker je to microframework, ne 66 00:03:06,480 --> 00:03:08,960 pomeni, da je samo za male projekte. 67 00:03:08,960 --> 00:03:12,590 Imam povezavo tukaj, ki pravi, da Obama uporablja Flask v letu 2012 68 00:03:12,590 --> 00:03:14,410 za svojo kampanjo Spletna stran, ki upajmo, 69 00:03:14,410 --> 00:03:16,937 je nekaj uspehov. 70 00:03:16,937 --> 00:03:18,770 Ampak stvar, ki sem Res mi je všeč o bučko 71 00:03:18,770 --> 00:03:22,401 je v tem, da ne res kakršno koli odločitev za vas. 72 00:03:22,401 --> 00:03:24,150 Samo zato, ker smo govorimo o spletnih aplikacij, 73 00:03:24,150 --> 00:03:26,940 Moram ga primerjati z Ruby na Tirnice in Django, ki sta 74 00:03:26,940 --> 00:03:30,450 so veliko okviri, vendar oba domnevanja 75 00:03:30,450 --> 00:03:33,600 o tem, kako želite interakcijo z bazami podatkov, 76 00:03:33,600 --> 00:03:36,900 kako želite predstaviti svoje pogledi, in oni so definitivno 77 00:03:36,900 --> 00:03:38,850 dobri vidiki na to. 78 00:03:38,850 --> 00:03:41,490 >> Na primer, Ruby na tirih ima to aktivno sistem evidentiranja, 79 00:03:41,490 --> 00:03:43,100 kar je res lepo način za interakcijo s podatki, 80 00:03:43,100 --> 00:03:45,960 vendar, če želite uporabljati Ruby na Tirnice, ste nekako vezani na to. 81 00:03:45,960 --> 00:03:47,835 Toda z bučko, kot bom vam pokažem, s peewee, 82 00:03:47,835 --> 00:03:49,830 lahko uporabite karkoli vrste podatkovne baze, kar želite, 83 00:03:49,830 --> 00:03:53,980 in lahko samo potegnite, da se v kot razširitev v bučko. 84 00:03:53,980 --> 00:03:56,350 >> Torej, to je, zakaj sem res kot bučko, to je, da je to 85 00:03:56,350 --> 00:04:01,170 ne pomeni, da predpostavke za vas temelji na stvari, ki jih ne potrebujete zares. 86 00:04:01,170 --> 00:04:04,440 >> Torej, zakaj bi morali uporabljati Flask? 87 00:04:04,440 --> 00:04:08,230 Prednosti so, da samo ima res temeljne značilnosti 88 00:04:08,230 --> 00:04:09,420 vzidani, ki jih potrebujete. 89 00:04:09,420 --> 00:04:11,980 Torej, vam ni treba skrbeti za razumevanje cel kup stvari 90 00:04:11,980 --> 00:04:13,175 da ne boste res potrebujejo. 91 00:04:13,175 --> 00:04:15,060 Nimate morali skrbeti o izklopu funkcije 92 00:04:15,060 --> 00:04:16,620 da ne boste res potrebujejo. 93 00:04:16,620 --> 00:04:21,082 >> In, kot sem že omenil, da je super preprosto dodate v podaljšanj stvari 94 00:04:21,082 --> 00:04:21,790 da si morate. 95 00:04:21,790 --> 00:04:24,700 Nekateri izmed njih, Bučka ima njihova podpora za to. 96 00:04:24,700 --> 00:04:28,230 Torej je nekaj, kar ti Flask admin, kar odraža, da admin 97 00:04:28,230 --> 00:04:32,060 Plošča, ki Django zagotavlja, ki vam daje lepo vidno pot 98 00:04:32,060 --> 00:04:33,405 za upravljanje vaše spletne strani. 99 00:04:33,405 --> 00:04:35,280 Ampak še enkrat, če ste kar nekaj preprostega, 100 00:04:35,280 --> 00:04:39,550 vam verjetno ne potrebujete veliko admin panel, tako da mislim, da je super lepo. 101 00:04:39,550 --> 00:04:45,940 In slabosti so, da imate manj moči iz škatle. 102 00:04:45,940 --> 00:04:49,660 Torej, ko ste prvič odprli stekleničko, in v svojem programu Python, 103 00:04:49,660 --> 00:04:53,150 ste samo tip z bučko Uvoz * ali karkoli, 104 00:04:53,150 --> 00:04:55,957 ne boste ravno dobil vse funkcije, boste morda želeli. 105 00:04:55,957 --> 00:04:58,540 In tako da boste morali bolj eksplicitno seznam značilnosti, ki jih želite. 106 00:04:58,540 --> 00:05:01,990 Torej, to je ena pomanjkljivost, vendar sem mislim, da je za gradnjo majhen web 107 00:05:01,990 --> 00:05:04,782 aplikacije, kot bom se prikazuje ste, da to ni res problem. 108 00:05:04,782 --> 00:05:07,281 In kaj je zadnja stvar, ki je naj bi reči, ki je typo, 109 00:05:07,281 --> 00:05:10,240 je, da obstajajo manj standardizirana konvencij za kako uporabljati stekleničko, 110 00:05:10,240 --> 00:05:12,400 samo zato, ker tam ni toliko ljudje, ki ga uporabljajo strokovno 111 00:05:12,400 --> 00:05:13,191 v primerjavi z Django. 112 00:05:13,191 --> 00:05:16,380 Torej, če pogledaš kaj podobnega, "kako naj storim x" v Django, 113 00:05:16,380 --> 00:05:18,190 boste verjetno našli. 114 00:05:18,190 --> 00:05:20,260 >> Tam je dobra zasnova vzorci, ki jih lahko uporabite, 115 00:05:20,260 --> 00:05:22,660 vendar z bučko, to je nekako gredo svojo pot, 116 00:05:22,660 --> 00:05:24,850 samo zato, ker je to precej majhna knjižnica. 117 00:05:24,850 --> 00:05:27,100 Torej tistih, ki so slabosti, ampak mislim, da 118 00:05:27,100 --> 00:05:29,370 da je še vedno dobra knjižnica za uporabo. 119 00:05:29,370 --> 00:05:31,909 >> Torej, kaj je samo skoči naravnost v bučko. 120 00:05:31,909 --> 00:05:34,200 To je definitivno ne bo za popoln vaje, 121 00:05:34,200 --> 00:05:37,480 ampak to je, da bi vam idejo kako strukturirati stvari, 122 00:05:37,480 --> 00:05:40,790 in tako se počutite udobno dogaja off in gledaš dokumentacijo 123 00:05:40,790 --> 00:05:42,570 in hočejo izvedeti več. 124 00:05:42,570 --> 00:05:48,500 >> Torej, mi odpirajo res Preprost primer na prvi, 125 00:05:48,500 --> 00:05:50,737 in ti, kaj to pokazati Izgleda, in potem bomo 126 00:05:50,737 --> 00:05:52,070 ga razčleniti malo več. 127 00:05:52,070 --> 00:05:56,160 >> Torej, ta tukaj, kaj mi to tekmovanje v teku. 128 00:05:56,160 --> 00:06:06,800 129 00:06:06,800 --> 00:06:09,750 Torej, sem zdaj moja vloga teče. 130 00:06:09,750 --> 00:06:15,910 Grem odpreti Safari, in to je tekmovanje v teku na mojem krajevnem gostitelju. 131 00:06:15,910 --> 00:06:19,360 Tako da sem šele tekoč, da bo ta večji. 132 00:06:19,360 --> 00:06:23,960 Ampak localhost: 5000 133 00:06:23,960 --> 00:06:27,650 >> In tako je zdaj, vse to pa je, ko obiščete spletno stran, 134 00:06:27,650 --> 00:06:31,490 se natisne "Hello Flask" ki ni zelo koristno, 135 00:06:31,490 --> 00:06:34,630 ampak mislim, da je kul, da v tej mali datoteki tukaj, 136 00:06:34,630 --> 00:06:37,390 imamo spletni strežnik teče da je tiskanje nekaj. 137 00:06:37,390 --> 00:06:40,500 Torej, kaj je dejansko videti na kodo za sekundo, 138 00:06:40,500 --> 00:06:43,080 in jo razčleniti malo. 139 00:06:43,080 --> 00:06:45,260 Je velikost dobra za vsakogar tukaj? 140 00:06:45,260 --> 00:06:51,560 >> Torej, upam, da ste nekoliko udobno uporabo Python. 141 00:06:51,560 --> 00:06:55,820 Jaz sem ob predpostavki, da bomo lahko ogledate na Python in branje skozi njo. 142 00:06:55,820 --> 00:06:59,290 Če imate kakršna koli vprašanja o karkoli, lahko grem tudi čez to. 143 00:06:59,290 --> 00:07:03,974 >> Torej, v prvi vrstici je od Bučka, uvažamo, Flask s kapitalom "F" 144 00:07:03,974 --> 00:07:06,140 ki je nekako vse ključne funkcije, ki jih potrebujete. 145 00:07:06,140 --> 00:07:08,890 Kadarkoli pišete datoteko in uporabo Bučka, 146 00:07:08,890 --> 00:07:12,120 boste želeli uvoziti, da samo zato, ker da ima vse glavne stvari. 147 00:07:12,120 --> 00:07:15,400 Naslednja stvar, ki jo storite, je, da smo pokličite to funkcijo Flask, samo 148 00:07:15,400 --> 00:07:19,270 ustvariti aplikacijo predmeta, in ste vedno tekoč, da želijo, da to storim. 149 00:07:19,270 --> 00:07:25,960 >> In potem, skoki navzdol na Dno hitro, ta del tukaj je, 150 00:07:25,960 --> 00:07:28,760 "if_name _ ==" _ main_ '", ki je nekako konvencije Python. 151 00:07:28,760 --> 00:07:32,750 Torej bo to izvršiti le, če vas zagnati to datoteko neposredno uporablja Python. 152 00:07:32,750 --> 00:07:36,040 Potem, pravimo app.run, ki bo dejansko začeti app dogaja. 153 00:07:36,040 --> 00:07:39,570 >> Torej, to je glavna zgradba, ki boste imeli pri kakršnikoli uporabi bučko, 154 00:07:39,570 --> 00:07:48,550 se boste morali to app = Flask (_name_), nato app.run. 155 00:07:48,550 --> 00:07:54,940 >> Torej, dve stvari, ki jih imam tukaj, so tisto, čemur pravimo poti. 156 00:07:54,940 --> 00:07:57,150 Torej, kaj je govoril o usmerjanje malo več. 157 00:07:57,150 --> 00:07:58,430 Jaz bom šel nazaj na slide. 158 00:07:58,430 --> 00:08:02,540 >> Torej je najbolj temeljno koncept v Bučko usmerjanju. 159 00:08:02,540 --> 00:08:06,750 In to je ideja, da vas dodelite funkcije v Python 160 00:08:06,750 --> 00:08:11,280 na določene naslove na vaši spletni strani. 161 00:08:11,280 --> 00:08:13,930 Torej, kadar hočeš ustvariti novo pot, 162 00:08:13,930 --> 00:08:16,500 uporabite to @ app.route Funkcija pleskar. 163 00:08:16,500 --> 00:08:19,770 Torej, če ste seznanjeni z Funkcija dekoraterji v Python, 164 00:08:19,770 --> 00:08:24,160 je ta koncept, ki upamo ste vzeli funkcijo 165 00:08:24,160 --> 00:08:26,800 in jo obdajajo z nečim drugim. 166 00:08:26,800 --> 00:08:30,140 >> Torej res, kaj ta pleskar počne, je, da ima funkcijo pod njo, 167 00:08:30,140 --> 00:08:33,409 in dodaja več informacij z njim, ampak kaj Bučka dejansko 168 00:08:33,409 --> 00:08:37,480 ne bi se to zgodilo, ni super ključnega pomena, ampak tisto, kar je pomembno, 169 00:08:37,480 --> 00:08:43,640 je, da preden poti, ki jih dal to @ app.route, in nato 170 00:08:43,640 --> 00:08:46,480 naslov poti, tako da poševnica je tisto, kar smo 171 00:08:46,480 --> 00:08:48,360 videli, ko smo pravkar odprli spletno stran. 172 00:08:48,360 --> 00:08:49,580 Tako da je domača stran. 173 00:08:49,580 --> 00:08:51,037 To je samo poševnica pot. 174 00:08:51,037 --> 00:08:52,370 In potem moraš to funkcijo. 175 00:08:52,370 --> 00:08:54,453 Ime funkcije lahko karkoli hočeš. 176 00:08:54,453 --> 00:08:56,930 To ne bi nujno storiti s poti. 177 00:08:56,930 --> 00:08:59,440 In potem, kar Funkcija donos, 178 00:08:59,440 --> 00:09:01,730 Funkcija mora vrniti niz. 179 00:09:01,730 --> 00:09:03,740 In da je niz lahko vsebujejo HTML ali karkoli, 180 00:09:03,740 --> 00:09:06,920 in da je v resnici, kaj boste dobili vrnil v vašem spletnem brskalniku kot HTML, 181 00:09:06,920 --> 00:09:08,200 in bo postal to. 182 00:09:08,200 --> 00:09:12,030 >> Torej je to ista koda da je iz primera 183 00:09:12,030 --> 00:09:16,430 da sem tekel, tako da, ko smo obiskali slash, poziva funkcijo Hello World, ki 184 00:09:16,430 --> 00:09:20,470 samo vrne niz, Hello Bučka, in da dobi natisnjeno na zaslonu. 185 00:09:20,470 --> 00:09:27,290 >> Torej je še en primer, ki je, ko obiščete / zdravo, 186 00:09:27,290 --> 00:09:30,370 se natisne Hello Word, ki bi morali pravzaprav reči, Hello World, 187 00:09:30,370 --> 00:09:32,010 ampak kaj je pretvarjal, da je bilo namerno. 188 00:09:32,010 --> 00:09:35,140 Torej, kaj je pull up resnično hitro. 189 00:09:35,140 --> 00:09:41,290 >> Torej, če greš na localhost / zdravo, bo zdaj natisniti nekaj drugega. 190 00:09:41,290 --> 00:09:45,680 Torej, to je samo na hitro primer, kako lahko ustvarite dve različni poti. 191 00:09:45,680 --> 00:09:50,630 >> Torej, kolikor to ni zelo koristno, ne obstaja cel kup lahko storite, 192 00:09:50,630 --> 00:09:55,360 si lahko samo storiti vse, da se z imajo različne strani HTML, 193 00:09:55,360 --> 00:09:58,000 in ko obiščete določeno Stran je samo naloži stran. 194 00:09:58,000 --> 00:10:00,864 Torej, poglejmo nekaj več uporabne stvari, ki jih lahko storite. 195 00:10:00,864 --> 00:10:03,780 Torej, ena stvar, ki jo boste morda morali opazili v primeru, da sem potegnil 196 00:10:03,780 --> 00:10:07,160 up je, da sem app.run (debug = True). 197 00:10:07,160 --> 00:10:09,580 In tako, kaj je to debug argument pa je 198 00:10:09,580 --> 00:10:14,600 da ko zagnati spletni strežnik, ko ste v svoji vlogi, 199 00:10:14,600 --> 00:10:18,100 Če spremenite datoteko, bo to samodejno osvežite strežnik. 200 00:10:18,100 --> 00:10:21,160 >> In tako ne boste imeli, da dejansko restart Python, ki je super uporabna. 201 00:10:21,160 --> 00:10:24,020 Jaz lahko dokažejo, da. 202 00:10:24,020 --> 00:10:26,960 Naj dvigni svojo kodo z slovnične napake v njem, 203 00:10:26,960 --> 00:10:30,420 in se pretvarjati, da je tipkarska napaka je dal namensko poučnimi namene. 204 00:10:30,420 --> 00:10:31,625 Torej, kaj je dodati to hrbet. 205 00:10:31,625 --> 00:10:33,140 Torej, zdaj pa pravi, Hello World. 206 00:10:33,140 --> 00:10:34,410 Jaz ga bo rešil. 207 00:10:34,410 --> 00:10:36,540 In če bomo potegnite nazaj gor terminal, boste 208 00:10:36,540 --> 00:10:39,520 pravijo, da je ponovni zagon, ker je zaznal spremembo, 209 00:10:39,520 --> 00:10:43,620 in zdaj, ko smo ponovno naložite to stran, se bo izpisal pravilno stvar. 210 00:10:43,620 --> 00:10:45,630 >> Torej debug je super uporaben za to. 211 00:10:45,630 --> 00:10:48,740 Tudi, če imate vrsta nesreče, tako da 212 00:10:48,740 --> 00:10:54,370 dovolite mi, da ta aplikacija crash ki jih imajo, da se ne vrne niz. 213 00:10:54,370 --> 00:10:57,540 Torej, kaj je samo da imajo vrne None iz nekega razloga. 214 00:10:57,540 --> 00:11:00,810 In potem, ko sem obiskal to stran, bo to samo crash, 215 00:11:00,810 --> 00:11:04,465 vendar pa je strežnik samo ne crash, ga dejansko vam daje super uporabne nazaj 216 00:11:04,465 --> 00:11:06,490 sled vse, kar je šlo narobe. 217 00:11:06,490 --> 00:11:10,050 In kaj je res lepo, je, da na vsakem koraku v tem izsledil, 218 00:11:10,050 --> 00:11:14,260 lahko bi odprli interaktivno shell tukaj, in nekako izpisal kaj 219 00:11:14,260 --> 00:11:17,780 spremenljivke želite si oglejte. 220 00:11:17,780 --> 00:11:21,054 >> In tako debugging je res koristno za kipec 221 00:11:21,054 --> 00:11:23,470 kaj se dogaja z vašim strežnik, ne le ogleda 222 00:11:23,470 --> 00:11:28,201 nekaj v PHP kot 500 notranji napaka strežnika, ki je super neuporabna. 223 00:11:28,201 --> 00:11:30,700 Ena stvar, da se zavedajo, je da če si dal svojo aplikacijo na spletu 224 00:11:30,700 --> 00:11:34,260 tako da je vidno javnosti, si nikoli želeli zapustiti debug način naprej, 225 00:11:34,260 --> 00:11:37,320 ker ljudje lahko dejansko uporabiti to konzolo, ki sem 226 00:11:37,320 --> 00:11:39,150 je pokazala, da izvede poljubno kodo. 227 00:11:39,150 --> 00:11:42,120 >> Tako da lahko natisnete kot vsaka tajne kode imate tam, 228 00:11:42,120 --> 00:11:44,755 jih lahko ogledate na točno kako je vaša spletna stran deluje. 229 00:11:44,755 --> 00:11:46,630 Torej, to je res uporabno za testiranje, vendar vedno 230 00:11:46,630 --> 00:11:50,090 poskrbite, da ga vzamete ven, preden vi objaviti kaj na spletu. 231 00:11:50,090 --> 00:11:56,640 >> Torej, ko boste uporabljali nekaj kot so PHP, da je ta ideja 232 00:11:56,640 --> 00:11:58,920 da lahko prenese informacij med spletnimi stranmi 233 00:11:58,920 --> 00:12:03,620 s tem da informacije dejansko v URL-ju, ki je zahtevek za GET, 234 00:12:03,620 --> 00:12:07,490 ampak v bučko, lahko dejansko nekaj narediti nekaj podobnega, da je, 235 00:12:07,490 --> 00:12:10,590 ga ob poti, ki ima spremenljiv kot del nje. 236 00:12:10,590 --> 00:12:14,090 >> Torej, če pogledaš na to Primer na zaslonu tod 237 00:12:14,090 --> 00:12:19,930 imamo pot, ki je ('/ pozdravi / "), in tako, če boste obiskali 238 00:12:19,930 --> 00:12:23,790 / pozdravi / nekaj, da nekaj se dogaja, da dejansko dobili polnjene 239 00:12:23,790 --> 00:12:25,490 v ime spremenljivke. 240 00:12:25,490 --> 00:12:27,850 In opazil, da je funkcija ki prihaja s to progo 241 00:12:27,850 --> 00:12:31,302 mora vzeti v parameter ime, tako da bo dejansko 242 00:12:31,302 --> 00:12:32,510 se prenese v funkciji. 243 00:12:32,510 --> 00:12:34,190 >> In potem, ko ste znotraj te funkcije, 244 00:12:34,190 --> 00:12:36,420 si lahko privoščite, da je tako kot normalna Python spremenljivka, 245 00:12:36,420 --> 00:12:39,650 in tako potem, bo to izpisal Pozdravljeni, in 246 00:12:39,650 --> 00:12:42,000 bo zapolnila v imenu uporabo nekateri niz oblikovanje. 247 00:12:42,000 --> 00:12:48,060 >> Torej dodati variabilnih delov za usmerjanje, uporabite kotni nosilec CE. 248 00:12:48,060 --> 00:12:51,220 In po želji, lahko uporabite kar se imenuje pretvornik. 249 00:12:51,220 --> 00:12:56,840 In tako, če si dal to zaznamba z debelega črevesa, 250 00:12:56,840 --> 00:13:00,015 lahko določite, da je int ali plovec ali poti, 251 00:13:00,015 --> 00:13:01,640 in bo samodejno pretvoriti to. 252 00:13:01,640 --> 00:13:05,130 To lahko storite tudi pretvorbo znotraj funkcije Python, 253 00:13:05,130 --> 00:13:09,710 Samo z uporabo odlitek, včasih pa če hočeš, da se zagotovi, da je int, 254 00:13:09,710 --> 00:13:12,080 lahko dal, da Pravilo pretvorba tam. 255 00:13:12,080 --> 00:13:15,930 >> Torej, kaj je dvigni zgled nekaterih spremenljivih pravil. 256 00:13:15,930 --> 00:13:21,480 Torej tukaj, to je enako osnovno struktura z od bučko uvoza 257 00:13:21,480 --> 00:13:25,030 Bučko, app = bučko (_name_), in potem je tekmovanje v teku na koncu. 258 00:13:25,030 --> 00:13:28,050 Imamo ti dve različni spremenljive poti tukaj. 259 00:13:28,050 --> 00:13:29,900 In prvo, je tisti, ki mi je pokazala, 260 00:13:29,900 --> 00:13:34,230 v drsniku, ki je bil, da to šele zalotiti v imenu niz 261 00:13:34,230 --> 00:13:35,650 in se bo izpisal Pozdravljeni, Ime. 262 00:13:35,650 --> 00:13:41,410 >> In nato, drugi ena uporablja konverzijo. 263 00:13:41,410 --> 00:13:44,690 Torej, to bo samodejno pretvorbo za notr, in nato dvakrat int, 264 00:13:44,690 --> 00:13:46,150 in tiskanje, ki ven. 265 00:13:46,150 --> 00:13:48,220 In, ne delamo nikakršne pretvorbe v njem 266 00:13:48,220 --> 00:13:49,594 ker Flask poskrbi za to. 267 00:13:49,594 --> 00:13:53,181 Torej, kaj je dobil ta teče. 268 00:13:53,181 --> 00:13:54,930 Ko imate Flask aplikacija teče, 269 00:13:54,930 --> 00:13:58,440 Lahko nadzor-C iz nje zaustaviti strežnik teče. 270 00:13:58,440 --> 00:14:02,420 In potem bom teči spremenljivke. 271 00:14:02,420 --> 00:14:11,740 >> Torej, pojdimo na localhost / hello / Ezra in upajmo, da bo to pozdravi mene. 272 00:14:11,740 --> 00:14:14,530 273 00:14:14,530 --> 00:14:20,310 >> Torej, to je v mojem imenu, v spremenljivki pot, in jo napolni tukaj. 274 00:14:20,310 --> 00:14:23,950 Torej bom kažejo tudi hiter Primer podvojitve. 275 00:14:23,950 --> 00:14:28,600 Torej, če greš na / dvojni / 3, se bo izpisal 6. 276 00:14:28,600 --> 00:14:31,440 Torej, to je poskrbel pretvorba za nas. 277 00:14:31,440 --> 00:14:34,190 >> Torej, lahko to storite tudi z float, in nekaj posebnega, 278 00:14:34,190 --> 00:14:37,530 Če morate navesti nekaj podobnega pot, ki vam omogoča, da sprejmete poševnice, 279 00:14:37,530 --> 00:14:39,155 vendar to ne bi bilo običajno vprašanje. 280 00:14:39,155 --> 00:14:41,480 281 00:14:41,480 --> 00:14:43,820 Doslej smo, še vedno ravnokar se vračajo 282 00:14:43,820 --> 00:14:46,320 strune, kar ni zelo zanimivo. 283 00:14:46,320 --> 00:14:48,730 >> Mi lahko dejansko vrnili literal HTML niz. 284 00:14:48,730 --> 00:14:54,322 Torej v kodo lahko vstavite nekaj tako kot b-tag, da bi bilo krepko, 285 00:14:54,322 --> 00:14:56,030 vendar je večina časa boste pa dejansko ne želijo 286 00:14:56,030 --> 00:14:58,420 da je pisanje HTML kodo V vašem Python kodo. 287 00:14:58,420 --> 00:15:01,940 To postane res grdo, in to ni dober čas. 288 00:15:01,940 --> 00:15:06,430 >> Bučko nam omogoča izločiti HTML v kaj se imenuje Predloga, 289 00:15:06,430 --> 00:15:09,467 in tako če razmišljate glede na modelu MVC 290 00:15:09,467 --> 00:15:11,550 da ste seznanjeni z, upajmo, od dela 291 00:15:11,550 --> 00:15:15,520 z CS50 finance malo, lahko si misliš o Python datotek 292 00:15:15,520 --> 00:15:19,430 kot več nadzornika, kjer so v stiku z karkoli 293 00:15:19,430 --> 00:15:20,970 podatkovni model, boste morda morali. 294 00:15:20,970 --> 00:15:24,900 >> In potem so se kliče ven Ogledov in posredovanje informacij tem View 295 00:15:24,900 --> 00:15:28,120 da izpolnite podatke v HTML, ki jo potrebuje. 296 00:15:28,120 --> 00:15:30,490 In tisto, kar imenujemo tiste Ogledov so Predloge v razredu. 297 00:15:30,490 --> 00:15:35,280 >> Torej Bučka uporablja drug Python modul, ki se bo samodejno 298 00:15:35,280 --> 00:15:38,620 namestiti pri Pip namestitvi Bučko imenuje Jinja, ki 299 00:15:38,620 --> 00:15:40,885 upamo, da dodate te pripombe v HTML 300 00:15:40,885 --> 00:15:45,140 ki jih vidite na zaslonu, ki omogoča si dal v stvari, kot so pogojnih, 301 00:15:45,140 --> 00:15:47,230 in zank v HTML. 302 00:15:47,230 --> 00:15:51,140 >> Tako da izgleda malo všeč, kako vas lahko uporabite PHP v datoteko HTML, 303 00:15:51,140 --> 00:15:57,380 vendar je to samo, ko se bučka strežnik služi up datoteko HTML, 304 00:15:57,380 --> 00:16:01,610 pa bo trajal ta templating motor in razčleniti skozi to in izpolnite stvari. 305 00:16:01,610 --> 00:16:06,650 Torej Bučka ima funkcijo render_template da si lahko ogledate na dnu tukaj. 306 00:16:06,650 --> 00:16:14,300 In tako, ko obiščete to stran, jo bi postala ta hello.html predlogo, 307 00:16:14,300 --> 00:16:16,407 in nato izpolnite tej strani HTML. 308 00:16:16,407 --> 00:16:18,990 Torej, kaj je samo teči to pravi hitro, in videti, kako izgleda, 309 00:16:18,990 --> 00:16:21,198 in potem bom šel skozi malo podrobneje. 310 00:16:21,198 --> 00:16:25,380 311 00:16:25,380 --> 00:16:30,260 Torej, vaše predloge se dogaja da gredo v mapo Predloge. 312 00:16:30,260 --> 00:16:33,980 To bo samodejno iskati znotraj Mapo Predloge za to predlogo. 313 00:16:33,980 --> 00:16:35,615 Torej, kaj je odpreti to gor. 314 00:16:35,615 --> 00:16:47,350 315 00:16:47,350 --> 00:16:50,005 Torej, bom prost primer templating. 316 00:16:50,005 --> 00:16:52,820 317 00:16:52,820 --> 00:17:03,660 >> Torej, če grem na / hello / Ezra, ima to grozno, 318 00:17:03,660 --> 00:17:05,930 gnusen šotoru tag, da sem dal v. 319 00:17:05,930 --> 00:17:08,050 Zelo lepo, zelo dinamično. 320 00:17:08,050 --> 00:17:09,349 Sem velik oboževalec. 321 00:17:09,349 --> 00:17:13,900 Toda kaj se zgodi, če Pravkar sem šel, / zdravo? 322 00:17:13,900 --> 00:17:15,220 Torej je pravi samo Hello World. 323 00:17:15,220 --> 00:17:17,678 Nisem ga ne smete dajati imena, in jo izpolni samodejno. 324 00:17:17,678 --> 00:17:22,050 Torej, da vidimo, kako je to naredil, in kako moremo znebiti tega šotoru morda. 325 00:17:22,050 --> 00:17:26,240 >> Torej tukaj, to je vrsta zanimiv primer, 326 00:17:26,240 --> 00:17:29,101 če ste seznanjeni s tem, kako stikalo Izjave delo v jeziku. 327 00:17:29,101 --> 00:17:31,350 Pravijo, da je to nekaj podobnega, da nekako padca skozi, 328 00:17:31,350 --> 00:17:34,266 kjer ste dejansko pritrjena dva Različne poti do istega funkcijo. 329 00:17:34,266 --> 00:17:41,190 Tako smo priložite / Hello pot in V / pozdravi / ime pot do Pozdravljeni, 330 00:17:41,190 --> 00:17:45,130 in smo določite using-- vas Python omogoča določite privzeto funkcijo arguments-- 331 00:17:45,130 --> 00:17:48,300 tako da, če ni ime, tako če gremo samo / zdravo, 332 00:17:48,300 --> 00:17:50,680 se bo samodejno filtrira imena je enaka ni. 333 00:17:50,680 --> 00:17:55,010 >> Torej, smo naredilo Predloga z name = ime, 334 00:17:55,010 --> 00:17:59,510 tako da bo prehod na ime parametra enaka tej funkcionalni ime parametra, 335 00:17:59,510 --> 00:18:00,730 v predlogo. 336 00:18:00,730 --> 00:18:04,040 To še vedno ne pojasni, kako je odločanju, ali naj se natisne Hello World, 337 00:18:04,040 --> 00:18:05,100 ali tiskati moje ime. 338 00:18:05,100 --> 00:18:08,050 Torej, kaj je dejansko videti v predlogo sam, 339 00:18:08,050 --> 00:18:11,610 in videli, če to od kod prihaja. 340 00:18:11,610 --> 00:18:18,680 >> Torej, v tem predlogo smo dejansko imajo nekaj pogojno logiko, 341 00:18:18,680 --> 00:18:20,580 kar bi nekateri ljudje trdijo, ste dejansko 342 00:18:20,580 --> 00:18:23,730 ne bi smeli imeti veliko pogojno Logika v vašem sama predlogo. 343 00:18:23,730 --> 00:18:26,310 Moralo bi biti bolj znotraj Krmilnik, ampak za ta primer 344 00:18:26,310 --> 00:18:27,476 to je nekaj precej majhen. 345 00:18:27,476 --> 00:18:31,060 Torej, tukaj smo preveriti, če je ime, tako če ime ni enak None, 346 00:18:31,060 --> 00:18:33,130 če ime je dejansko sprejet leta, potem bomo 347 00:18:33,130 --> 00:18:36,210 Pozdravi, osebe z Glava in šotoru, 348 00:18:36,210 --> 00:18:41,490 vse to normalno HTML, sicer bomo izpisal Pozdravljeni, Svet samo normalno. 349 00:18:41,490 --> 00:18:45,820 Torej, nekaj stvari tukaj obvestilo o tem, kako formatirati templating, 350 00:18:45,820 --> 00:18:49,110 je, da vse te pogojni stavki, 351 00:18:49,110 --> 00:18:54,475 nekako všeč, kako smo ga, kadar PHP želite vstaviti nekaj PHP, 352 00:18:54,475 --> 00:18:58,380 boste uporabili manj kot vprašanje znamka, ki je nekako analogno tukaj 353 00:18:58,380 --> 00:19:00,140 s {%. 354 00:19:00,140 --> 00:19:02,130 >> Torej, tukaj imamo pogojno kodo. 355 00:19:02,130 --> 00:19:05,920 In potem, ko si dejansko želijo dobesedno ovrednotiti nekaj, in print 356 00:19:05,920 --> 00:19:08,710 ven na zaslonu, uporabljati dvojne naramnice. 357 00:19:08,710 --> 00:19:12,310 Torej, tukaj so dvojne naramnice, in potem bomo navesti ime, 358 00:19:12,310 --> 00:19:15,500 tako znotraj, da bo ocenila na ime spremenljivke, ki 359 00:19:15,500 --> 00:19:18,860 je bil sprejet leta od onemogočijo funkcijo predloge, 360 00:19:18,860 --> 00:19:21,484 ne samo tiskanje ven, če smo se znebili teh, 361 00:19:21,484 --> 00:19:23,150 da bi samo izpisal besedo "ime". 362 00:19:23,150 --> 00:19:26,340 Torej, to je nekaj, da pazi na. 363 00:19:26,340 --> 00:19:29,792 >> Torej, še ena stvar, da obvestilo, da je, ko smo 364 00:19:29,792 --> 00:19:31,500 želite uporabiti render_template funkcija, 365 00:19:31,500 --> 00:19:34,490 imamo dejansko uvoziti izrecno iz bučke. 366 00:19:34,490 --> 00:19:36,915 In to je primer Modularnost bučko, 367 00:19:36,915 --> 00:19:39,290 da vam ne bi bilo treba uvoziti stvari, ki jih ne potrebujete. 368 00:19:39,290 --> 00:19:41,290 Lahko samo prinese v funkcije, ki jih dejansko 369 00:19:41,290 --> 00:19:43,450 to potrebujejo, kar je včasih lepo, tako da vam ne 370 00:19:43,450 --> 00:19:46,560 imeti vse te funkcije poseda, ki jih ne uporabljate, 371 00:19:46,560 --> 00:19:49,730 ampak tudi, če ste pozabili, da vas morali uvoziti render_template, 372 00:19:49,730 --> 00:19:52,660 boste verjetno dobili opozorilo da se bo kaj veš o tem. 373 00:19:52,660 --> 00:19:56,700 Tako, da je templating. 374 00:19:56,700 --> 00:20:01,680 >> Torej, smo pokazali, kako naj enostavne spletne strani, 375 00:20:01,680 --> 00:20:04,947 in dodamo malo več logiko je, glede na variabilne usmerjanje. 376 00:20:04,947 --> 00:20:08,280 To vam omogoča različne stvari, ki temelji na kaj URL greš, in tudi potem, daj 377 00:20:08,280 --> 00:20:11,950 HTML malo več smisla Pogoji, kako želite, da postanejo stvari. 378 00:20:11,950 --> 00:20:14,210 Nimate dati vse Vaše HTML v vašem Python, 379 00:20:14,210 --> 00:20:16,640 ampak za precej vsaka spletna aplikacija, 380 00:20:16,640 --> 00:20:21,480 boste želeli neke vrste model podatkov, povezanih z njo. 381 00:20:21,480 --> 00:20:25,560 >> In tako tradicionalno, bi to nekaj podobnega podatkovne zbirke SQL. 382 00:20:25,560 --> 00:20:30,280 In lahko samo interakcijo neposredno z SQL. 383 00:20:30,280 --> 00:20:32,190 Python ima, mislim, da se imenuje. 384 00:20:32,190 --> 00:20:33,040 SQLite 3. 385 00:20:33,040 --> 00:20:38,454 Lahko samo uvoz SQLite 3 in izvrši SQL poizvedb neposredno, 386 00:20:38,454 --> 00:20:40,870 ampak ne vem o tebi, ampak res ne maram, samo, 387 00:20:40,870 --> 00:20:42,750 pisanje ven SQL poizvedb. 388 00:20:42,750 --> 00:20:45,350 To kaže, da bi dobili resnično dolga in zapletena. 389 00:20:45,350 --> 00:20:49,180 >> In tako, nekaj, Rad uporabljam je tisto, kar je 390 00:20:49,180 --> 00:20:53,610 znan kot ORM, ki je objektno-relacijska preslikava. 391 00:20:53,610 --> 00:20:56,890 In točka objektno-relacijska preslikava, 392 00:20:56,890 --> 00:21:00,100 je, da obstajata dve različni načinov, kako lahko misliš o zbirkah podatkov. 393 00:21:00,100 --> 00:21:03,240 >> Tako je na primer, da Profesor Malan običajno 394 00:21:03,240 --> 00:21:07,660 uporablja v razredu, je Excel tabela, kjer imate te vrstice in te stolpce, 395 00:21:07,660 --> 00:21:10,210 in da je res koristno za kako je zastopana v SQL 396 00:21:10,210 --> 00:21:13,170 in kako ste interakcijo z njim, vendar še en način, da je dejansko 397 00:21:13,170 --> 00:21:16,390 koristno razmišljati o tem včasih, je v smislu razredov in predmetov. 398 00:21:16,390 --> 00:21:20,420 >> Torej, namesto razmišljanja vsake tabele, da ima 399 00:21:20,420 --> 00:21:23,040 Ta vrstica, ki ima nekatere informacije, lahko dejansko 400 00:21:23,040 --> 00:21:26,100 si o njej mislijo kot vsaka miza je razred, 401 00:21:26,100 --> 00:21:29,810 in nato vsak primerek Razred ima nekatere lastnosti. 402 00:21:29,810 --> 00:21:35,110 Torej, v tem primeru, so primeri razred so vrstice v tabeli, 403 00:21:35,110 --> 00:21:37,490 in potem bi vsaka lastnina je kolona v tabeli. 404 00:21:37,490 --> 00:21:40,840 >> Torej, ORM, ki mi je všeč uporabljati se imenuje peewee. 405 00:21:40,840 --> 00:21:43,520 To je res majhen, nekako tako kot bučko. 406 00:21:43,520 --> 00:21:46,760 Mislim, da gredo dobro skupaj, vendar pa obstaja veliko drugih ORMs 407 00:21:46,760 --> 00:21:47,730 ki jih lahko uporabite. 408 00:21:47,730 --> 00:21:52,180 Bolj priljubljen je znan kot SQLAlchemy, 409 00:21:52,180 --> 00:21:56,050 in ne morem se spomniti, zakaj sem sprva izbral peewee nad SQLAlchemy, 410 00:21:56,050 --> 00:21:58,311 ali sem ti, zakaj bi povedal Mislim, da je najboljša, 411 00:21:58,311 --> 00:22:01,060 vendar smo le, da bo to uporabijo ena, ker vem, kako jo uporabljati. 412 00:22:01,060 --> 00:22:04,760 >> Torej, eno vprašanje je, zakaj morate trudim uporabo ORM, 413 00:22:04,760 --> 00:22:07,552 namesto samo neposredno pisanje SQL poizvedb? 414 00:22:07,552 --> 00:22:09,760 In mislim, da je najboljši primer, je, da ne boste dejansko 415 00:22:09,760 --> 00:22:11,356 morali pisati SQL poizvedb. 416 00:22:11,356 --> 00:22:14,480 To je veliko lažje, kot vam bom pokazal, da stvari kot izbor, vstavljanje, 417 00:22:14,480 --> 00:22:16,157 izbris, še posebej ustvarjanje tabel. 418 00:22:16,157 --> 00:22:17,990 To je veliko lažje napisati razredne strukture, 419 00:22:17,990 --> 00:22:22,250 kot je za strukturo Ustvari Izjava miza, ampak ena stvar 420 00:22:22,250 --> 00:22:25,710 da se zavedajo, je, da ORM bo potrudila 421 00:22:25,710 --> 00:22:28,640 da ugotovimo, kaj je najbolj učinkovite poizvedbe SQL bi bilo, 422 00:22:28,640 --> 00:22:30,110 včasih pa postane to narobe. 423 00:22:30,110 --> 00:22:32,660 >> In še posebej, če ste delajo z veliko zbirko podatkov, 424 00:22:32,660 --> 00:22:35,557 lahko opazili, da poizvedbe da je treba hitro teče, 425 00:22:35,557 --> 00:22:36,640 dejansko traja dlje. 426 00:22:36,640 --> 00:22:40,164 In če pogledaš pod pokrovom, kako ORM je tolmačenje, da je v SQL, 427 00:22:40,164 --> 00:22:42,080 to lahko počne nekaj Res smešno, 428 00:22:42,080 --> 00:22:44,371 samo zato, ker je nekako pomignil vaše namere narobe. 429 00:22:44,371 --> 00:22:48,080 In so tam bili časi, kjer Imel sem ga prepisati, in samo 430 00:22:48,080 --> 00:22:52,429 izvršiti moje SQL poizvedb, samo ker je bila pri razčlenjevanju na čuden način. 431 00:22:52,429 --> 00:22:54,220 Torej obstaja nekaj režijske stroške, samo v načinu 432 00:22:54,220 --> 00:22:58,680 da pripravlja vaš Izjave dol v SQL. 433 00:22:58,680 --> 00:23:06,200 >> Torej, kaj je pogled super hitro na preprost primer podatkovnega modela 434 00:23:06,200 --> 00:23:07,350 da lahko uporabite. 435 00:23:07,350 --> 00:23:11,880 Torej je to Python kodo, in tako Prva stvar, ki jo želite storiti, je iz 436 00:23:11,880 --> 00:23:12,950 peewee uvoz *. 437 00:23:12,950 --> 00:23:15,850 Torej, za razliko od bučko, kjer imate vsi ti posamezni moduli, 438 00:23:15,850 --> 00:23:18,125 in želite uvoziti bučko in napisati predlogo in nekatere druge 439 00:23:18,125 --> 00:23:20,690 da bomo videli kasneje, od peewee, lahko samo uvoziti vse, 440 00:23:20,690 --> 00:23:22,290 ker je to precej majhna knjižnica. 441 00:23:22,290 --> 00:23:26,490 >> Torej, prva stvar, ki jo želite storiti, je, dejansko oblikovanje te baze podatkov predmeta. 442 00:23:26,490 --> 00:23:31,212 Torej, imate db = SqliteDatabase, in nato ime vaše baze podatkov. 443 00:23:31,212 --> 00:23:33,170 In to bo dejansko ustvariti predmeta zbirke podatkov 444 00:23:33,170 --> 00:23:36,230 ki jih lahko interakcijo z, z peewee. 445 00:23:36,230 --> 00:23:40,570 >> In potem imamo dejansko model, ki ga želite ustvariti. 446 00:23:40,570 --> 00:23:42,470 Torej tabela želimo ustvariti. 447 00:23:42,470 --> 00:23:47,270 Torej, v peewee vsak razred ima, sama miza v vaši zbirki podatkov. 448 00:23:47,270 --> 00:23:52,800 Torej, vse razrede podedovali od osnovnega modela, 449 00:23:52,800 --> 00:23:55,960 in model kapital M nekaj, kar je opredeljeno v peewee. 450 00:23:55,960 --> 00:24:02,162 >> Torej, če bi vse svoje modele podedujejo kot najvišji nadrazreda, 451 00:24:02,162 --> 00:24:04,620 morajo podedovali od Model, ampak tisto, kar je res kul, 452 00:24:04,620 --> 00:24:07,610 je, da lahko dejansko imajo svoj tip podedovali drug od drugega. 453 00:24:07,610 --> 00:24:10,530 In veliko časa, vaš podatkovne modele, ne nujno 454 00:24:10,530 --> 00:24:13,754 da hierarhijo lepo dediščino, vendar časi, ko se to zgodi, to je res lepo, 455 00:24:13,754 --> 00:24:15,920 ker imate model neločljivo povezana med seboj. 456 00:24:15,920 --> 00:24:19,710 >> Torej, smo definirali ta razred "študent, ki je podedoval model, 457 00:24:19,710 --> 00:24:21,170 in ima tri lastnosti. 458 00:24:21,170 --> 00:24:24,080 Ima ID, ki je PrimaryKeyField, ki 459 00:24:24,080 --> 00:24:26,920 je nekaj, kar je predvideno s peewee, ime je CharField, 460 00:24:26,920 --> 00:24:28,490 in razred je IntegerField. 461 00:24:28,490 --> 00:24:32,260 Torej to lahko ali pa tudi ne kako CS50 dejansko shranjuje vse 462 00:24:32,260 --> 00:24:33,650 stopnje dijakov. 463 00:24:33,650 --> 00:24:36,060 To je ne, ampak to je, kako bi jaz to naredil. 464 00:24:36,060 --> 00:24:37,920 >> In potem se je, v ta razred, in to 465 00:24:37,920 --> 00:24:41,620 je nekaj, kar lahko storite z Python, imate lahko ugnezdene razrede. 466 00:24:41,620 --> 00:24:43,920 In to je nekaj, ki je s peewee potrebno. 467 00:24:43,920 --> 00:24:47,250 Torej, ta razred Meta, imate določiti, da je baza podatkov 468 00:24:47,250 --> 00:24:49,830 enaka predmeta da smo ustvarili zgoraj. 469 00:24:49,830 --> 00:24:54,339 In to pove, kaj datoteka je ta tabela dejansko dogaja, da se jih vsebuje. 470 00:24:54,339 --> 00:24:57,130 Torej, to je nekaj, kar imaš storiti v vse svoje modele. 471 00:24:57,130 --> 00:24:59,380 Moraš določiti v tem Meta razred 472 00:24:59,380 --> 00:25:01,400 da podatkovna baza je enaka db. 473 00:25:01,400 --> 00:25:03,940 Torej, kaj sem ponavadi, če imam kup različnih modelov, 474 00:25:03,940 --> 00:25:05,910 je, da imam eno bazo Model, ki sem ponavadi 475 00:25:05,910 --> 00:25:08,839 samo klic "osnovni model" da ima Meta razred, 476 00:25:08,839 --> 00:25:10,380 in določa zbirko podatkov, ki je enak db. 477 00:25:10,380 --> 00:25:13,710 In potem vse moje kasnejše modele bodo podedovali od tega osnovnega razreda. 478 00:25:13,710 --> 00:25:16,760 In potem mi ni treba skrbeti o nastavitvi Meta razred. 479 00:25:16,760 --> 00:25:21,490 >> Torej, ko se to dejansko dobi zbrati navzdol v stavku SQL, 480 00:25:21,490 --> 00:25:24,875 izgleda, da to grdo stvar dol tukaj, "Ustvari tabelo študent ID celo, 481 00:25:24,875 --> 00:25:26,020 " karkoli. 482 00:25:26,020 --> 00:25:30,002 >> In mislim, da je krajši, to SQL poizvedb tukaj, 483 00:25:30,002 --> 00:25:32,960 ampak če pogledaš na to vrsto tukaj lahko vidite, kaj se dogaja. 484 00:25:32,960 --> 00:25:36,116 Vidite lahko, katere vrste polj obstajajo, kaj oni se imenujejo, 485 00:25:36,116 --> 00:25:38,115 in zato mislim, da gledaš te Python kodo 486 00:25:38,115 --> 00:25:43,340 je veliko bolj berljiva kot poskuša napisati ta SQL poizvedbo. 487 00:25:43,340 --> 00:25:45,990 >> Tako, da se dejansko uporabo baze podatkov, 488 00:25:45,990 --> 00:25:48,470 moramo povezati z njim v Python. 489 00:25:48,470 --> 00:25:52,770 Torej, sem ponavadi napisati funkcijo imenovano initialize_db da počne dve stvari. 490 00:25:52,770 --> 00:25:54,880 To traja v podatkovni bazi Objekt db in je 491 00:25:54,880 --> 00:25:58,360 poveže z njim, ki pravkar odpira up odseku do baze podatkov. 492 00:25:58,360 --> 00:26:00,860 Če ste šele tekmovanje v teku, čeprav Spletna stran na vašem lokalnem računalniku, 493 00:26:00,860 --> 00:26:04,320 to ni super big deal skrbi o povezovanju in izklapljanja, 494 00:26:04,320 --> 00:26:06,885 ampak če tečeš je na spletni strani, ki jih 495 00:26:06,885 --> 00:26:10,010 želite zagotoviti, da vsakič, ko uporabnik poveže z njim, ko se zaključi 496 00:26:10,010 --> 00:26:12,270 spletne strani, ki jih ločite tako, da boste nimajo kup ljudi, povezanih 497 00:26:12,270 --> 00:26:14,480 na vašo bazo podatkov naenkrat. 498 00:26:14,480 --> 00:26:16,370 >> In potem, ko vas povezavo z bazo podatkov, 499 00:26:16,370 --> 00:26:20,832 želite poklicati db.create_tables, in seznam modele za tisto, kar želite 500 00:26:20,832 --> 00:26:21,540 za ustvarjanje tabel. 501 00:26:21,540 --> 00:26:23,950 Torej, tukaj, jaz samo želim, da jo ustvarite za ta študent. 502 00:26:23,950 --> 00:26:28,070 In potem, kar je pomembno, je, da določite varno = true največ časa. 503 00:26:28,070 --> 00:26:30,380 Torej, kaj je ta izjava bo naredil, je, da je to 504 00:26:30,380 --> 00:26:33,580 ustvari tabele za študent vzorec, vendar le 505 00:26:33,580 --> 00:26:36,109 če ima ta tabela ne bila ustvarjena že. 506 00:26:36,109 --> 00:26:37,400 To je tisto, kar določa, varne. 507 00:26:37,400 --> 00:26:39,150 Tako da ne bo prepisalo vaša obstoječa tabela, 508 00:26:39,150 --> 00:26:41,525 bo ustvaril le nova miza, če ni eden tam. 509 00:26:41,525 --> 00:26:45,090 Torej, lahko samo ustvariti mize nekoč uporabo SQL. 510 00:26:45,090 --> 00:26:49,410 In potem imajo te baze podatkov sedenje tam, in se poveže z vsakokrat, 511 00:26:49,410 --> 00:26:52,450 ampak to je običajno lepo, samo da bi dal v tem create_tables razpisu, 512 00:26:52,450 --> 00:26:55,550 tako da, če ste kdaj izbrisati vaš Baza podatkov, ko zaženete vašo spletno 513 00:26:55,550 --> 00:26:57,960 app enkrat, bo to ponovno. 514 00:26:57,960 --> 00:27:00,730 >> Torej, samo poskrbite, da je varno je določeno, da bi bilo res, 515 00:27:00,730 --> 00:27:03,580 ali boste našli vaše podatke samo pridobivanje clobbered vsakič. 516 00:27:03,580 --> 00:27:06,380 In potem si lahko samo pokliči initialize_db vzpostaviti 517 00:27:06,380 --> 00:27:09,820 povezava in ustvarjanje Tabele če je potrebno. 518 00:27:09,820 --> 00:27:13,150 >> Torej, je najbolj običajna stvar da boste želeli storiti, 519 00:27:13,150 --> 00:27:15,920 ali je eden izmed najpogostejših stvari, je dejansko vstaviti stvari 520 00:27:15,920 --> 00:27:17,170 v svojo bazo podatkov. 521 00:27:17,170 --> 00:27:19,430 In tako, namesto da napisati vstavite v 522 00:27:19,430 --> 00:27:21,990 izjavo z vsemi Vrednosti določeno, 523 00:27:21,990 --> 00:27:24,650 lahko dejansko pokličete funkcija na razred učencev. 524 00:27:24,650 --> 00:27:28,200 Torej, ko ustvarite razred da podeduje od modela, 525 00:27:28,200 --> 00:27:30,200 ima to ustvarilo metodo. 526 00:27:30,200 --> 00:27:33,870 >> Torej, vam razred name.create, in določite parametre 527 00:27:33,870 --> 00:27:35,260 ki ga želite prenesti v. 528 00:27:35,260 --> 00:27:39,200 Torej, če želim dodati nekaj študentov na naše CS50 redovalnice primer, 529 00:27:39,200 --> 00:27:41,820 Bom dal v Davidov, ki ima zelo dober razred, ima 95. 530 00:27:41,820 --> 00:27:45,100 In jaz, kdo je ne delaš tako tudi v CS50, imam 50. 531 00:27:45,100 --> 00:27:47,600 In tako se je lepo stvar o kaj to ustvarilo funkcija počne, 532 00:27:47,600 --> 00:27:53,040 je, da se vrne na primer, ali vrstica, ki je ustvarjena v tabeli, 533 00:27:53,040 --> 00:27:55,750 in tako potem shranite, da je v spremenljivka, in delo z njo kasneje. 534 00:27:55,750 --> 00:27:58,830 Lahko spremenite okoli, ki Bom pokazal primer. 535 00:27:58,830 --> 00:28:03,050 >> Obvestilo, da nisem morajo navesti ID, 536 00:28:03,050 --> 00:28:09,340 ker saj je PrimaryKeyField, se bo samodejno 537 00:28:09,340 --> 00:28:10,930 je prirastek, če ga ne določi. 538 00:28:10,930 --> 00:28:12,250 In v resnici, boste verjetno naj bi ga ne določite, 539 00:28:12,250 --> 00:28:14,810 ker si morda po nesreči clobber ID nekoga drugega. 540 00:28:14,810 --> 00:28:16,830 In želite prepričan, da je edinstven. 541 00:28:16,830 --> 00:28:20,662 >> Torej, pravzaprav, najbolj skupna stvar, ki jo želite storiti, 542 00:28:20,662 --> 00:28:22,620 je verjetno izberite iz podatkovne baze, ko boste 543 00:28:22,620 --> 00:28:24,078 imajo veliko informacij tam. 544 00:28:24,078 --> 00:28:27,360 In tako, če želite, da bi dobili vse, tako da je ekvivalent izberite zvezda 545 00:28:27,360 --> 00:28:30,940 iz izjave študentov, ga bi bilo le student.select. 546 00:28:30,940 --> 00:28:34,380 In to vam bo dala nazaj niz z vsemi študenta predmetov v njem 547 00:28:34,380 --> 00:28:35,770 da ste Ponovil nad hočeš. 548 00:28:35,770 --> 00:28:37,019 Lahko dobim stvari od njega. 549 00:28:37,019 --> 00:28:39,310 In večino časa, vam ne samo želijo narediti izberite, 550 00:28:39,310 --> 00:28:40,935 si dejansko želite določiti nekaj. 551 00:28:40,935 --> 00:28:44,580 In tako, se lahko veriga vas skupaj ti klici funkcij, 552 00:28:44,580 --> 00:28:48,830 všeč, kako bi jih veriga skupaj izjave v SQL. 553 00:28:48,830 --> 00:28:53,002 Torej lahko storite student.select ()., Kjer v tem primeru. 554 00:28:53,002 --> 00:28:54,710 In potem, lahko opredeli pogoje, 555 00:28:54,710 --> 00:28:57,880 samo z uporabo normalne Python Booleans preveriti stvari. 556 00:28:57,880 --> 00:29:02,110 >> Torej, v tem primeru, ki ga želite omejiti kaj izberete, da, 557 00:29:02,110 --> 00:29:06,790 kjer je student.grade enaka 50, in student.name je enaka Ezra, 558 00:29:06,790 --> 00:29:09,130 tako da bo samo spravite me od njega. 559 00:29:09,130 --> 00:29:11,340 In opazili, eno res subtilna stvar tukaj je 560 00:29:11,340 --> 00:29:15,570 da, če želite določiti in / ali in / ali ali, 561 00:29:15,570 --> 00:29:19,840 v Python, bi normalno uporabo, Mislim, da je beseda "in" dejansko, 562 00:29:19,840 --> 00:29:23,351 ampak tukaj ste uporabili enotno 'znak, ki je običajno operater bitni, 563 00:29:23,351 --> 00:29:25,600 vendar v tem posebnem primeru, samo način peewee to počne, 564 00:29:25,600 --> 00:29:27,660 uporabo enotnega ampersand določiti "in". 565 00:29:27,660 --> 00:29:29,451 To je nekaj, kar Dobim pomešal veliko, 566 00:29:29,451 --> 00:29:32,530 vendar pa ne pride do toliko v praksi. 567 00:29:32,530 --> 00:29:36,350 >> In potem, ko imate vse študenti iz baze podatkov, 568 00:29:36,350 --> 00:29:39,420 Ko ste storili, da ste select in vaša oblačila ali karkoli, 569 00:29:39,420 --> 00:29:42,334 lahko uporabite foreach zanke, tako kot običajno v Python, 570 00:29:42,334 --> 00:29:44,500 s kakim iterator ali s kakim array. 571 00:29:44,500 --> 00:29:46,333 Torej lahko storite, za S v student.select (). whe 572 00:29:46,333 --> 00:29:52,930 re (Student.grade <75), in tako da bo to Ponovil preko vsakega študenta v tabeli 573 00:29:52,930 --> 00:29:56,260 čigar ocena je manj kot 75, ki je v tem primeru je še vedno samo mi. 574 00:29:56,260 --> 00:29:59,218 In potem bi lahko naredil kaj v da je zanka, kot pošljite mi e-pošto 575 00:29:59,218 --> 00:30:01,680 in me dejansko povedati obrniti v moj problem Scena. 576 00:30:01,680 --> 00:30:04,550 >> Torej, še ena stvar, ki jo lahko storiti, je, da je zelo enostavno 577 00:30:04,550 --> 00:30:06,460 posodobiti vrstice znotraj tabele. 578 00:30:06,460 --> 00:30:08,720 Torej, se spomnite nazaj, si, ko sem vstavil, 579 00:30:08,720 --> 00:30:11,440 Vzel sem na vrednost, ki je bila s student.create vrnil, 580 00:30:11,440 --> 00:30:14,920 in sem ga dodeljena imena imenovanih Ezra. 581 00:30:14,920 --> 00:30:18,995 In zdaj, lahko spremenite Vrednosti v tem primeru, 582 00:30:18,995 --> 00:30:20,870 tako kot bi vam normalni razred v Python. 583 00:30:20,870 --> 00:30:25,060 >> Tako da lahko nastavite ezra.grade = 95 in da bo posodobiti lokalno kopijo, 584 00:30:25,060 --> 00:30:28,380 ampak če si dejansko želijo zavežejo, da spremembe v podatkovno bazo, 585 00:30:28,380 --> 00:30:31,410 boste morali poklicati ezra.save, tako da se imenuje .save metoda 586 00:30:31,410 --> 00:30:32,650 na primer. 587 00:30:32,650 --> 00:30:38,085 >> In zdaj, sem uspešno spremenil moja ocena v okviru podatkovne zbirke. 588 00:30:38,085 --> 00:30:41,210 Torej, potem recimo, da sem se ujamejo spreminjajo svoj razred v bazi podatkov. 589 00:30:41,210 --> 00:30:44,126 Profesor Malan je verjetno, da bo da me želiš izbrisati iz razreda, 590 00:30:44,126 --> 00:30:48,630 in tako lahko pokličete .delete Metoda instance samo na to stvar. 591 00:30:48,630 --> 00:30:51,674 >> Torej, če si hotel iti nazaj v to zanko tod 592 00:30:51,674 --> 00:30:53,465 in dejansko, namesto za pošiljanje e-pošte vse 593 00:30:53,465 --> 00:30:56,577 od študentov, katerih razred manj od 75, boste želeli, da jih izbrisati, 594 00:30:56,577 --> 00:30:58,660 v to zanko si lahko pokličite s.delete primerek. 595 00:30:58,660 --> 00:31:04,180 596 00:31:04,180 --> 00:31:07,780 In zelo zadnja stvar, ki jo želite storiti, je vsakič, ko boste vzpostavili povezavo, 597 00:31:07,780 --> 00:31:10,350 in ste končali s svojim delom, želite poklicati db.close, 598 00:31:10,350 --> 00:31:13,190 kjer je db, da podatkovna baza ugovarja, da smo imeli prej. 599 00:31:13,190 --> 00:31:18,290 In želite, da se prepričajte, da Vse postane zaprta od. 600 00:31:18,290 --> 00:31:18,790 >> Cool. 601 00:31:18,790 --> 00:31:22,410 Torej, zdaj, imam primer aplikacijo. 602 00:31:22,410 --> 00:31:26,880 Sem nekako pre-made vse samo tako, da ne bo prišlo v živo kodiranje 603 00:31:26,880 --> 00:31:30,220 napake, vendar pa se lahko sprehodimo skozi ga in videli, kako bi si dal Flask 604 00:31:30,220 --> 00:31:33,685 in peewee skupaj in bi preprosto aplikacijo. 605 00:31:33,685 --> 00:31:38,680 Kličem ga CS50 rant, in to je neke vrste preprost blog platformo. 606 00:31:38,680 --> 00:31:41,150 >> Torej, najprej bom prost in pokazati, kako izgleda, 607 00:31:41,150 --> 00:31:42,890 in potem bomo lahko ogledate več v kodo. 608 00:31:42,890 --> 00:32:00,470 609 00:32:00,470 --> 00:32:02,830 Ok, tako da je šele teči to. 610 00:32:02,830 --> 00:32:14,040 611 00:32:14,040 --> 00:32:17,250 Cool, bom naredil to malo manjši. 612 00:32:17,250 --> 00:32:20,000 To ni zelo lepa, samo zato, ker Nisem naredila veliko CSS, 613 00:32:20,000 --> 00:32:23,255 ampak kaj počne, je, da ima Ta baza blog delovnih mest, 614 00:32:23,255 --> 00:32:25,630 in gre skozi vse njih, in jih bo prikazal 615 00:32:25,630 --> 00:32:28,170 na strani v vrstnem redu zadnja. 616 00:32:28,170 --> 00:32:30,920 In tako to so le nekateri objav da sem imel shranjene v bazi podatkov. 617 00:32:30,920 --> 00:32:35,680 >> Torej, če želimo ustvariti novo pošta, lahko gremo na Dodaj novo delovno mesto, 618 00:32:35,680 --> 00:32:42,720 in bomo lahko vnesete naslov mesto, tako da nekaj podobnega, CS50 seminar. 619 00:32:42,720 --> 00:32:45,360 620 00:32:45,360 --> 00:32:46,735 Wow, res uživa seminarja. 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 Potem ko pritisnete post, in da bo vas preusmeri nazaj na domačo stran, 624 00:32:56,060 --> 00:33:00,039 in potem boste videli, da je bil dodan zadnji komentar. 625 00:33:00,039 --> 00:33:01,580 In še vedno imamo vse tiste tam. 626 00:33:01,580 --> 00:33:08,080 Torej sedaj, kaj je korak skozi vse kodo in videli, kako se to izvaja. 627 00:33:08,080 --> 00:33:11,995 >> Torej, mislim, da je prva stvar, ki Oglejmo si oglejte, je pravzaprav modeli. 628 00:33:11,995 --> 00:33:14,120 Veliko časa, ko ste načrtovanju nekaj, 629 00:33:14,120 --> 00:33:17,036 želite razmišljati najprej o tem, kako boš, da zastopa svoje podatke, 630 00:33:17,036 --> 00:33:22,915 in nato design stvari okoli, da tako da vse, kar ima smisel. 631 00:33:22,915 --> 00:33:25,290 In da je pravzaprav, kako sem je to storil, ko sem bil kar ta, 632 00:33:25,290 --> 00:33:28,030 Sedel sem in mislil, kaj hočem v post. 633 00:33:28,030 --> 00:33:32,130 >> Torej, tukaj imamo enako strukturo da sem omenil že prej, 634 00:33:32,130 --> 00:33:33,755 kjer delamo db = Sqldatabase ("posts.db"). 635 00:33:33,755 --> 00:33:37,840 636 00:33:37,840 --> 00:33:40,980 V resnici si verjetno ne želite, na trdi kodo v zbirkah podatkov vašega imena. 637 00:33:40,980 --> 00:33:43,730 To bi verjetno morali biti parameter ki je shranjena nekje, morda 638 00:33:43,730 --> 00:33:45,940 v nastavitveni datoteki, ampak v mali primer, kot je ta, 639 00:33:45,940 --> 00:33:48,310 to je v redu, da trdo kodo, ki v. 640 00:33:48,310 --> 00:33:53,510 >> Torej, zdaj imamo ta post razred, ki podeduje od osnovnega modela. 641 00:33:53,510 --> 00:33:56,930 In to je, enkrat, ID = PrimaryKeyField. 642 00:33:56,930 --> 00:34:02,250 Pravzaprav, če ne določite, če sem dejansko znebili tega, 643 00:34:02,250 --> 00:34:07,152 potem peewee bomo poskrbeli za avtomatično ustvarja ta ID polje, 644 00:34:07,152 --> 00:34:09,360 in se bo samodejno da to PrimaryKey, ki 645 00:34:09,360 --> 00:34:12,485 Mislim, da je res lepo, saj je običajno, To je nekaj, kar si želite imeti, 646 00:34:12,485 --> 00:34:16,239 ampak mi je všeč, da ga v posebej, Samo tako se spomnim, da je tam. 647 00:34:16,239 --> 00:34:19,480 Toda, če ne določite, da, da bo tam samodejno. 648 00:34:19,480 --> 00:34:22,198 >> Torej, imam datum, ki je DateTimeField, in vse 649 00:34:22,198 --> 00:34:24,864 ti različni polja, če vas poglej peewee dokumentacije, 650 00:34:24,864 --> 00:34:28,920 to vam bom dal seznam različnih vrste področij, ki jih lahko uporabite. 651 00:34:28,920 --> 00:34:34,440 Za večino del, je analogen kaj bi vi videli v SQL. 652 00:34:34,440 --> 00:34:37,699 Torej obstaja CharField, A VarCharFields, TextFields, 653 00:34:37,699 --> 00:34:40,550 ki so zelo dolgo besedila, kot blog post 654 00:34:40,550 --> 00:34:44,460 potencialno DateTimeFields, DoubleFields, FloatFields, 655 00:34:44,460 --> 00:34:46,100 vse stvari, kot je ta. 656 00:34:46,100 --> 00:34:51,570 >> In lahko prenese tudi v drugih argumentov z njim, ki je nisem določite tukaj. 657 00:34:51,570 --> 00:34:55,719 Recimo, na primer, ni želel omogočajo dve mesti, da imajo enak naziv, 658 00:34:55,719 --> 00:34:59,672 si lahko določite nekaj podobnega edinstven = True, 659 00:34:59,672 --> 00:35:02,880 in to je samo dodaten parameter za polje, da ko jo pripravlja navzdol 660 00:35:02,880 --> 00:35:06,865 v SQL, navede da mora biti edinstvena. 661 00:35:06,865 --> 00:35:09,740 Določite lahko tudi nekaj podobnega ni nič in vse druge stvari, 662 00:35:09,740 --> 00:35:11,750 si normalno delati v SQL. 663 00:35:11,750 --> 00:35:16,020 Torej, to je zelo preprosta model, ki ima datum. 664 00:35:16,020 --> 00:35:19,460 Obvestilo, tukaj, v DateTimeField, I določeno, kaj je privzeta je. 665 00:35:19,460 --> 00:35:22,560 Sem določeno, da bo datetime.datetime.now, 666 00:35:22,560 --> 00:35:24,920 zaradi načina, da to gets ocenili, 667 00:35:24,920 --> 00:35:28,750 dejansko ocenjuje datetime.now ko 668 00:35:28,750 --> 00:35:32,110 da dobi vstavi v bazo podatkov. 669 00:35:32,110 --> 00:35:34,760 >> Mislim, da sem imel dvakrat preveriti to, 670 00:35:34,760 --> 00:35:38,222 ampak če si naredil kaj takega, potem bi dejansko ocenila, da je nekoč, 671 00:35:38,222 --> 00:35:40,180 in nato DateTime bi vedno enak. 672 00:35:40,180 --> 00:35:44,240 Torej, samo če delaš nekaj z datetimes, dvojno preveri 673 00:35:44,240 --> 00:35:47,080 da je ocenjevanje, ko postane dejansko vstavljena, ali pa 674 00:35:47,080 --> 00:35:48,780 vas bo morda zmeden. 675 00:35:48,780 --> 00:35:51,221 >> Naslov je samo CharField, ki tam 676 00:35:51,221 --> 00:35:53,970 več argumenti lahko prestanejo pri določanju, kako dolgo si 677 00:35:53,970 --> 00:35:56,170 želimo, da je, ampak tukaj, ni važno. 678 00:35:56,170 --> 00:35:58,687 In Besedilo, ki se bo besedilo celotno mesto, 679 00:35:58,687 --> 00:36:01,020 in da se dogaja, da je TextField samo zato, ker si želiš 680 00:36:01,020 --> 00:36:03,370 dovoliti, da je precej dolg niz. 681 00:36:03,370 --> 00:36:05,970 >> Potem imamo to Meta podrazred, da samo 682 00:36:05,970 --> 00:36:11,250 določa, da želimo zbirko podatkov če je to dejansko odprla v 683 00:36:11,250 --> 00:36:14,267 biti PP predmet, ki ga imamo tukaj. 684 00:36:14,267 --> 00:36:16,350 In zadnja stvar, ki jo imajo tukaj, je le ta funkcija 685 00:36:16,350 --> 00:36:18,120 da bomo uporabite iz našega glavnega app 686 00:36:18,120 --> 00:36:23,970 inicializirati zbirke podatkov za povezavo z je, nato pa ustvariti Post tabelo. 687 00:36:23,970 --> 00:36:26,880 >> Zdaj pa si oglejmo sam glavni app. 688 00:36:26,880 --> 00:36:30,800 Torej, tale je precej malo dlje od tistih, 689 00:36:30,800 --> 00:36:34,840 da smo videli prej, vendar upam, da ne preveč slabo. 690 00:36:34,840 --> 00:36:37,140 Torej, kaj mi to razširi ven. 691 00:36:37,140 --> 00:36:38,370 V redu. 692 00:36:38,370 --> 00:36:42,070 >> Torej, opazili in vrh sem uvožene cel kup drugih stvari 693 00:36:42,070 --> 00:36:44,129 od Bučka, da imamo ne res videl. 694 00:36:44,129 --> 00:36:46,670 In upam, da bomo lahko šli skozi vsak od njih enega po enega 695 00:36:46,670 --> 00:36:49,420 in govori malo več o tem jim, razvrščenih po npr. 696 00:36:49,420 --> 00:36:51,380 Torej, imamo bučke in render_template, 697 00:36:51,380 --> 00:36:54,370 ki smo videli prej, ta zahteva objekt, 698 00:36:54,370 --> 00:37:00,400 ki bo prišel, ko gledamo, kako obliko, da sem pokazal dejansko 699 00:37:00,400 --> 00:37:01,170 deluje. 700 00:37:01,170 --> 00:37:04,850 Preusmeriti, ki vam omogoča, da preusmerijo nazaj od Create New Post 701 00:37:04,850 --> 00:37:11,710 nazaj na prvotno strani in nato URL, ki je nekaj, kar vam omogoča 702 00:37:11,710 --> 00:37:15,550 ugotoviti, kje na Spletno mesto posebno stran. 703 00:37:15,550 --> 00:37:17,810 >> Torej, naslednji stvar, ki mi je uvoz I 704 00:37:17,810 --> 00:37:21,550 vse informacije od modelov Datoteke, ki smo samo gledaš. 705 00:37:21,550 --> 00:37:23,140 In, ja. 706 00:37:23,140 --> 00:37:28,720 >> Torej, nekaj drugega, novega, ki prihaja gor, ko imate opravka s, 707 00:37:28,720 --> 00:37:31,850 predvsem podatkovne baze, je, da lahko določite 708 00:37:31,850 --> 00:37:35,110 funkcija, ki dobi imenovani pred vsaka prošnja, in funkcija, ki dobi 709 00:37:35,110 --> 00:37:39,690 imenuje po vsaki zahtevi, ki uporabljajo to Zahteva po funkciji Tapetniško app.before. 710 00:37:39,690 --> 00:37:42,324 >> In tako bo ta dobil usmrčen povsod, kjer je ta funkcija. 711 00:37:42,324 --> 00:37:44,240 To pa ni treba imenovani pred zahtevo, 712 00:37:44,240 --> 00:37:46,281 vendar običajno, da je nekaj smiselno, da ga pokličete. 713 00:37:46,281 --> 00:37:48,580 714 00:37:48,580 --> 00:37:51,650 Določite lahko ne glede na funkcijo želite, da se tam imenuje, 715 00:37:51,650 --> 00:37:56,330 tako da sem določeno to initialize_db funkcija, da smo imeli že v Models 716 00:37:56,330 --> 00:38:02,390 datoteke, tako da pred vsako zahtevo, ki jih želite povezati z bazo podatkov. 717 00:38:02,390 --> 00:38:04,560 >> Obstajata dva različna načinov, kako lahko to storite. 718 00:38:04,560 --> 00:38:10,830 To lahko storiteapp., I Verjamem, da je after_request. 719 00:38:10,830 --> 00:38:13,800 In razlika med after_request in teardown_request, 720 00:38:13,800 --> 00:38:17,590 je, da bo after_request zgodilo le če zahteva dejansko bil veljaven. 721 00:38:17,590 --> 00:38:20,440 In tako, samo če Zahteva je bila uspešna, 722 00:38:20,440 --> 00:38:22,490 če ni nič narobe, vendar teardown_request 723 00:38:22,490 --> 00:38:26,300 se zgodi v primeru uspešne zahtevek, ali v primeru napake. 724 00:38:26,300 --> 00:38:28,252 >> Torej, običajno, hočeš uporabiti teardown_request, 725 00:38:28,252 --> 00:38:30,460 če hočeš narediti nekaj, posebej različna 726 00:38:30,460 --> 00:38:31,470 v primeru napake. 727 00:38:31,470 --> 00:38:35,122 Ampak samo za zapiranje podatkovne baze, ali uspe ali če ne, 728 00:38:35,122 --> 00:38:37,080 delamo želite odklopiti iz baze podatkov. 729 00:38:37,080 --> 00:38:41,240 Tako se imenuje, db.close o db objekta. 730 00:38:41,240 --> 00:38:43,740 >> Opazimo, da teardown_request je v izjemo. 731 00:38:43,740 --> 00:38:46,781 Torej, lahko preverite, če je bilo dejansko napaka, ko so ga zaprli, 732 00:38:46,781 --> 00:38:49,390 ampak tukaj, upam, da obstaja niso cel kup napak, 733 00:38:49,390 --> 00:38:52,720 tako da smo nekako spregledali dejstvo, da. 734 00:38:52,720 --> 00:38:55,990 >> Ok, in ostalo od njega ni preveč slabo. 735 00:38:55,990 --> 00:39:02,240 Torej, ko gremo na spletno stran, smo postali to home.html predlogo 736 00:39:02,240 --> 00:39:03,490 da se bodo odprle. 737 00:39:03,490 --> 00:39:06,240 Preval je na delovnem mestu enaka, in kaj je to 738 00:39:06,240 --> 00:39:10,260 pa je, ne pozabite, imamo to objavo Model, zato smo izbrali vse prispevke, 739 00:39:10,260 --> 00:39:13,890 in potem še ena stvar, ki jo lahko naredite, lahko določite klavzulo, kjer 740 00:39:13,890 --> 00:39:16,910 lahko določite naročite jo, in tako smo se 741 00:39:16,910 --> 00:39:18,820 vseh delovnih mest, ki dobili izbran, in nato 742 00:39:18,820 --> 00:39:22,590 smo jih naročite z post.date.descending. 743 00:39:22,590 --> 00:39:25,030 In da se opredeli, kdaj dejansko prišel ven, 744 00:39:25,030 --> 00:39:29,250 najnovejša ena bo zelo prvi. 745 00:39:29,250 --> 00:39:31,420 >> In potem se peljemo, da je v predlogo home.html, 746 00:39:31,420 --> 00:39:34,240 tako da je dejansko odprla da Predloga res hitro, 747 00:39:34,240 --> 00:39:36,760 in si oglejte, kako to deluje. 748 00:39:36,760 --> 00:39:42,130 In to ne le HTML, vendar upam, da se lahko osredotočimo na Python. 749 00:39:42,130 --> 00:39:46,960 >> Torej obstaja povezava s dodati nove Post, in tako to določa pot 750 00:39:46,960 --> 00:39:51,580 v bučko, ki smo opredeliti, kar je tukaj. 751 00:39:51,580 --> 00:39:56,310 To je nova objava pot, in smo določite, da tu gor. 752 00:39:56,310 --> 00:40:00,450 In da je povezava, ki bo nato šel na tej progi v bučko strežniku. 753 00:40:00,450 --> 00:40:03,820 >> Bolj zanimiva stvar je to za zanko tukaj. 754 00:40:03,820 --> 00:40:07,685 Tako smo določiti, da se ta po parameter, ki 755 00:40:07,685 --> 00:40:09,560 je prešla v render_template funkcija, 756 00:40:09,560 --> 00:40:13,550 za vsako delovno mesto v post-ih predmet, ki dobi opravil v. 757 00:40:13,550 --> 00:40:16,600 Želimo, da natisnete naslov mesto, v H1, 758 00:40:16,600 --> 00:40:21,930 in nato v nadaljevanju, želimo natisniti post besedilo v odstavku. 759 00:40:21,930 --> 00:40:25,710 >> In tukaj, lahko smo dejansko pokličete funkcijo Python, 760 00:40:25,710 --> 00:40:35,130 zato lahko rečemo strftime, ST-RF-time, in lahko preide v format string 761 00:40:35,130 --> 00:40:37,064 da želite natisniti podatke iz. 762 00:40:37,064 --> 00:40:39,980 Torej, to je, je zelo lepo, da si lahko dejansko imenujemo to funkcijo Python 763 00:40:39,980 --> 00:40:41,090 od znotraj tukaj. 764 00:40:41,090 --> 00:40:44,370 Nimate storiti oblikovanje na stran krmilnik, saj res, 765 00:40:44,370 --> 00:40:47,770 formatiranje datum je nekaj, kar si želijo poslovati v View. 766 00:40:47,770 --> 00:40:51,480 >> In vse te odstotkov spravil ni zelo pomembna. 767 00:40:51,480 --> 00:40:55,270 Če pogledaš gor dokumentacijo za funkcijo strftime v Python, 768 00:40:55,270 --> 00:40:57,040 opredeljuje vse te stvari, ampak da je 769 00:40:57,040 --> 00:40:59,190 kako, ko smo iskali na domači strani tukaj 770 00:40:59,190 --> 00:41:04,440 da oblikuje to z lepo datum, in opredeljuje AM ali PM, 771 00:41:04,440 --> 00:41:09,410 ampak normalno, če bomo ni bilo to tukaj, 772 00:41:09,410 --> 00:41:14,024 boste verjetno dobili nekaj smeti datum, ki ni videti zelo dobro. 773 00:41:14,024 --> 00:41:15,940 In potem smo se opredelijo post.text, in sem lahko 774 00:41:15,940 --> 00:41:19,460 so dal par prelomi vrstic tukaj, samo 775 00:41:19,460 --> 00:41:21,820 postaviti nekaj presledke med vsako delovno mesto. 776 00:41:21,820 --> 00:41:26,270 >> Torej, mislim, da je najbolj pomembno, stvar v tem primeru 777 00:41:26,270 --> 00:41:28,697 je, da lahko uporabite to zanko. 778 00:41:28,697 --> 00:41:30,780 In to je analogen stvari, ki jih lahko storite v PHP. 779 00:41:30,780 --> 00:41:32,905 Lahko Ponovil skozi, Vse dobi sprejet, 780 00:41:32,905 --> 00:41:36,719 in tako, namesto da bi morali narediti copy / paste, copy / paste vse HTML, 781 00:41:36,719 --> 00:41:40,010 boste morali napisati enkrat, in nato lahko Ponovil preko vseh delovnih mest. 782 00:41:40,010 --> 00:41:41,510 >> In to je nekaj, skupno to, da hočeš 783 00:41:41,510 --> 00:41:44,510 storiti, ko imate veliko podatkov, je, da za vse, kar je v vaših podatkov, 784 00:41:44,510 --> 00:41:48,370 hočeš narediti podobno stvar. 785 00:41:48,370 --> 00:41:51,690 In potem, samo ne pozabite, da ko vas želite natisniti nekaj izrecno 786 00:41:51,690 --> 00:41:54,780 v HTML, uporabite dvojne naramnice tukaj, 787 00:41:54,780 --> 00:41:57,820 potem pa, če želite, da določite nekaj informacij o stanju, 788 00:41:57,820 --> 00:42:02,430 ali pa za zanke, ki jih uporabite odstotni nosilec. 789 00:42:02,430 --> 00:42:08,730 >> Torej, vrača v Python Koda, tako da razloži 790 00:42:08,730 --> 00:42:12,242 kaj se dogaja v glavnem pot, ko smo šli tja, 791 00:42:12,242 --> 00:42:14,450 to samo prikazuje vse objav, ampak potem je vprašanje 792 00:42:14,450 --> 00:42:17,440 se, kako smo dejansko dobili objave v bazo podatkov, ki je 793 00:42:17,440 --> 00:42:18,970 je malo bolj zanimivo. 794 00:42:18,970 --> 00:42:23,960 >> Torej, ko boste kliknili na New Post povezavo, ki smo ga videli tukaj, 795 00:42:23,960 --> 00:42:26,000 vas preusmeri na tem obrazcu. 796 00:42:26,000 --> 00:42:29,580 In to je samo preprost klic na render_template funkcija, ki nato 797 00:42:29,580 --> 00:42:32,110 prehaja na novo delovno mesto v obliki HTML. 798 00:42:32,110 --> 00:42:36,212 Torej, kaj je, da pogled na to. 799 00:42:36,212 --> 00:42:37,420 Torej, to je ena zelo preprosta. 800 00:42:37,420 --> 00:42:45,110 Ima preprost HTML obliko, ki bo videti malo pozna, 801 00:42:45,110 --> 00:42:47,380 temelji na obrazcih v CS50 finance. 802 00:42:47,380 --> 00:42:49,940 In tako, smo tu določite, dejanje. 803 00:42:49,940 --> 00:42:52,435 In tukaj, če delate s PHP, je normalno, 804 00:42:52,435 --> 00:42:55,930 bi bilo nekaj podobnega, create.PHP, ampak tukaj 805 00:42:55,930 --> 00:42:59,960 smo dejansko določite pot v bučko strežniku. 806 00:42:59,960 --> 00:43:02,520 In tako, ustreza tej poti za ustvarjanje poti 807 00:43:02,520 --> 00:43:05,680 da imamo tukaj, ki bomo šli v sekundo. 808 00:43:05,680 --> 00:43:07,630 >> In tako smo se določajo, da to je metoda, po, 809 00:43:07,630 --> 00:43:09,820 ker želimo poslati ta oblika podatkov, in ponavadi 810 00:43:09,820 --> 00:43:12,945 ko ste pošiljanju podatkov z obrazca, boste morda želeli uporabiti zahtevo za pošto, 811 00:43:12,945 --> 00:43:15,760 samo zato, da ne boste na koncu s tem velike, počasne URL. 812 00:43:15,760 --> 00:43:18,970 Vendar pa lahko uporabite tudi zahtevo GET, in jih prenesti s spremenljivo usmerjanje, 813 00:43:18,970 --> 00:43:21,170 ampak za oblike, to je lepo na zahtevo post tukaj. 814 00:43:21,170 --> 00:43:24,620 In tako potem, samo ti je všeč bi naredil s HTML in PHP, 815 00:43:24,620 --> 00:43:28,420 lahko določite te besedilne vložkov, in lahko določite ime njih, 816 00:43:28,420 --> 00:43:33,490 in to je ime, ki bo dobil opravil v dogovoru objekt v bučko. 817 00:43:33,490 --> 00:43:36,960 >> In potem imamo Submit gumb, ki pravi Post. 818 00:43:36,960 --> 00:43:40,760 In tukaj, Post je ime od gumb, ker je to blog post, 819 00:43:40,760 --> 00:43:42,700 ampak tukaj, post je metoda zahteva. 820 00:43:42,700 --> 00:43:47,060 Torej, to so ista beseda ampak dejansko nepovezani. 821 00:43:47,060 --> 00:43:48,460 Ja 822 00:43:48,460 --> 00:43:54,800 >> Če se vrnemo k kode Python, ko smo imenovali ustvariti metodo, 823 00:43:54,800 --> 00:43:57,702 Opazili tukaj, da boste lahko dejansko podate v relaciji 824 00:43:57,702 --> 00:44:00,650 metode zahteva da želite sprejeti, 825 00:44:00,650 --> 00:44:04,770 in tako sem, navedite, da sem samo želijo sprejeti Post metodo. 826 00:44:04,770 --> 00:44:09,800 Torej, če sem dejansko poskusite obiskati stran neposredno, ki je s pomočjo zahtevo GET, 827 00:44:09,800 --> 00:44:11,700 to mi bo povedal, "Metoda ni dovoljena." 828 00:44:11,700 --> 00:44:15,840 >> In tako, imate strani, nekako kot To ustvari stran, ki sem le 829 00:44:15,840 --> 00:44:20,192 res uporabljajo kot način za obrazec dobite predložiti, 830 00:44:20,192 --> 00:44:22,900 lahko določite, da ne boste želijo ljudi, da bi lahko šel tja 831 00:44:22,900 --> 00:44:25,650 neposredno prek zahtevo GET, ali če niste želeli, 832 00:44:25,650 --> 00:44:28,580 iz neznanega razloga, Post zahteva, si lahko samo določite tu, 833 00:44:28,580 --> 00:44:32,720 toda v tem primeru smo pravkar želijo Post zahteva, da gredo ven. 834 00:44:32,720 --> 00:44:38,700 >> Torej, kadar se create_post imenuje, ko smo obiskali, da preko Post zahtevo 835 00:44:38,700 --> 00:44:43,600 vsakič, ko greste na posebno pot, tam je ta zahteva objekt, 836 00:44:43,600 --> 00:44:46,640 in smo morali uvoziti prijave na samem vrhu, 837 00:44:46,640 --> 00:44:49,640 vendar pa je ta zahtevek predmet, ki dobi opravil v, 838 00:44:49,640 --> 00:44:53,210 in lahko dostopate do podatkov obrazca, ki bo dobil avtomatično napolni 839 00:44:53,210 --> 00:44:55,070 ko boste poslali zahtevo obliki. 840 00:44:55,070 --> 00:44:56,990 >> In potem, kaj mislim je res kul, se 841 00:44:56,990 --> 00:45:02,840 da oblika objekta se prenesejo v, je samo slovar Python, ki 842 00:45:02,840 --> 00:45:10,560 vsebuje, če access-- tako sem, naj me dvigni HTML zraven nje, samo 843 00:45:10,560 --> 00:45:17,670 tako da lahko imate, da kot referenca, ja, tako 844 00:45:17,670 --> 00:45:21,060 imena, ki jih podate tukaj za različna področja, tako 845 00:45:21,060 --> 00:45:23,900 naslov in besedilo, smo nato pa uporabite tiste tukaj 846 00:45:23,900 --> 00:45:27,110 kot indeksi v podatke v obrazcu. 847 00:45:27,110 --> 00:45:28,950 Torej, to je super priročno. 848 00:45:28,950 --> 00:45:33,320 >> Torej pravimo post.create, ki ustvari in samodejno vstavite 849 00:45:33,320 --> 00:45:36,850 ta nova objava objekt v bazo podatkov. 850 00:45:36,850 --> 00:45:40,690 In mislim, da je to ustvari funkcijo tukaj je res super primer, kako 851 00:45:40,690 --> 00:45:44,900 močan Bučko in dela s tem, ker če ste bili delaš nekaj 852 00:45:44,900 --> 00:45:48,660 v PHP, boste morda morali storiti veliko potrjevanja, 853 00:45:48,660 --> 00:45:51,730 bi morali potem vzpostavitev povezave z bazo podatkov, 854 00:45:51,730 --> 00:45:55,210 bi morali potem izvršiti SQL poizvedbo, 855 00:45:55,210 --> 00:45:59,550 tukaj pa imamo samo to lepo post.create, ki smo jih lahko potem samo 856 00:45:59,550 --> 00:46:01,520 dobili informacije ven na zahtevo objekta, 857 00:46:01,520 --> 00:46:05,370 in nato prenesejo v novo objavili, da smo ustvarili. 858 00:46:05,370 --> 00:46:07,850 >> In potem, zelo zadnja kar želimo narediti, 859 00:46:07,850 --> 00:46:09,630 je preusmerjanja Uporabnik nazaj do doma. 860 00:46:09,630 --> 00:46:13,020 In tako bomo uporabili to Bučko preusmeriti funkcijo. 861 00:46:13,020 --> 00:46:17,770 In nekaj, kar ne bi videli preden je bila ta funkcija URL. 862 00:46:17,770 --> 00:46:21,970 Torej URL za funkcijo omogoča podaš v resnici ime 863 00:46:21,970 --> 00:46:26,090 za funkcije v vašem Python kodo, namesto določeni progi 864 00:46:26,090 --> 00:46:26,720 da je na. 865 00:46:26,720 --> 00:46:32,107 >> Torej, jaz bi imel prav tako enostavno preusmerjeni uporabniku, da poševnica, 866 00:46:32,107 --> 00:46:37,050 ki bi ga poslali nazaj domov, vendar uporabo URL je funkcija lepo, 867 00:46:37,050 --> 00:46:39,990 ker če spremenite kraj, kjer so stvari, 868 00:46:39,990 --> 00:46:44,080 tako da recimo, da sem se spremeniti domov biti na / doma, namesto, 869 00:46:44,080 --> 00:46:47,040 to bi še potem vrnil / domov, ker dejansko gre in pogleda 870 00:46:47,040 --> 00:46:50,770 ime funkcije, in vam bo dala nazaj URL za to. 871 00:46:50,770 --> 00:46:52,490 >> Torej, nekako na Predpostavka, da ste 872 00:46:52,490 --> 00:46:55,489 bolj verjetno, da spremenite kjer stvari so, kot imena funkcij. 873 00:46:55,489 --> 00:46:58,840 Lahko uporabite to res Lepo URL za funkcijo. 874 00:46:58,840 --> 00:47:02,470 In še ena stvar, ki se zaveda da je malce zapleteno, 875 00:47:02,470 --> 00:47:05,750 je, da misliš, da si lahko samo klic preusmeri na URL za, 876 00:47:05,750 --> 00:47:10,600 ampak dejansko vse poti imajo vrniti neke vrste besedila in HTML, 877 00:47:10,600 --> 00:47:14,360 tako da boste dejansko morali vrniti preusmeritev klica. 878 00:47:14,360 --> 00:47:18,379 V nasprotnem primeru, boste dobili nekaj neveljavna, o ne vračajo niz, 879 00:47:18,379 --> 00:47:21,420 ker vsi ti morali vrniti HTML si dejansko želijo, da postane. 880 00:47:21,420 --> 00:47:26,980 >> In tako, ko pokličete preusmeritev, vas preusmeri na stran, 881 00:47:26,980 --> 00:47:30,270 ampak dejansko vrne HTML morate izvesti, da preusmeritev. 882 00:47:30,270 --> 00:47:34,430 883 00:47:34,430 --> 00:47:37,110 Pojdi nazaj na domačo stran. 884 00:47:37,110 --> 00:47:39,200 Torej imamo ta dva različna mnenja. 885 00:47:39,200 --> 00:47:40,132 Imamo doma pogled. 886 00:47:40,132 --> 00:47:41,590 Ali pa, mislim da bi moral reči predloge. 887 00:47:41,590 --> 00:47:44,190 Imamo teh dveh predloge, doma predlogo, ki 888 00:47:44,190 --> 00:47:48,500 prikazuje vseh naših delovnih mest, in potem imamo to ad stvar, 889 00:47:48,500 --> 00:47:52,970 in ko boste kliknili na delovno mesto, gre na novi progi v bučko, 890 00:47:52,970 --> 00:47:55,920 vendar so pot ne nujno imajo ustrezno predlogo. 891 00:47:55,920 --> 00:47:59,290 892 00:47:59,290 --> 00:48:01,560 Nimate videti karkoli, vendar pa še vedno lahko 893 00:48:01,560 --> 00:48:04,090 ima to delo bo o zakulisju. 894 00:48:04,090 --> 00:48:07,450 In potem dobiš preusmerjeni nazaj na domačo stran. 895 00:48:07,450 --> 00:48:12,230 In zagotovo, to je enostavno delo v nekaterih lepši CSS v predlogo 896 00:48:12,230 --> 00:48:15,580 in da je ta videti veliko lepše, vendar pa so vsi glavni logike 897 00:48:15,580 --> 00:48:18,590 je tam v Python. 898 00:48:18,590 --> 00:48:20,020 >> Vsa vprašanja v zvezi s tem na primer? 899 00:48:20,020 --> 00:48:22,760 Vem, da obstaja veliko različne stvari se dogaja tam, 900 00:48:22,760 --> 00:48:25,341 Veliko stvari, ki jih ni videl prej, ampak kot nič. 901 00:48:25,341 --> 00:48:25,840 Ja. 902 00:48:25,840 --> 00:48:28,346 >> PUBLIKA 1: Ali imate storiti ničesar posebno za čiščenje podatkov, ki je 903 00:48:28,346 --> 00:48:29,600 prihajajo iz obrazca? 904 00:48:29,600 --> 00:48:31,109 Opazil sem, da si pravkar rekel "ustvariti" 905 00:48:31,109 --> 00:48:33,900 Ezra ZIGMOND: Ja, tako da je pravzaprav, da je res dobra točka. 906 00:48:33,900 --> 00:48:36,350 Torej je vprašanje, kajne je treba preveriti in se prepričajte, 907 00:48:36,350 --> 00:48:39,190 da so podatki veljaven in storiti vse vrste ribanje 908 00:48:39,190 --> 00:48:41,840 se prepričajte, da je veljavna, saj, kot lahko vidite tukaj, 909 00:48:41,840 --> 00:48:42,660 Jaz ne delam tega. 910 00:48:42,660 --> 00:48:48,140 Torej, da vidimo, kaj se zgodi če sem po nekaj prazno. 911 00:48:48,140 --> 00:48:51,190 Torej, bo to dejansko samo narediti prazno mesto in izpolnite datetime. 912 00:48:51,190 --> 00:48:55,990 >> Torej, v resnici, bi si verjetno želijo narediti nekaj podobnega, 913 00:48:55,990 --> 00:49:04,749 mogoče določiti, če je naslov enak prazen niz, potem ne delaj tega. 914 00:49:04,749 --> 00:49:07,290 Ali pa samo to, če je naslov ni enak postavljenega niza. 915 00:49:07,290 --> 00:49:10,330 Tako da dejansko ne samodejno skrbeli za tega čiščenja 916 00:49:10,330 --> 00:49:12,820 za vas, tako da boste še vedno morali storiti, da. 917 00:49:12,820 --> 00:49:14,330 Ja, dobro vprašanje. 918 00:49:14,330 --> 00:49:18,497 >> PUBLIKA 2: Ali grmičevja za injiciranje nadaljevanje? 919 00:49:18,497 --> 00:49:19,890 Ali veš? 920 00:49:19,890 --> 00:49:22,830 >> Ezra ZIGMOND: Upajmo, peewee počne. 921 00:49:22,830 --> 00:49:25,830 Mislim, da bi bilo vsekakor precej slab knjižnica, če ni storil tega. 922 00:49:25,830 --> 00:49:29,511 923 00:49:29,511 --> 00:49:32,690 Ne vem točno. 924 00:49:32,690 --> 00:49:34,820 Moral bi pogled na poizvedbe, ki je ustvarila. 925 00:49:34,820 --> 00:49:38,980 Mislim, da, če sem tipkal v blog post, ki nekako pogledal 926 00:49:38,980 --> 00:49:46,370 kot injiciranje SQL napad, kaj takega, če je to 927 00:49:46,370 --> 00:49:49,370 je kot polje z geslom ali kaj podobnega, lahko naredite nekaj takega. 928 00:49:49,370 --> 00:49:53,410 >> Mislim, da bo še dobili dobesedno objavil, 929 00:49:53,410 --> 00:49:59,200 ampak mislim, da peewee počne nekakšna ribanjem podatkov 930 00:49:59,200 --> 00:50:01,680 preden se dejansko izvede. 931 00:50:01,680 --> 00:50:04,510 >> PUBLIKA 1: To polje besedilo zasnovan tako, da golo besedilo, kajne? 932 00:50:04,510 --> 00:50:05,710 >> Ezra ZIGMOND: Ja, res je. 933 00:50:05,710 --> 00:50:06,465 Ja. 934 00:50:06,465 --> 00:50:09,590 Zato mislim, da je vse, tako da je to pravilno obnašanje, bo to storil, 935 00:50:09,590 --> 00:50:12,170 ampak mislim, da peewee upajmo, da počne 936 00:50:12,170 --> 00:50:13,780 neke vrste zaščito na svojem koncu. 937 00:50:13,780 --> 00:50:16,090 In če si hotel dvojno preveri, da obstaja 938 00:50:16,090 --> 00:50:19,530 so načini, ko ustvarjajo poizvedbo. 939 00:50:19,530 --> 00:50:22,622 tako da vam ne bi bilo treba pognati neposredno. 940 00:50:22,622 --> 00:50:24,330 Moral bi trajalo poglej dokumentacijo, 941 00:50:24,330 --> 00:50:27,930 vendar lahko dejansko ogledati SQL, ki ga ustvarja, 942 00:50:27,930 --> 00:50:30,840 in si oglejte to, in da prepričani, da je zbežala stvari. 943 00:50:30,840 --> 00:50:33,700 >> Drug razlog, zakaj boste morda želeli videti na SQL 944 00:50:33,700 --> 00:50:37,920 da peewee je prikazovanje, je, če Stvari se zdi, da se bo res počasi, 945 00:50:37,920 --> 00:50:41,090 lahko si oglejte in videli, kaj je to dejansko počne, ker je včasih 946 00:50:41,090 --> 00:50:44,670 zlahka nehote dodati in, kako jo napisati, 947 00:50:44,670 --> 00:50:47,880 lahko po nesreči jo imajo izbrati celotno zbirko podatkov prvega, 948 00:50:47,880 --> 00:50:50,230 in nato naredite nekaj operacijo razvrščanja o tem, kdaj ste res 949 00:50:50,230 --> 00:50:51,320 pomenilo, da izberete niz. 950 00:50:51,320 --> 00:50:53,560 >> In tako, če se stvari ne kar bo prav, 951 00:50:53,560 --> 00:50:57,300 je dobro, da si oglejte na zahtevo da je dejansko dobili ustvarila. 952 00:50:57,300 --> 00:50:57,800 Ja. 953 00:50:57,800 --> 00:51:02,100 >> PUBLIKA 2: Kdaj ste prvič začeli, daš v pristanišču kot 5000. 954 00:51:02,100 --> 00:51:02,904 >> Ezra ZIGMOND: Ja. 955 00:51:02,904 --> 00:51:06,070 PUBLIKA 2: Je privzeta s peewee, ali je to nekaj, kar lahko spremeni? 956 00:51:06,070 --> 00:51:10,870 Ezra ZIGMOND: Ja, tako da je Pristanišče je privzeta z bučko. 957 00:51:10,870 --> 00:51:13,061 Če ga boste pognali brez določajo ničesar, 958 00:51:13,061 --> 00:51:14,310 se bo samodejno storiti. 959 00:51:14,310 --> 00:51:16,060 Verjamem, da sem imel dvakrat preveriti to, 960 00:51:16,060 --> 00:51:19,130 vendar lahko določite, da v app.run, Mislim, da lahko narediš nekaj podobnega, 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 poskusite resnično hitro. 964 00:51:23,750 --> 00:51:29,100 965 00:51:29,100 --> 00:51:32,230 Ja, tako da lahko samo določite port = 8080, in da bo teči tam, 966 00:51:32,230 --> 00:51:36,130 kar mislim, če bi želel, da bi sistem deloval na IDE, nisem to preizkusili, 967 00:51:36,130 --> 00:51:38,527 ampak mislim, da če vas tekel na vratih 8080, 968 00:51:38,527 --> 00:51:40,360 boš verjetno lahko za dostop do strežnika, 969 00:51:40,360 --> 00:51:41,870 tako kot ste bili za spletno stran. 970 00:51:41,870 --> 00:51:44,390 >> Ja, ampak to je enostavno spremeniti, da če vas 971 00:51:44,390 --> 00:51:48,540 imate kakršno koli Port-posredovanje Stvari, ki jih morate storiti. 972 00:51:48,540 --> 00:51:50,410 >> Vsa druga vprašanja? 973 00:51:50,410 --> 00:51:50,916 Ja? 974 00:51:50,916 --> 00:51:53,416 PUBLIKA 1: Torej, sem videl v vašem modeli, ki, kot ste omenili, 975 00:51:53,416 --> 00:51:55,647 imate, da se opredelijo Baza podatkov za vsak predmet. 976 00:51:55,647 --> 00:51:58,105 Ali se zgodi, da veste, ne da bi bilo enostavno, če vas 977 00:51:58,105 --> 00:52:03,210 imajo veliko SQLite baze podatkov, ki ste želite uporabiti za eno samo spletno aplikacijo, 978 00:52:03,210 --> 00:52:07,210 da lahko samo določite kup različnega tisti v vašem modelu? 979 00:52:07,210 --> 00:52:11,620 >> Ezra ZIGMOND: Ja, pustite me odpreti, da se resnično hitro. 980 00:52:11,620 --> 00:52:17,570 Torej, praviš, če želite imeti kup različnih nečesa, morda 981 00:52:17,570 --> 00:52:22,670 všeč in študenti, za nekatere Razlog, nekaj takega? 982 00:52:22,670 --> 00:52:26,870 Ja, mislim, da Še vedno, vsak model 983 00:52:26,870 --> 00:52:30,652 bi bilo še vedno samo eno podatkovno bazo njej dodeljena 984 00:52:30,652 --> 00:52:32,610 ampak če si hotel imeti različni modeli, ki 985 00:52:32,610 --> 00:52:35,818 so različni predmeti zbirke podatkov dodeljena z njo, bi lahko zagotovo naredil. 986 00:52:35,818 --> 00:52:43,070 Torej, če sem ustvaril nov, kaj takega, 987 00:52:43,070 --> 00:52:47,000 in zdaj je ta študent, ki izgleda čudno kot blog post, 988 00:52:47,000 --> 00:52:49,390 Sem lahko določite, da se Podatkovna baza je enaka tukaj db_2. 989 00:52:49,390 --> 00:52:51,390 Torej, mislim, da je to Glavni način lahko to storite. 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 Vsa druga vprašanja? 993 00:52:58,410 --> 00:53:02,170 >> Torej samo do konca gor malo bit, tukaj je nekaj virov, 994 00:53:02,170 --> 00:53:06,030 in ti diapozitivi bodo objavljene na spletu tako da lahko dejansko priti do teh povezav. 995 00:53:06,030 --> 00:53:08,500 Najboljši viri so res dokumentacija za bučko 996 00:53:08,500 --> 00:53:09,930 in se peewee. 997 00:53:09,930 --> 00:53:12,940 Oni so napisana zelo dobro, mislim. 998 00:53:12,940 --> 00:53:18,180 Torej, na spletni strani Bučka je tukaj, in imajo QuickStart tutorial, ki 999 00:53:18,180 --> 00:53:20,710 bo vodil skozi podobno stvari, kar sem šel skozi, 1000 00:53:20,710 --> 00:53:23,560 če pa želite kakršno koli pregled stvari, da sem šel čez, 1001 00:53:23,560 --> 00:53:26,200 ali ste mislili, da sem pojasnil nekaj v nejasne poti, 1002 00:53:26,200 --> 00:53:28,390 oni imajo podobne primere tam. 1003 00:53:28,390 --> 00:53:31,570 >> Peewee ima dokumentacijo, in imajo QuickStart tutorial 1004 00:53:31,570 --> 00:53:34,650 ki gre preko glavnih parametrov da bi si želeli uporabljati. 1005 00:53:34,650 --> 00:53:38,900 Torej, stvari, ki sem govorila z edinstveno, in ki določajo neplačil, 1006 00:53:38,900 --> 00:53:42,710 različne vrste področij, ki lahko uporabite tiste, bi bili vsi tam. 1007 00:53:42,710 --> 00:53:44,690 >> Tudi, če imate vprašanja o peewee, 1008 00:53:44,690 --> 00:53:47,530 in jih objavili na stackoverflow, fant, ki je peewee dejansko 1009 00:53:47,530 --> 00:53:49,500 gre naprej in odgovori tistih, ki včasih. 1010 00:53:49,500 --> 00:53:53,200 Če imate vprašanje, upajmo je ne boste mogli odgovoriti, 1011 00:53:53,200 --> 00:53:54,867 ker je pisal vso stvar. 1012 00:53:54,867 --> 00:53:56,700 Mislim, da je vse, kar je Želel sem kritje. 1013 00:53:56,700 --> 00:53:58,930 Hvala za prihajajo ven. 1014 00:53:58,930 --> 00:54:02,688