1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:03,227 [Přehrávání hudby] 3 00:00:03,227 --> 00:00:04,705 4 00:00:04,705 --> 00:00:05,830 EZRA ZIGMOND: Ahoj, všichni. 5 00:00:05,830 --> 00:00:08,020 Díky, vyjde dnes. 6 00:00:08,020 --> 00:00:10,660 Tento seminář je "Python Web Apps s baňky. " 7 00:00:10,660 --> 00:00:14,510 >> Takže budu mluvit trochu o tom, proč 8 00:00:14,510 --> 00:00:17,400 možná budete chtít používat baňky, aby se Webové aplikace s Python, na rozdíl od 9 00:00:17,400 --> 00:00:21,556 na některých jiných rámců venku, jako je Django, který je nejvíce známý. 10 00:00:21,556 --> 00:00:24,330 Podtitul je "a Peewee, "což je něco, 11 00:00:24,330 --> 00:00:27,250 budeme mluvit o tom, jak k interakci s SQL databází. 12 00:00:27,250 --> 00:00:29,610 To je to opravdu pěkné. 13 00:00:29,610 --> 00:00:32,390 >> Takže, tady je to jen rychlý přehled z toho, co chci jít pryč. 14 00:00:32,390 --> 00:00:35,520 Tak, jako první, jen jeden snímek že to bude Quickstart, 15 00:00:35,520 --> 00:00:38,530 což je, jak se dostat vše, nastavit na vašem počítači. 16 00:00:38,530 --> 00:00:41,760 Budu demonstrovat to na mém lokálním počítači Mac, 17 00:00:41,760 --> 00:00:45,220 jen proto, že je místo, kde jsem to udělal předtím, jsem nejpohodlnější s tím, 18 00:00:45,220 --> 00:00:48,510 ale je to rozhodně možné na CD50 IDE. 19 00:00:48,510 --> 00:00:52,050 >> Takže po tom, chci představit, co Baňka je, 20 00:00:52,050 --> 00:00:55,089 a přesvědčit vás, proč byste měli použít v první řadě. 21 00:00:55,089 --> 00:00:56,880 Potom, dám rychlý příkladem toho, co vás 22 00:00:56,880 --> 00:01:00,550 můžete udělat v baňce rychlý příklad o tom, co můžete udělat v Peewee, 23 00:01:00,550 --> 00:01:05,010 a pak jsem vám ukáže více Kompletní příklad aplikace 24 00:01:05,010 --> 00:01:07,520 že jsem dal dohromady, že my mohou projít spolu. 25 00:01:07,520 --> 00:01:10,040 >> A nakonec, v Poslední snímek, mám 26 00:01:10,040 --> 00:01:12,730 některé zdroje, že se díváte na více informací online. 27 00:01:12,730 --> 00:01:15,560 To není kompletní tutorial o tom, jak používat baňky. 28 00:01:15,560 --> 00:01:18,140 A já doufám, že k odchodu nějaký čas na otázky. 29 00:01:18,140 --> 00:01:21,050 Každý, kdo sleduje lokálně, stačí jako, křičet ve středu 30 00:01:21,050 --> 00:01:22,340 pokud máte nějaké otázky. 31 00:01:22,340 --> 00:01:27,150 >> Takže rychlá instalace věci, Chcete-li sledovat spolu, 32 00:01:27,150 --> 00:01:29,240 nebo chcete-li si to na vašem vlastním stroji, 33 00:01:29,240 --> 00:01:32,440 Budu používat Python 2.7.10. 34 00:01:32,440 --> 00:01:35,860 Baňka funguje s Python 3, ale líbí se mi 35 00:01:35,860 --> 00:01:38,660 pomocí Python 2, protože tam je Některé balíčky, které Python 36 00:01:38,660 --> 00:01:40,910 nefungují s 3 dosud. 37 00:01:40,910 --> 00:01:44,800 Pokud jste nainstalovali pip, který je správce Python balíček, 38 00:01:44,800 --> 00:01:48,190 Myslím si, že pokud váš Python je větší než nebo roven bodu 2.7.9, 39 00:01:48,190 --> 00:01:52,220 to máte již nainstalován, je to super snadné instalaci těchto balíčků. 40 00:01:52,220 --> 00:01:54,990 >> Můžete si nainstalovat jádro Baňka, pip nainstalovat Peewee, 41 00:01:54,990 --> 00:01:58,600 Obvykle máte spustit sudo jen takže oprávnění fungovat. 42 00:01:58,600 --> 00:02:01,080 A pokud jste pomocí Super starou verzi Pythonu, 43 00:02:01,080 --> 00:02:05,100 Doporučuji aktualizaci Python, nebo používání EasyInstall k instalaci PIP. 44 00:02:05,100 --> 00:02:09,180 45 00:02:09,180 --> 00:02:11,120 Takže další otázka je, co je baňky? 46 00:02:11,120 --> 00:02:13,280 A myslím, nejprve rozumná otázka Uvažoval jsem, 47 00:02:13,280 --> 00:02:15,585 na dlouhou dobu, je, co je to webová aplikace? 48 00:02:15,585 --> 00:02:17,960 Vzhledem k tomu, že je to slovo, které jsem myslíte, že je hozen asi hodně 49 00:02:17,960 --> 00:02:19,240 že jsem ani nevěděl. 50 00:02:19,240 --> 00:02:22,340 A já si myslím, že nejlepší příkladem toho, co webová aplikace je, 51 00:02:22,340 --> 00:02:26,960 Opravdu je CS50 Finance, kde to není opravdu jen webové stránky, 52 00:02:26,960 --> 00:02:29,320 ale je to něco, co vás by mohla nějak komunikovat s. 53 00:02:29,320 --> 00:02:31,736 K dispozici jsou uživatelské účty a všechny druhy různých věcí. 54 00:02:31,736 --> 00:02:35,010 Takže, kde přesně jste čerpat čára mezi tím, co je webová stránka, 55 00:02:35,010 --> 00:02:38,780 a to, co je webová aplikace, je druh libovolná, ale myslím, že nápad, 56 00:02:38,780 --> 00:02:42,110 je to něco víc než jen webové stránky a je to užitečná aplikace. 57 00:02:42,110 --> 00:02:46,081 >> Takže, baňky je rámec pro vytváření webových aplikací pomocí jazyka Python. 58 00:02:46,081 --> 00:02:48,330 A doufejme, že do konce to, budu vás přesvědčí 59 00:02:48,330 --> 00:02:52,210 že byste mohli skutečně napsat něco jako CS50 financí Python, který jsem 60 00:02:52,210 --> 00:02:53,950 jako mnohem lepší, než PHP, osobně. 61 00:02:53,950 --> 00:02:57,320 >> Takže, baňka, se říká microframework, kterým, 62 00:02:57,320 --> 00:02:59,800 myslí, že je to velmi jednoduché, ale rozšiřitelné. 63 00:02:59,800 --> 00:03:02,980 Tak, to má jen to, co potřebujete, ale pokud chcete více funkcí, 64 00:03:02,980 --> 00:03:04,522 je to snadné, aby byly v. 65 00:03:04,522 --> 00:03:06,480 Ale jen proto, že je to microframework, není 66 00:03:06,480 --> 00:03:08,960 znamená, že je to jen pro malé projekty. 67 00:03:08,960 --> 00:03:12,590 Mám odkaz zde, který říká, že Obama používá baňky v roce 2012 68 00:03:12,590 --> 00:03:14,410 pro jeho kampaň webové stránky, což doufejme, 69 00:03:14,410 --> 00:03:16,937 je něco schválení. 70 00:03:16,937 --> 00:03:18,770 Ale věc, kterou jsem opravdu rád o baňky 71 00:03:18,770 --> 00:03:22,401 je to, že to opravdu není dělat nějaký druh rozhodnutí pro vás. 72 00:03:22,401 --> 00:03:24,150 Jen proto, že jsme mluví o webových aplikací, 73 00:03:24,150 --> 00:03:26,940 Musím porovnat s Ruby on Kolejnice a Django, z nichž oba 74 00:03:26,940 --> 00:03:30,450 jsou skvělé rámce, ale oba, aby předpoklady 75 00:03:30,450 --> 00:03:33,600 o tom, jak chcete komunikovat s databází, 76 00:03:33,600 --> 00:03:36,900 jak chcete prezentovat své pohledy, a jsou to rozhodně 77 00:03:36,900 --> 00:03:38,850 dobré aspekty, které. 78 00:03:38,850 --> 00:03:41,490 >> Například, Ruby on Rails má tuto účinnou záznamový systém, 79 00:03:41,490 --> 00:03:43,100 což je opravdu pěkný způsob interakce s daty, 80 00:03:43,100 --> 00:03:45,960 ale pokud chcete používat Ruby on Kolejnice, jste nějak svázané do toho. 81 00:03:45,960 --> 00:03:47,835 Ale s baňky, jak budu ukáže vám Peewee, 82 00:03:47,835 --> 00:03:49,830 můžete použít bez ohledu na druh databáze budete chtít, 83 00:03:49,830 --> 00:03:53,980 a vy můžete jen vytáhnout, že v jako rozšíření do baňky. 84 00:03:53,980 --> 00:03:56,350 >> Takže to je důvod, proč jsem se opravdu stejně jako baňky, je to, že to 85 00:03:56,350 --> 00:04:01,170 nedává předpoklady pro vás založené na věci, které nepotřebujete, opravdu. 86 00:04:01,170 --> 00:04:04,440 >> Takže, proč byste měli používat baňky? 87 00:04:04,440 --> 00:04:08,230 Výhodou je, že jen má opravdu základní funkce 88 00:04:08,230 --> 00:04:09,420 vestavěné do něj, že budete potřebovat. 89 00:04:09,420 --> 00:04:11,980 Tak, nemusíte se starat o porozumění spoustu věcí 90 00:04:11,980 --> 00:04:13,175 že nemáte opravdu potřebují. 91 00:04:13,175 --> 00:04:15,060 Nemusíte mít strach o vypnutí funkce 92 00:04:15,060 --> 00:04:16,620 že nemáte opravdu potřebují. 93 00:04:16,620 --> 00:04:21,082 >> A jak už jsem se zmínil, je to super snadno přidat do rozšíření věcí 94 00:04:21,082 --> 00:04:21,790 že si potřebujete. 95 00:04:21,790 --> 00:04:24,700 Některé z nich, baňky má jejich vlastní pro něj podporu. 96 00:04:24,700 --> 00:04:28,230 Takže je tu něco, co nazývá baňky admin, který odráží to admin 97 00:04:28,230 --> 00:04:32,060 panel, který poskytuje Django, což vám dává příjemný vizuální způsob, 98 00:04:32,060 --> 00:04:33,405 spravovat své webové stránky. 99 00:04:33,405 --> 00:04:35,280 Ale na druhou stranu, pokud jste dělat něco jednoduchého, 100 00:04:35,280 --> 00:04:39,550 pravděpodobně nebudete potřebovat velký admin panel, takže si myslím, že je super hezké. 101 00:04:39,550 --> 00:04:45,940 A nevýhody jsou, že máte méně energie po vybalení z krabice. 102 00:04:45,940 --> 00:04:49,660 Takže, když jste poprvé otevřít baňky, a ve vašem programu Python, 103 00:04:49,660 --> 00:04:53,150 stačí zadat z baňky import *, nebo cokoliv, 104 00:04:53,150 --> 00:04:55,957 nemusíte přesně získat všechny funkce budete chtít. 105 00:04:55,957 --> 00:04:58,540 A tak budete muset jasněji seznam funkce, které chcete. 106 00:04:58,540 --> 00:05:01,990 Takže to je jedna nevýhoda, ale já si myslí, že pro budování malých web 107 00:05:01,990 --> 00:05:04,782 aplikace jako Budu ukazovat vám, že to není opravdu problém. 108 00:05:04,782 --> 00:05:07,281 A co je poslední věc, kterou je měl říct, který je překlep, 109 00:05:07,281 --> 00:05:10,240 je, že existují méně standardizovány konvence pro jak používat baňky, 110 00:05:10,240 --> 00:05:12,400 jen proto, že tam nejsou tolik Lidé, které jej používají profesionálně 111 00:05:12,400 --> 00:05:13,191 ve srovnání s Django. 112 00:05:13,191 --> 00:05:16,380 Takže, když se podíváte něco jako, "Jak to mám udělat x" v Django, 113 00:05:16,380 --> 00:05:18,190 budete pravděpodobně najít. 114 00:05:18,190 --> 00:05:20,260 >> Tam je dobrý design vzory, které můžete použít, 115 00:05:20,260 --> 00:05:22,660 ale s baňky, to je druh jít svou vlastní cestou, 116 00:05:22,660 --> 00:05:24,850 jen proto, že je to docela malá knihovna. 117 00:05:24,850 --> 00:05:27,100 Takže to jsou ty nevýhody, ale myslím, že 118 00:05:27,100 --> 00:05:29,370 že je to stále dobrý knihovnu použít. 119 00:05:29,370 --> 00:05:31,909 >> Tak ať to jen skočit přímo do baňky. 120 00:05:31,909 --> 00:05:34,200 To rozhodně nebude být kompletní tutorial, 121 00:05:34,200 --> 00:05:37,480 ale je to, aby vám představu o tom, jak strukturovat věci, 122 00:05:37,480 --> 00:05:40,790 a tak budete cítit pohodlně jít off a při pohledu na dokumentaci 123 00:05:40,790 --> 00:05:42,570 a dozvědět se více. 124 00:05:42,570 --> 00:05:48,500 >> Takže mi dovolte, abych otevřít opravdu Jednoduchý příklad na první, 125 00:05:48,500 --> 00:05:50,737 a ukázat vám, co to vypadá, a pak se 126 00:05:50,737 --> 00:05:52,070 rozebrat to trochu víc. 127 00:05:52,070 --> 00:05:56,160 >> Tak to tady, dovolte mi, abych si to běží. 128 00:05:56,160 --> 00:06:06,800 129 00:06:06,800 --> 00:06:09,750 Tak jsem teď mít své aplikace běží. 130 00:06:09,750 --> 00:06:15,910 Jdu otevřít Safari, a je to běh na mém lokálním počítači. 131 00:06:15,910 --> 00:06:19,360 Takže jsem jen tak, aby to větší. 132 00:06:19,360 --> 00:06:23,960 Ale localhost: 5000 133 00:06:23,960 --> 00:06:27,650 >> A tak, právě teď, to vše dělá je, když navštívíte webové stránky, 134 00:06:27,650 --> 00:06:31,490 to vytiskne "Hello baňky," což není mimořádně užitečné, 135 00:06:31,490 --> 00:06:34,630 ale myslím, že je to v pohodě, že V tomto malém souboru zde, 136 00:06:34,630 --> 00:06:37,390 máme webový server běží že se tiskne něco. 137 00:06:37,390 --> 00:06:40,500 Takže, pojďme se podívat vlastně na kód na vteřinu, 138 00:06:40,500 --> 00:06:43,080 a rozebrat to trochu. 139 00:06:43,080 --> 00:06:45,260 Je velikost dobré pro všechny tady? 140 00:06:45,260 --> 00:06:51,560 >> Takže doufejme, že jste poněkud pohodlně používat Python. 141 00:06:51,560 --> 00:06:55,820 Jsem za předpokladu, že se můžeme podívat na Python a číst přes to. 142 00:06:55,820 --> 00:06:59,290 Máte-li jakékoli dotazy ohledně cokoliv, můžu také jít přes to. 143 00:06:59,290 --> 00:07:03,974 >> Takže první řádek je, z baňky, dovážíme, baňky s kapitálem "F" 144 00:07:03,974 --> 00:07:06,140 což je trochu všechno Klíčové funkce, které budete potřebovat. 145 00:07:06,140 --> 00:07:08,890 Kdykoli píšete soubor a pomocí baňky, 146 00:07:08,890 --> 00:07:12,120 budete chtít importovat, že, jen proto, že má všechny hlavní věci. 147 00:07:12,120 --> 00:07:15,400 Další věc, kterou děláme, je, že jsme volání této funkce baňky, jen 148 00:07:15,400 --> 00:07:19,270 vytvořit aplikaci objekt, a vy jste vždy bude chtít udělat. 149 00:07:19,270 --> 00:07:25,960 >> A pak, seskočil do Dno rychle, tato část je zde, 150 00:07:25,960 --> 00:07:28,760 'if_name _ == "_ main_"', což je něco jako Python úmluvy. 151 00:07:28,760 --> 00:07:32,750 Takže to bude pracovat pouze pokud jste spustit tento soubor přímo pomocí Python. 152 00:07:32,750 --> 00:07:36,040 Poté, nazýváme app.run, který bude skutečně začít aplikaci děje. 153 00:07:36,040 --> 00:07:39,570 >> Tak, to je hlavní struktura, která budete mít v libovolné aplikaci baňky, 154 00:07:39,570 --> 00:07:48,550 je budete mít to app = baňky (_name_), a poté app.run. 155 00:07:48,550 --> 00:07:54,940 >> Takže, tyto dvě věci, které mám tady, je to, co nazýváme tras. 156 00:07:54,940 --> 00:07:57,150 Takže, pojďme mluvit o směrování trochu víc. 157 00:07:57,150 --> 00:07:58,430 Vrátím se na snímek. 158 00:07:58,430 --> 00:08:02,540 >> Takže nejzásadnější pojetí v baňce směrování. 159 00:08:02,540 --> 00:08:06,750 A je to myšlenka, že vás přiřazení funkcí v Pythonu 160 00:08:06,750 --> 00:08:11,280 na určité adresy na své webové stránce. 161 00:08:11,280 --> 00:08:13,930 Takže, kdykoli budete chtít vytvořit novou trasu, 162 00:08:13,930 --> 00:08:16,500 použijete tento @ app.route Funkce dekoratér. 163 00:08:16,500 --> 00:08:19,770 Takže, pokud jste obeznámeni s Funkce dekoratérů v Pythonu, 164 00:08:19,770 --> 00:08:24,160 že je to koncept, který umožňuje pořizovat funkce 165 00:08:24,160 --> 00:08:26,800 a obklopují ji něčím jiným. 166 00:08:26,800 --> 00:08:30,140 >> Takže opravdu, co to dělá dekoratér, je to, že má funkci pod ní, 167 00:08:30,140 --> 00:08:33,409 a přidává další informace na to, ale to, co ve skutečnosti baňky 168 00:08:33,409 --> 00:08:37,480 to aby se to stalo, není výborný rozhodující, ale co je důležité, 169 00:08:37,480 --> 00:08:43,640 je to, že před cestou, vy dát tuto @ app.route, a poté 170 00:08:43,640 --> 00:08:46,480 adresa trasy, takže lomítkem je to, co jsme 171 00:08:46,480 --> 00:08:48,360 viděl, když jsme prostě otevřít webovou stránku. 172 00:08:48,360 --> 00:08:49,580 Tak to je domovskou stránku. 173 00:08:49,580 --> 00:08:51,037 Je to jen lomítko trasy. 174 00:08:51,037 --> 00:08:52,370 A pak máte tuto funkci. 175 00:08:52,370 --> 00:08:54,453 Název funkce může být cokoliv chcete. 176 00:08:54,453 --> 00:08:56,930 Nemusí to nutně má co dělat s trasy. 177 00:08:56,930 --> 00:08:59,440 A pak, bez ohledu na Funkce je návrat, 178 00:08:59,440 --> 00:09:01,730 Funkce by měl vrátit řetězec. 179 00:09:01,730 --> 00:09:03,740 A že řetězec může obsahovat HTML nebo cokoliv, 180 00:09:03,740 --> 00:09:06,920 a to je vlastně to, co dostanete se vrátil do vašeho webového prohlížeče jako HTML, 181 00:09:06,920 --> 00:09:08,200 a to bude činit to. 182 00:09:08,200 --> 00:09:12,030 >> Takže toto je stejný kód že byl z příkladu 183 00:09:12,030 --> 00:09:16,430 že jsem běžel, takže když jsme se navštívit lomítko, volá funkci Hello World, který 184 00:09:16,430 --> 00:09:20,470 jen vrátí řetězec, Hello baňky, a že se vytiskne na obrazovce. 185 00:09:20,470 --> 00:09:27,290 >> Takže tam je další příklad, což je, když navštívíte / ahoj, 186 00:09:27,290 --> 00:09:30,370 to vytiskne Hello Word, který by se ve skutečnosti říkají, Hello World, 187 00:09:30,370 --> 00:09:32,010 ale pojďme předstírat, že bylo úmyslné. 188 00:09:32,010 --> 00:09:35,140 Takže pojďme se vytáhnout, že až opravdu rychle. 189 00:09:35,140 --> 00:09:41,290 >> Takže pokud jdete na localhost / ahoj, to bude nyní vytisknout něco jiného. 190 00:09:41,290 --> 00:09:45,680 Tak to je jen rychlý příklad toho, jak můžete vytvořit dvě různé trasy. 191 00:09:45,680 --> 00:09:50,630 >> Takže, pokud to není mimořádně užitečné, tam není spoustu, co můžete udělat, 192 00:09:50,630 --> 00:09:55,360 můžete prostě dělat vše, co s mají různé HTML stránky, 193 00:09:55,360 --> 00:09:58,000 a při návštěvě konkrétní strana to jen načte stránku. 194 00:09:58,000 --> 00:10:00,864 Takže pojďme se podívat na nějaké další užitečné věci, které můžete udělat. 195 00:10:00,864 --> 00:10:03,780 Takže, jedna věc, kterou byste mohli mít si všiml v příkladu, který jsem vytáhl 196 00:10:03,780 --> 00:10:07,160 up, je, že jsem měl app.run (debug = True). 197 00:10:07,160 --> 00:10:09,580 A tak, co to debug argumentem dělá, je 198 00:10:09,580 --> 00:10:14,600 že při spuštění webového serveru, když jste v aplikaci, 199 00:10:14,600 --> 00:10:18,100 pokud změníte soubor, to bude automaticky znovu načíst server. 200 00:10:18,100 --> 00:10:21,160 >> A tak se nemáte skutečně nutné restart Python, což je super užitečné. 201 00:10:21,160 --> 00:10:24,020 Můžu ti ukázat, že. 202 00:10:24,020 --> 00:10:26,960 Dovolte mi, abych vytáhnout můj kód s překlep v něm, 203 00:10:26,960 --> 00:10:30,420 a předstírat, že se tam dal typo úmyslně pro poučné účely. 204 00:10:30,420 --> 00:10:31,625 Takže pojďme přidat tento zpátky. 205 00:10:31,625 --> 00:10:33,140 Takže teď se říká, že Hello World. 206 00:10:33,140 --> 00:10:34,410 Budu ho zachránit. 207 00:10:34,410 --> 00:10:36,540 A když jsme se vytáhnout zpět nahoru terminál, budete 208 00:10:36,540 --> 00:10:39,520 říkají, že je to restartování, protože zjistil změnu, 209 00:10:39,520 --> 00:10:43,620 a tak teď, když jsme se znovu načíst tuto stránku to vytiskne správnou věc. 210 00:10:43,620 --> 00:10:45,630 >> Takže debug je super užitečné pro to. 211 00:10:45,630 --> 00:10:48,740 Také, pokud máte nějaké jakési srážce, tak 212 00:10:48,740 --> 00:10:54,370 dovolte mi, abych tuto aplikaci pád tím, že to nebude vrátí řetězec. 213 00:10:54,370 --> 00:10:57,540 Takže, pojďme se prostě si to vrátit Žádný z nějakého důvodu. 214 00:10:57,540 --> 00:11:00,810 A pak, když jsem se navštívit tuto strana, bude to prostě zhroutí, 215 00:11:00,810 --> 00:11:04,465 ale server není jen pád, to ve skutečnosti vám dává super užitečné záda 216 00:11:04,465 --> 00:11:06,490 stopa všeho, co se stalo. 217 00:11:06,490 --> 00:11:10,050 A co je opravdu pěkné, že se v jakémkoliv kroku v této zadní trasování, 218 00:11:10,050 --> 00:11:14,260 můžete otevřít interaktivní shell tady, a tak nějak vytisknout co 219 00:11:14,260 --> 00:11:17,780 proměnné Chcete-li se podívat na. 220 00:11:17,780 --> 00:11:21,054 >> A tak ladění je opravdu užitečné pro zjišťuje, 221 00:11:21,054 --> 00:11:23,470 to, co se děje s vaším serveru, spíše než jen vidět 222 00:11:23,470 --> 00:11:28,201 něco v PHP jako 500 interní chyba serveru, což je super k ničemu. 223 00:11:28,201 --> 00:11:30,700 Jedna věc je být vědomi, je že pokud dáte svou aplikaci on-line 224 00:11:30,700 --> 00:11:34,260 takže je viditelný pro veřejnost, budete nikdy chtít opustit režim ladění na, 225 00:11:34,260 --> 00:11:37,320 proto, že lidé mohou ve skutečnosti používat tuto konzolu, které jsem 226 00:11:37,320 --> 00:11:39,150 Ukázal jste se spustit libovolný kód. 227 00:11:39,150 --> 00:11:42,120 >> Takže se můžete vytisknout jako každý tajné kódy máte tam, 228 00:11:42,120 --> 00:11:44,755 oni se podívat na přesně jak se vaše webové stránky funguje. 229 00:11:44,755 --> 00:11:46,630 Takže je to opravdu užitečné pro testování, ale vždy 230 00:11:46,630 --> 00:11:50,090 ujistěte se, že si ji před publikovat cokoliv online. 231 00:11:50,090 --> 00:11:56,640 >> Takže, když jste pomocí něco jako PHP, je tu tato myšlenka 232 00:11:56,640 --> 00:11:58,920 které můžete předat Informace mezi stránkami 233 00:11:58,920 --> 00:12:03,620 tím, že informace skutečně v URL, což je požadavek GET, 234 00:12:03,620 --> 00:12:07,490 ale v baňce se můžete skutečně něco druh takového, 235 00:12:07,490 --> 00:12:10,590 tím, že má trasu, která má proměnná jako jeho součást. 236 00:12:10,590 --> 00:12:14,090 >> Takže, když se podíváte na to Příklad na obrazovce zde, 237 00:12:14,090 --> 00:12:19,930 máme trasu, která je ("/ ahoj /"), a proto, pokud navštívíte 238 00:12:19,930 --> 00:12:23,790 / ahoj / něco, že něco bude skutečně dostat plněné 239 00:12:23,790 --> 00:12:25,490 do názvu proměnné. 240 00:12:25,490 --> 00:12:27,850 A všimněte si, že funkce který je dodáván s tímto trasu 241 00:12:27,850 --> 00:12:31,302 musí vzít v parametru jméno, tak, že to bude ve skutečnosti 242 00:12:31,302 --> 00:12:32,510 dostat přešel do funkce. 243 00:12:32,510 --> 00:12:34,190 >> A pak, jakmile jste uvnitř této funkce, 244 00:12:34,190 --> 00:12:36,420 můžete léčit, že stejně jako normální proměnná Python, 245 00:12:36,420 --> 00:12:39,650 a tak pak to bude vytisknout Dobrý den, a to 246 00:12:39,650 --> 00:12:42,000 vyplní v názvu pomocí některé formátování řetězce. 247 00:12:42,000 --> 00:12:48,060 >> Takže přidat pohyblivé složky ke směrování, použít úhelník označení. 248 00:12:48,060 --> 00:12:51,220 A volitelně, můžete použít co se nazývá konvertor. 249 00:12:51,220 --> 00:12:56,840 A tak, když dáte to anotace s tlustého střeva, 250 00:12:56,840 --> 00:13:00,015 můžete určit, že je to int, nebo float, nebo cesta, 251 00:13:00,015 --> 00:13:01,640 a to bude automaticky převede to. 252 00:13:01,640 --> 00:13:05,130 Můžete si také udělat konverzi ve funkci Python, 253 00:13:05,130 --> 00:13:09,710 jen pomocí obsazení, ale někdy, pokud Chcete-li zajistit, že je to int, 254 00:13:09,710 --> 00:13:12,080 si můžete dát, že konverze pravidlo tam. 255 00:13:12,080 --> 00:13:15,930 >> Takže pojďme se vytáhnout příklad některých variabilních pravidel. 256 00:13:15,930 --> 00:13:21,480 Tak tady, to má stejné základní Struktura s dovozem z Flask 257 00:13:21,480 --> 00:13:25,030 Baňka, aplikace = baňka (_name_), a pak je to běh na konci. 258 00:13:25,030 --> 00:13:28,050 Máme tyto dva různé variabilní trasy zde. 259 00:13:28,050 --> 00:13:29,900 A první, je ten, který jsem ukázal 260 00:13:29,900 --> 00:13:34,230 na snímku, který byl, že to prostě trvá v názvu řetězec 261 00:13:34,230 --> 00:13:35,650 a bude tisknout Dobrý den, název. 262 00:13:35,650 --> 00:13:41,410 >> A pak, druhý jeden používá konverze. 263 00:13:41,410 --> 00:13:44,690 Takže to bude automaticky převést int, a pak dvojnásobek int, 264 00:13:44,690 --> 00:13:46,150 a vytisknout to ven. 265 00:13:46,150 --> 00:13:48,220 A neděláme žádný druh přeměny v něm 266 00:13:48,220 --> 00:13:49,594 Láhev protože se stará o to. 267 00:13:49,594 --> 00:13:53,181 Takže pojďme si to běží. 268 00:13:53,181 --> 00:13:54,930 Když máte baňky aplikace běží, 269 00:13:54,930 --> 00:13:58,440 můžete ovládat-C z ní zastavit chod serveru. 270 00:13:58,440 --> 00:14:02,420 A pak jsem poběží proměnné. 271 00:14:02,420 --> 00:14:11,740 >> Tak pojďme na localhost / ahoj / Ezra a doufejme, že to pozdravit mně. 272 00:14:11,740 --> 00:14:14,530 273 00:14:14,530 --> 00:14:20,310 >> Tak to trvalo v mém jménu, v proměnné cesta, a naplnil ho zde. 274 00:14:20,310 --> 00:14:23,950 Tak jsem se také ukázat, rychlý Příklad zdvojení. 275 00:14:23,950 --> 00:14:28,600 Takže pokud jdete do / double / 3, to bude tisknout 6. 276 00:14:28,600 --> 00:14:31,440 Tak to se postaral o konverze pro nás. 277 00:14:31,440 --> 00:14:34,190 >> Takže si můžete také udělat s float, a něco zvláštního, 278 00:14:34,190 --> 00:14:37,530 pokud musíte zadat něco jako cesta, která vám umožní to přijmout lomítka, 279 00:14:37,530 --> 00:14:39,155 ale neměla by být problém. 280 00:14:39,155 --> 00:14:41,480 281 00:14:41,480 --> 00:14:43,820 Doposud jsme, ještě právě vrací 282 00:14:43,820 --> 00:14:46,320 řetězce, což není příliš zajímavé. 283 00:14:46,320 --> 00:14:48,730 >> Mohli bychom dokonce vrátit doslovný HTML řetězec. 284 00:14:48,730 --> 00:14:54,322 Takže v kódu, můžeme vložit něco stejně jako b-tag, aby bylo tučně, 285 00:14:54,322 --> 00:14:56,030 ale většinu času vás nemají vlastně chtějí 286 00:14:56,030 --> 00:14:58,420 za psaní HTML kódu v Pythonu. 287 00:14:58,420 --> 00:15:01,940 To dostane opravdu chaotický, a to není vhodná doba. 288 00:15:01,940 --> 00:15:06,430 >> Baňka nám umožňuje oddělit HTML do toho, co se nazývá šablona, 289 00:15:06,430 --> 00:15:09,467 takže pokud uvažujete pokud jde o modelu MVC 290 00:15:09,467 --> 00:15:11,550 že jste obeznámeni s, doufejme, z práce 291 00:15:11,550 --> 00:15:15,520 s CS50 financí trochu, si můžete myslet Python souborů 292 00:15:15,520 --> 00:15:19,430 jako více kontrolora, kde jsou interakci s co 293 00:15:19,430 --> 00:15:20,970 datový model můžete mít. 294 00:15:20,970 --> 00:15:24,900 >> A pak jsou volali na Zobrazení a předávání informací, aby tento pohled 295 00:15:24,900 --> 00:15:28,120 vyplnit informace v HTML, že potřebuje. 296 00:15:28,120 --> 00:15:30,490 A to, co nazýváme tyto pohledy Šablony jsou ve třídě. 297 00:15:30,490 --> 00:15:35,280 >> Takže Baňka používá jiný Python modul, který to bude automaticky 298 00:15:35,280 --> 00:15:38,620 nainstalovat při instalaci PIP Baňka volal Jinja, který 299 00:15:38,620 --> 00:15:40,885 vám umožní přidat tyto poznámky do HTML 300 00:15:40,885 --> 00:15:45,140 , které vidíte na obrazovce, která umožňuje dáte ve věcech, jako je podmínkové, 301 00:15:45,140 --> 00:15:47,230 a smyčky do HTML. 302 00:15:47,230 --> 00:15:51,140 >> Takže to vypadá trochu jako, jak jste může používat PHP v HTML souboru, 303 00:15:51,140 --> 00:15:57,380 ale je to jen, když je baňka Server slouží až soubor HTML, 304 00:15:57,380 --> 00:16:01,610 to bude spustit tento templátové motor a analyzovat přes to a vyplňte věci. 305 00:16:01,610 --> 00:16:06,650 Takže Baňka má funkci render_template které můžete vidět na dně zde. 306 00:16:06,650 --> 00:16:14,300 A tak, když navštívíte tuto stránku, to by způsobilo tuto hello.html šablonu, 307 00:16:14,300 --> 00:16:16,407 a pak vyplňte v této HTML stránky. 308 00:16:16,407 --> 00:16:18,990 Tak ať to jen běh této realitní rychlá, a vidět, jak to vypadá, 309 00:16:18,990 --> 00:16:21,198 a pak půjdu prostřednictvím trochu podrobněji. 310 00:16:21,198 --> 00:16:25,380 311 00:16:25,380 --> 00:16:30,260 Takže, vaše šablony jdou jít ve složce Šablony. 312 00:16:30,260 --> 00:16:33,980 To bude automaticky vypadat v rámci Složky Šablony pro tuto šablonu. 313 00:16:33,980 --> 00:16:35,615 Takže pojďme otevřít toto nahoru. 314 00:16:35,615 --> 00:16:47,350 315 00:16:47,350 --> 00:16:50,005 Takže, budu spustit příklad šablonovacího. 316 00:16:50,005 --> 00:16:52,820 317 00:16:52,820 --> 00:17:03,660 >> Takže když jsem se jít do / ahoj / Ezra, má to hrozné, 318 00:17:03,660 --> 00:17:05,930 nepříjemný stan tag, který jsem dal. 319 00:17:05,930 --> 00:17:08,050 Velmi pěkný, velmi dynamické. 320 00:17:08,050 --> 00:17:09,349 Jsem velký fanoušek. 321 00:17:09,349 --> 00:17:13,900 Ale co se stane, když Jen jsem jít do, / ahoj? 322 00:17:13,900 --> 00:17:15,220 Tak to jen říká Hello World. 323 00:17:15,220 --> 00:17:17,678 Jsem neprošel jeho název, a to naplnil ji automaticky. 324 00:17:17,678 --> 00:17:22,050 Tak uvidíme, jak to udělal, a jak se můžeme zbavit tohoto stanu možná. 325 00:17:22,050 --> 00:17:26,240 >> Tak tady to je druh zajímavým příkladem, 326 00:17:26,240 --> 00:17:29,101 pokud jste obeznámeni s tím, jak přepínač příkazy pracují v daném jazyce. 327 00:17:29,101 --> 00:17:31,350 Řekněme, že je to něco jako, že jakýsi propadnout, 328 00:17:31,350 --> 00:17:34,266 kde jste skutečně připojeny dva různé cesty do stejné funkční. 329 00:17:34,266 --> 00:17:41,190 Tak jsme se připojit / Hello trasu a adresáři / ahoj / název Cesta k Hello, 330 00:17:41,190 --> 00:17:45,130 a určíme using-- vás Python umožňuje určit výchozí nastavení funkce arguments-- 331 00:17:45,130 --> 00:17:48,300 takže není-li název, takže pokud půjdeme jen / ahoj, 332 00:17:48,300 --> 00:17:50,680 to bude automaticky filtrovat pojmenovat je rovna Žádný. 333 00:17:50,680 --> 00:17:55,010 >> Takže jsme způsobit, že Šablona s názvem = název, 334 00:17:55,010 --> 00:17:59,510 tak to bude projít v parametru názvu rovna této funkce název parametru, 335 00:17:59,510 --> 00:18:00,730 do šablony. 336 00:18:00,730 --> 00:18:04,040 To pořád nevysvětluje, jak je rozhodování o tom, zda se má vytisknout Hello World, 337 00:18:04,040 --> 00:18:05,100 nebo vytisknout moje jméno. 338 00:18:05,100 --> 00:18:08,050 Takže pojďme se podívat vlastně do samotného šablony, 339 00:18:08,050 --> 00:18:11,610 a zjistit, kde, který přichází z. 340 00:18:11,610 --> 00:18:18,680 >> Takže v tuto šablonu, my ve skutečnosti mají nějaký podmíněné logiky, 341 00:18:18,680 --> 00:18:20,580 který někteří lidé by argumentují, jste vlastně 342 00:18:20,580 --> 00:18:23,730 by neměly mít hodně podmíněného Logika přímo ve Vašem Template sám. 343 00:18:23,730 --> 00:18:26,310 To by mělo být v rámci Controller, ale pro tento příklad 344 00:18:26,310 --> 00:18:27,476 je to něco docela malý. 345 00:18:27,476 --> 00:18:31,060 Tak tady jsme se zkontrolovat, pokud název, a tak pokud jméno není rovno Žádný, 346 00:18:31,060 --> 00:18:33,130 v případě, že jméno je vlastně prošel v roce, pak budeme 347 00:18:33,130 --> 00:18:36,210 Pozdravte, jméno se záhlaví a stan, 348 00:18:36,210 --> 00:18:41,490 všechno to normální HTML, jinak budeme vytisknout Hello, World prostě normálně. 349 00:18:41,490 --> 00:18:45,820 Tak pár věcí všímat zde o tom, jak formátovat templatačního, 350 00:18:45,820 --> 00:18:49,110 je to, že všechny z nich podmíněné příkazy, 351 00:18:49,110 --> 00:18:54,475 něco jako, jak jsme ji, když PHP Chcete-li vložit nějaký PHP, 352 00:18:54,475 --> 00:18:58,380 použijete méně než otázka značka, je to něco analogický zde 353 00:18:58,380 --> 00:19:00,140 s {%. 354 00:19:00,140 --> 00:19:02,130 >> Tak tady, máme podmíněný kód. 355 00:19:02,130 --> 00:19:05,920 A pak, když budete skutečně chtějí doslova hodnotit něco, a tisk 356 00:19:05,920 --> 00:19:08,710 to se na obrazovce, použijte dvojité závorky. 357 00:19:08,710 --> 00:19:12,310 Tak tady jsou dvojité vzpěry, a pak určíme jméno, 358 00:19:12,310 --> 00:19:15,500 tak v to, že bude hodnotit názvu proměnné, které 359 00:19:15,500 --> 00:19:18,860 byl schválen v z render funkce šablony, 360 00:19:18,860 --> 00:19:21,484 spíše než jen tisk out, pokud jsme se zbavili z nich, 361 00:19:21,484 --> 00:19:23,150 to by jen vytisknout slovo "název." 362 00:19:23,150 --> 00:19:26,340 Tak, to je něco, co dávat pozor. 363 00:19:26,340 --> 00:19:29,792 >> Takže jiná věc je oznámení je, že když jsme 364 00:19:29,792 --> 00:19:31,500 chtějí používat render_template funkce, 365 00:19:31,500 --> 00:19:34,490 ve skutečnosti máme dovážet výslovně z láhve. 366 00:19:34,490 --> 00:19:36,915 A toto je příklad modularita baňky, 367 00:19:36,915 --> 00:19:39,290 že nemusíte dovážet věci, které nepotřebujete. 368 00:19:39,290 --> 00:19:41,290 Stačí si jen přinést v funkce, které skutečně 369 00:19:41,290 --> 00:19:43,450 Je potřeba, která je někdy hezky, takže se nemusíte 370 00:19:43,450 --> 00:19:46,560 mít všechny tyto funkce sedět, že ji nepoužíváte, 371 00:19:46,560 --> 00:19:49,730 ale také, pokud jste zapomněl, že vás třeba importovat render_template, 372 00:19:49,730 --> 00:19:52,660 budete pravděpodobně dostanete upozornění že dáme vám vědět o tom. 373 00:19:52,660 --> 00:19:56,700 Tak, že je šablonový. 374 00:19:56,700 --> 00:20:01,680 >> Takže jsme ukázali, jak se vytvářet jednoduché webové stránky, 375 00:20:01,680 --> 00:20:04,947 a přidat trochu více logiky že, pokud jde o proměnné směrování. 376 00:20:04,947 --> 00:20:08,280 To vám umožní dělat různé věci na základě co URL jdete, a také poté, dát 377 00:20:08,280 --> 00:20:11,950 HTML trochu víc smysl o tom, jak budete chtít vykreslit věci. 378 00:20:11,950 --> 00:20:14,210 Nemusíte dát všechny Váš HTML v Pythonu, 379 00:20:14,210 --> 00:20:16,640 ale do značné míry každá webová aplikace, 380 00:20:16,640 --> 00:20:21,480 budete chtít nějakou datového modelu s ním spojené. 381 00:20:21,480 --> 00:20:25,560 >> A tak tradičně, to by bylo něco jako SQL databáze. 382 00:20:25,560 --> 00:20:30,280 A můžete jen komunikovat přímo s SQL. 383 00:20:30,280 --> 00:20:32,190 Python má, myslím, že se to jmenuje. 384 00:20:32,190 --> 00:20:33,040 SQLite 3. 385 00:20:33,040 --> 00:20:38,454 Stačí si jen importovat SQLite 3 a spouštět SQL dotazy přímo, 386 00:20:38,454 --> 00:20:40,870 ale já nevím jak vy, ale já opravdu nemám rád, jen, 387 00:20:40,870 --> 00:20:42,750 psaní mimo SQL dotazů. 388 00:20:42,750 --> 00:20:45,350 To má tendenci se dostat opravdu dlouhý a komplikovaný. 389 00:20:45,350 --> 00:20:49,180 >> A tak, něco, Rád používám je to, co je 390 00:20:49,180 --> 00:20:53,610 známý jako ORM, což je objektově-relační mapování. 391 00:20:53,610 --> 00:20:56,890 A bod objektově-relační mapování, 392 00:20:56,890 --> 00:21:00,100 je, že existují dva různé způsoby, jak si můžete myslet o databázích. 393 00:21:00,100 --> 00:21:03,240 >> Tak na příklad, který Profesor Malan obvykle 394 00:21:03,240 --> 00:21:07,660 využívá ve třídě, je tabulka Excel, kde máte tyto řádky a tyto sloupce, 395 00:21:07,660 --> 00:21:10,210 a to je opravdu užitečné pro jak je zastoupena v SQL 396 00:21:10,210 --> 00:21:13,170 a jak komunikovat s ním, ale Dalším způsobem, jak že je to vlastně 397 00:21:13,170 --> 00:21:16,390 užitečné přemýšlet o tom někdy, je, pokud jde o třídy a objektů. 398 00:21:16,390 --> 00:21:20,420 >> Takže místo toho, myšlení každé tabulky jako mající 399 00:21:20,420 --> 00:21:23,040 tento řádek, který má jisté informace, můžete skutečně 400 00:21:23,040 --> 00:21:26,100 myslet na to, jak být Každá tabulka je třída, 401 00:21:26,100 --> 00:21:29,810 a pak každý instance třída má určité vlastnosti. 402 00:21:29,810 --> 00:21:35,110 Takže v tomto případě, instance třídy jsou řádky v tabulce, 403 00:21:35,110 --> 00:21:37,490 a pak každý majetek by být sloupec v tabulce. 404 00:21:37,490 --> 00:21:40,840 >> Takže ORM, že se mi líbí používat, se nazývá Peewee. 405 00:21:40,840 --> 00:21:43,520 Je to opravdu malý, něco jako baňky. 406 00:21:43,520 --> 00:21:46,760 Myslím, že jdou dobře dohromady, ale existuje spousta dalších ORMS 407 00:21:46,760 --> 00:21:47,730 , které můžete použít. 408 00:21:47,730 --> 00:21:52,180 Více populární je známý jako SQLAlchemy, 409 00:21:52,180 --> 00:21:56,050 a já si nemůžu vzpomenout, proč jsem původně vybral Peewee nad SQLAlchemy, 410 00:21:56,050 --> 00:21:58,311 jinak bych říct, proč jsem myslím, že je to ten nejlepší, 411 00:21:58,311 --> 00:22:01,060 ale my jsme právě chystá použít člověk, protože vím, jak ji používat. 412 00:22:01,060 --> 00:22:04,760 >> Takže, jedna otázka je, proč se byste měli obtěžovat s použitím ORM, 413 00:22:04,760 --> 00:22:07,552 místo toho jen přímo psaní SQL dotazů? 414 00:22:07,552 --> 00:22:09,760 A myslím, že nejlepší věc, je to, že nemáte ve skutečnosti 415 00:22:09,760 --> 00:22:11,356 psát SQL dotazy. 416 00:22:11,356 --> 00:22:14,480 Je to mnohem jednodušší, protože já vám ukážu, aby dělat věci, jako je výběr, vložení, 417 00:22:14,480 --> 00:22:16,157 delece, zejména vytváření tabulek. 418 00:22:16,157 --> 00:22:17,990 Je mnohem snazší napsat třídní strukturu, 419 00:22:17,990 --> 00:22:22,250 , než je strukturovat a Vytvořte TABLE, ale jedna věc 420 00:22:22,250 --> 00:22:25,710 být vědomi, že je ORM se bude snažit co nejlépe 421 00:22:25,710 --> 00:22:28,640 zjistit, co nejvíce efektivní SQL dotazu by bylo, 422 00:22:28,640 --> 00:22:30,110 ale někdy to dostane to špatně. 423 00:22:30,110 --> 00:22:32,660 >> A zvláště pokud jste pracovat s velkou databází, 424 00:22:32,660 --> 00:22:35,557 si můžete všimnout, že dotazu který by měl být spuštěn rychle, 425 00:22:35,557 --> 00:22:36,640 je ve skutečnosti trvá déle. 426 00:22:36,640 --> 00:22:40,164 A když se podíváte pod kapotu na to, jak ORM je tlumočení, že do SQL, 427 00:22:40,164 --> 00:22:42,080 to by mohlo být něco dělat opravdu směšné, 428 00:22:42,080 --> 00:22:44,371 jen proto, že druh Ukázal vaše záměry špatně. 429 00:22:44,371 --> 00:22:48,080 A tam byly doby, kdy Musel jsem ho přepsat, a jen 430 00:22:48,080 --> 00:22:52,429 spustit své vlastní SQL dotazy, jen protože to bylo analýze zvláštním způsobem. 431 00:22:52,429 --> 00:22:54,220 Takže, tam je nějaká nad hlavou, jen v cestě 432 00:22:54,220 --> 00:22:58,680 že to překládá vaše Prohlášení dolů do SQL. 433 00:22:58,680 --> 00:23:06,200 >> Takže, pojďme se podívat na mimořádně rychle jednoduchý příklad datového modelu 434 00:23:06,200 --> 00:23:07,350 že byste mohli použít. 435 00:23:07,350 --> 00:23:11,880 Takže, je to Python kód, a tak se První věc, kterou chcete udělat, je z 436 00:23:11,880 --> 00:23:12,950 Peewee import *. 437 00:23:12,950 --> 00:23:15,850 Takže, na rozdíl od baňky, kde musíte všechny tyto jednotlivé moduly, 438 00:23:15,850 --> 00:23:18,125 a chcete importovat baňky a napsat šablonu a některé další 439 00:23:18,125 --> 00:23:20,690 že uvidíme později, od Peewee, stačí importovat všechno, 440 00:23:20,690 --> 00:23:22,290 protože je to docela malá knihovna. 441 00:23:22,290 --> 00:23:26,490 >> Takže první věc, kterou chcete udělat, je ve skutečnosti vytvořit tento objekt databáze. 442 00:23:26,490 --> 00:23:31,212 Takže, máte db = SqliteDatabase, a pak název vaší databáze. 443 00:23:31,212 --> 00:23:33,170 A to bude ve skutečnosti vytvořit objekt databáze 444 00:23:33,170 --> 00:23:36,230 že můžete komunikovat s, s Peewee. 445 00:23:36,230 --> 00:23:40,570 >> A pak, máme skutečný Model, který chceme vytvořit. 446 00:23:40,570 --> 00:23:42,470 Takže tabulky chceme vytvořit. 447 00:23:42,470 --> 00:23:47,270 Takže, v Peewee, každá třída má vlastní tabulka v databáze. 448 00:23:47,270 --> 00:23:52,800 Takže, všechny třídy dědí od základní model, 449 00:23:52,800 --> 00:23:55,960 a model M je hlavní město něco, co je definováno v Peewee. 450 00:23:55,960 --> 00:24:02,162 >> Takže, pokud by všechny své modely zdědit jako jejich nejvyšší nadřazené třídě, 451 00:24:02,162 --> 00:24:04,620 oni by měli dědit ze Model, ale to, co je opravdu v pohodě, 452 00:24:04,620 --> 00:24:07,610 je, že můžete skutečně mít svůj modely dědí od sebe navzájem. 453 00:24:07,610 --> 00:24:10,530 A hodně času, vaše datové modely nemusí nutně 454 00:24:10,530 --> 00:24:13,754 udělat pěkný hierarchii dědičnosti, ale Časy, kdy se tak stane, je to opravdu pěkné, 455 00:24:13,754 --> 00:24:15,920 protože máte model vlastní od sebe navzájem. 456 00:24:15,920 --> 00:24:19,710 >> Takže jsme definovali tuto třídu "student," který zdědí model, 457 00:24:19,710 --> 00:24:21,170 a má tři vlastnosti. 458 00:24:21,170 --> 00:24:24,080 To má identifikátor, který je PrimaryKeyField, který 459 00:24:24,080 --> 00:24:26,920 je něco, za předpokladu, podle Peewee, jméno je Charfield, 460 00:24:26,920 --> 00:24:28,490 a stupeň je IntegerField. 461 00:24:28,490 --> 00:24:32,260 Tak to může nebo nemusí být jak CS50 skutečně ukládá všechny 462 00:24:32,260 --> 00:24:33,650 stupně studentů. 463 00:24:33,650 --> 00:24:36,060 To není, ale je to, jak bych to. 464 00:24:36,060 --> 00:24:37,920 >> A pak, že má, v rámci tato třída, a to 465 00:24:37,920 --> 00:24:41,620 je něco, co můžete dělat s Python, můžete mít vnořené třídy. 466 00:24:41,620 --> 00:24:43,920 A to je něco, že je vyžadováno Peewee. 467 00:24:43,920 --> 00:24:47,250 Takže, tato třída Meta, máte určit, že je databáze 468 00:24:47,250 --> 00:24:49,830 rovnající se objektu že jsme vytvořili výše. 469 00:24:49,830 --> 00:24:54,339 A to, co říká, že soubor je tuto tabulku ve skutečnosti bude obsažena v. 470 00:24:54,339 --> 00:24:57,130 Tak to je něco, co máte dělat v každém z vašich modelů. 471 00:24:57,130 --> 00:24:59,380 Musíte jen zadat v rámci této třídy Meta 472 00:24:59,380 --> 00:25:01,400 že databáze je roven dB. 473 00:25:01,400 --> 00:25:03,940 Takže to, co obvykle dělám, když mám spoustu různých modelů, 474 00:25:03,940 --> 00:25:05,910 je to, že mám jednu základnu Model, který obvykle 475 00:25:05,910 --> 00:25:08,839 stačí zavolat "základní model" která má Meta třídu, 476 00:25:08,839 --> 00:25:10,380 a nastaví databázi rovnající se db. 477 00:25:10,380 --> 00:25:13,710 A pak všechny moje následující modely zdědí od této základní třídy. 478 00:25:13,710 --> 00:25:16,760 A pak jsem se nemusíte starat o nastavení Meta třídu. 479 00:25:16,760 --> 00:25:21,490 >> Takže, když to vlastně dostane sestavují se do příkazu SQL, 480 00:25:21,490 --> 00:25:24,875 vypadá to, že tento ošklivý věc dolů tady, "Vytvořit tabulky studentka ID číslo, 481 00:25:24,875 --> 00:25:26,020 " cokoliv. 482 00:25:26,020 --> 00:25:30,002 >> A já si myslím, že je kratší, tento SQL dotaz přímo tady, 483 00:25:30,002 --> 00:25:32,960 ale když se podíváte na tuto třídu zde můžete vidět přesně to, co se děje. 484 00:25:32,960 --> 00:25:36,116 Můžete vidět, co druhy polí tam jsou, co oni jsou voláni, 485 00:25:36,116 --> 00:25:38,115 a tak si myslím, že při pohledu na tento kód v jazyce Python 486 00:25:38,115 --> 00:25:43,340 je mnohem čitelnější než snaží napsat tento SQL dotaz. 487 00:25:43,340 --> 00:25:45,990 >> Tak, aby se skutečně používat databázi, 488 00:25:45,990 --> 00:25:48,470 musíme se k němu připojit v Pythonu. 489 00:25:48,470 --> 00:25:52,770 Tak jsem obvykle napsat funkci nazvanou initialize_db že dělá dvě věci. 490 00:25:52,770 --> 00:25:54,880 Bere v databázi Objekt db a to 491 00:25:54,880 --> 00:25:58,360 se k němu připojuje, který se otevírá jen up části do databáze. 492 00:25:58,360 --> 00:26:00,860 Pokud jste právě běží ačkoli webové stránky v místním počítači, 493 00:26:00,860 --> 00:26:04,320 není to super velký problém se bát o připojování a odpojování, 494 00:26:04,320 --> 00:26:06,885 ale pokud používáte je na internetových stránkách, budete 495 00:26:06,885 --> 00:26:10,010 chtějí, aby se, zda-li se uživatel se k němu připojuje, když uzavřít 496 00:26:10,010 --> 00:26:12,270 webové stránky, které odpojit tak, že nemají spoustu lidí připojených 497 00:26:12,270 --> 00:26:14,480 do databáze najednou. 498 00:26:14,480 --> 00:26:16,370 >> A potom, když vás připojit k databázi, 499 00:26:16,370 --> 00:26:20,832 Chcete-li volat db.create_tables, a seznam modely pro to, co chcete 500 00:26:20,832 --> 00:26:21,540 vytváření tabulek. 501 00:26:21,540 --> 00:26:23,950 Tak tady, já jen chci, aby vytvořte ji pro tuto studenta. 502 00:26:23,950 --> 00:26:28,070 A potom, co je důležité, je pro určit bezpečné = TRUE většinu času. 503 00:26:28,070 --> 00:26:30,380 Takže to, co toto tvrzení bude dělat, je to tak 504 00:26:30,380 --> 00:26:33,580 vytváří tabulky pro Model student, ale pouze 505 00:26:33,580 --> 00:26:36,109 pokud to tabulka nemá byl vytvořen již. 506 00:26:36,109 --> 00:26:37,400 To je to, co určuje bezpečné. 507 00:26:37,400 --> 00:26:39,150 Takže to nebude přepsat vaše stávající stůl, 508 00:26:39,150 --> 00:26:41,525 to bude vytvořit novou pouze tabulka v případě, že tam není jednou. 509 00:26:41,525 --> 00:26:45,090 Takže, mohl bys jen vytvořit tabulky najednou pomocí SQL. 510 00:26:45,090 --> 00:26:49,410 A pak, že databáze posezení tam, a pak se připojit ke každé době, 511 00:26:49,410 --> 00:26:52,450 ale je to obvykle hezké, jen aby dal v tomto create_tables výzvě, 512 00:26:52,450 --> 00:26:55,550 takže, pokud jste někdy smazat databáze při spuštění svůj web 513 00:26:55,550 --> 00:26:57,960 Znovu aplikace, bude to znovu vytvořit. 514 00:26:57,960 --> 00:27:00,730 >> Takže, jen se ujistěte, že bezpečný je specifikován aby to byla pravda, 515 00:27:00,730 --> 00:27:03,580 nebo najdete vaše data jen stále clobbered pokaždé. 516 00:27:03,580 --> 00:27:06,380 A pak, můžete jen zavolat initialize_db zřídit 517 00:27:06,380 --> 00:27:09,820 připojení, a vytvářet Tabulky v případě potřeby. 518 00:27:09,820 --> 00:27:13,150 >> Takže, nejčastější věc že budete chtít udělat, 519 00:27:13,150 --> 00:27:15,920 nebo jeden z nejběžnějších věcí, je skutečně vložit věci 520 00:27:15,920 --> 00:27:17,170 do databáze. 521 00:27:17,170 --> 00:27:19,430 A tak, spíše než psát vložit do 522 00:27:19,430 --> 00:27:21,990 výkaz se všemi uvedené hodnoty, 523 00:27:21,990 --> 00:27:24,650 můžete skutečně volat Funkce na třídě studenta. 524 00:27:24,650 --> 00:27:28,200 Takže, když vytvoříte třídu který dědí z modelu, 525 00:27:28,200 --> 00:27:30,200 má to vytvořit metodu. 526 00:27:30,200 --> 00:27:33,870 >> Takže, vy třída name.create, a zadáte parametry 527 00:27:33,870 --> 00:27:35,260 které chcete předat. 528 00:27:35,260 --> 00:27:39,200 Takže, když chci přidat nějaké studenty k našemu CS50 stupeň knih například 529 00:27:39,200 --> 00:27:41,820 Dám do Davida, který má velmi dobré jakosti, že má 95. 530 00:27:41,820 --> 00:27:45,100 A já, kdo to nedělá tak dobře CS50, mám 50. 531 00:27:45,100 --> 00:27:47,600 A tak pěkná věc, o co to vytvářet funkce dělá, 532 00:27:47,600 --> 00:27:53,040 je to, že vrací instanci, nebo řádek, že to vytvořilo v tabulce, 533 00:27:53,040 --> 00:27:55,750 a tak pak uložíte, že v variabilní, a práce s ním později. 534 00:27:55,750 --> 00:27:58,830 Můžete změnit kolem, což Ukážu příklad. 535 00:27:58,830 --> 00:28:03,050 >> Všimněte si, že jsem to neudělal muset zadat ID, 536 00:28:03,050 --> 00:28:09,340 proto, neboť se jedná o PrimaryKeyField, bude to automaticky 537 00:28:09,340 --> 00:28:10,930 zvyšovat, pokud nechcete specifikovat. 538 00:28:10,930 --> 00:28:12,250 A ve skutečnosti, budete pravděpodobně neměla by specifikovat, 539 00:28:12,250 --> 00:28:14,810 protože byste mohli omylem nandat ID někoho jiného. 540 00:28:14,810 --> 00:28:16,830 A chcete, aby se jist, že je to jedinečná. 541 00:28:16,830 --> 00:28:20,662 >> Takže, ve skutečnosti, nejvíce Společný věc, kterou chcete udělat, 542 00:28:20,662 --> 00:28:22,620 je pravděpodobně vybrat ven databáze, jakmile se 543 00:28:22,620 --> 00:28:24,078 mají hodně informací tam. 544 00:28:24,078 --> 00:28:27,360 A tak, pokud se chcete dostat všechno, takže ekvivalent select hvězdy 545 00:28:27,360 --> 00:28:30,940 z vyjádření studentů, jej bude jen student.select. 546 00:28:30,940 --> 00:28:34,380 A to vám dá zpět pole se všemi studenta objektů v něm 547 00:28:34,380 --> 00:28:35,770 že jste iteraci budete chtít. 548 00:28:35,770 --> 00:28:37,019 Můžete získat něco z toho. 549 00:28:37,019 --> 00:28:39,310 A většinu času, budete to není jen chcete udělat select, 550 00:28:39,310 --> 00:28:40,935 jste vlastně chcete zadat něco. 551 00:28:40,935 --> 00:28:44,580 A tak si můžete řetěz Dohromady tyto volání funkcí, 552 00:28:44,580 --> 00:28:48,830 jako jak byste řetěz spolu prohlášení v SQL. 553 00:28:48,830 --> 00:28:53,002 Takže si můžete udělat student.select (). Kde v tomto příkladu. 554 00:28:53,002 --> 00:28:54,710 A pak, můžete upřesnit podmínky, 555 00:28:54,710 --> 00:28:57,880 jen pomocí normální Python Booleans zkontrolovat věci. 556 00:28:57,880 --> 00:29:02,110 >> Takže v tomto případě, že chcete omezit to, co jste na výběr, 557 00:29:02,110 --> 00:29:06,790 kde student.grade se rovná 50 ° C, a student.name je rovna Ezra, 558 00:29:06,790 --> 00:29:09,130 tak, že bude jen dostat mě z toho. 559 00:29:09,130 --> 00:29:11,340 A všimněte si, jeden opravdu subtilní věc je, 560 00:29:11,340 --> 00:29:15,570 že pokud chcete zadat AND / a nebo nebo / nebo, 561 00:29:15,570 --> 00:29:19,840 v Pythonu, měli byste normálně používat, Myslím, že slovo "a" ve skutečnosti, 562 00:29:19,840 --> 00:29:23,351 ale tady použít jeden ampersand, což je normálně bitový operátor, 563 00:29:23,351 --> 00:29:25,600 ale v tomto zvláštním případě, přesně tak, jak to dělá skrček, 564 00:29:25,600 --> 00:29:27,660 použijete jeden ampersand specifikovat "a". 565 00:29:27,660 --> 00:29:29,451 To je něco, co I zaplést hodně, 566 00:29:29,451 --> 00:29:32,530 ale to nepřijde že hodně v praxi. 567 00:29:32,530 --> 00:29:36,350 >> A pak, až budete mít všechny Studenti z databáze, 568 00:29:36,350 --> 00:29:39,420 poté, co jste udělal, že jste select a vaše oblečení nebo cokoliv, 569 00:29:39,420 --> 00:29:42,334 můžete použít smyčky foreach, stejně jako normální v Pythonu, 570 00:29:42,334 --> 00:29:44,500 s nějakým druhem iterátoru nebo s nějakým druhem pole. 571 00:29:44,500 --> 00:29:46,333 Takže si můžete udělat, pro S v student.select (). když s 572 00:29:46,333 --> 00:29:52,930 re (Student.grade <75), a takže to bude iteraci přes každého studenta v tabulce 573 00:29:52,930 --> 00:29:56,260 jehož stupeň je nižší než 75, což V tomto případě, je stále jen já. 574 00:29:56,260 --> 00:29:59,218 A pak byste mohl udělat něco, co v rámci že smyčka, stejně jako pošlete mi e-mail 575 00:29:59,218 --> 00:30:01,680 a řekněte mi skutečně otočit můj problém sadách. 576 00:30:01,680 --> 00:30:04,550 >> Takže, další věc, kterou můžete ano, je to opravdu snadné 577 00:30:04,550 --> 00:30:06,460 k aktualizaci řádků v tabulce. 578 00:30:06,460 --> 00:30:08,720 Takže, nezapomeňte se sem, Váš když jsem vložena, 579 00:30:08,720 --> 00:30:11,440 Vzal jsem si hodnotu, která byla vrácené student.create, 580 00:30:11,440 --> 00:30:14,920 a já jsem přidělen ho pojmenovat zvané Ezra. 581 00:30:14,920 --> 00:30:18,995 A tak teď, můžete změnit hodnoty v tomto případě, 582 00:30:18,995 --> 00:30:20,870 stejně jako by to byla normální třídy v Pythonu. 583 00:30:20,870 --> 00:30:25,060 >> Takže si můžete nastavit ezra.grade = 95 a která bude aktualizovat místní kopie, 584 00:30:25,060 --> 00:30:28,380 ale pokud opravdu chcete zavázat, že změna do databáze, 585 00:30:28,380 --> 00:30:31,410 budete muset zavolat ezra.save, takže se nazývá metoda .Save 586 00:30:31,410 --> 00:30:32,650 na instanci. 587 00:30:32,650 --> 00:30:38,085 >> A tak teď, jsem se úspěšně změněna moje vlastní třída v databázi. 588 00:30:38,085 --> 00:30:41,210 Tak, pak řekněme, že mě chytí mění svou třídu v databázi. 589 00:30:41,210 --> 00:30:44,126 Profesor Malan se pravděpodobně bude chtít, aby mě vymazat ze třídy, 590 00:30:44,126 --> 00:30:48,630 a tak můžete volat .Delete Metoda instance právě na tu věc. 591 00:30:48,630 --> 00:30:51,674 >> Takže, pokud byste chtěli jet zpět do této smyčky tady, 592 00:30:51,674 --> 00:30:53,465 a ve skutečnosti, místo toho o odesílání e-mailů na všechny 593 00:30:53,465 --> 00:30:56,577 studentů stupně jehož je méně než 75, jste chtěli je odstranit, 594 00:30:56,577 --> 00:30:58,660 v rámci této smyčky byste mohli volejte s.delete instance. 595 00:30:58,660 --> 00:31:04,180 596 00:31:04,180 --> 00:31:07,780 A to poslední, co chcete dělat, je kdykoli navázat spojení, 597 00:31:07,780 --> 00:31:10,350 a máte hotovo s vaší prací, Chcete-li volat db.Close, 598 00:31:10,350 --> 00:31:13,190 kde db je, že databáze namítají, že jsme měli předtím. 599 00:31:13,190 --> 00:31:18,290 A chcete, aby se ujistil, že všechno dostane uzavřen mimo. 600 00:31:18,290 --> 00:31:18,790 >> Bezva. 601 00:31:18,790 --> 00:31:22,410 Takže teď, mám příklad aplikace. 602 00:31:22,410 --> 00:31:26,880 Já jsem tak nějak pre-dělal vše, co jen tak to tam nebude žádný živý kódování 603 00:31:26,880 --> 00:31:30,220 chyby, ale můžeme projít to a uvidíte, jak byste dát baňky 604 00:31:30,220 --> 00:31:33,685 a Peewee dohromady, a udělat jednoduchou aplikaci. 605 00:31:33,685 --> 00:31:38,680 Já tomu říkám CS50 chvástat, a to je druh jednoduchého blog platformu. 606 00:31:38,680 --> 00:31:41,150 >> Tak, jako první, budu spustit a ukázat, jak to vypadá, 607 00:31:41,150 --> 00:31:42,890 a pak se můžeme dívat se více do kódu. 608 00:31:42,890 --> 00:32:00,470 609 00:32:00,470 --> 00:32:02,830 Dobře, tak ať to prostě běžet to. 610 00:32:02,830 --> 00:32:14,040 611 00:32:14,040 --> 00:32:17,250 Cool, udělám to o něco menší. 612 00:32:17,250 --> 00:32:20,000 Není to moc hezké, jen proto, Nechtěl jsem dělat spoustu CSS, 613 00:32:20,000 --> 00:32:23,255 ale co to udělá, je, že má tato databáze blogu, 614 00:32:23,255 --> 00:32:25,630 a to jde přes všechny jim, a to bude jejich zobrazení 615 00:32:25,630 --> 00:32:28,170 na stránce v pořadí poslední. 616 00:32:28,170 --> 00:32:30,920 A tak to jsou jen některé příspěvky že jsem zachránil v databázi. 617 00:32:30,920 --> 00:32:35,680 >> Takže pokud chceme vytvořit novou pošta, můžeme jít do Přidat nový příspěvek, 618 00:32:35,680 --> 00:32:42,720 a můžeme vstoupit do názvu pošta, takže něco jako, CS50 seminář. 619 00:32:42,720 --> 00:32:45,360 620 00:32:45,360 --> 00:32:46,735 Wow, opravdu těší na seminář. 621 00:32:46,735 --> 00:32:51,070 622 00:32:51,070 --> 00:32:52,270 >> Bezva. 623 00:32:52,270 --> 00:32:56,060 Poté stiskněte místo, a to bude přesměrovat zpět na domovskou stránku, 624 00:32:56,060 --> 00:33:00,039 a pak uvidíte, že Přidá se poslední příspěvek. 625 00:33:00,039 --> 00:33:01,580 A máme ještě všechny ty tam. 626 00:33:01,580 --> 00:33:08,080 Takže teď, pojďme krokovat všechny kód a uvidíte, jak to provést. 627 00:33:08,080 --> 00:33:11,995 >> Takže si myslím, že první věc, která vám se podívat na, je ve skutečnosti modely. 628 00:33:11,995 --> 00:33:14,120 Hodně času, kdy jste navrhování něco, 629 00:33:14,120 --> 00:33:17,036 můžete přemýšlet o tom, jak jako první budete reprezentovat vaše data, 630 00:33:17,036 --> 00:33:22,915 a pak navrhovat věci kolem, které, takže vše, co dává smysl. 631 00:33:22,915 --> 00:33:25,290 A to je ve skutečnosti, jak jsem udělal to, když jsem dělal to, 632 00:33:25,290 --> 00:33:28,030 Posadil jsem se a myslel, Co chci v příspěvku. 633 00:33:28,030 --> 00:33:32,130 >> Takže, tady máme stejnou strukturu že jsem se zmínil dříve, 634 00:33:32,130 --> 00:33:33,755 kde děláme db = Sqldatabase ("posts.db"). 635 00:33:33,755 --> 00:33:37,840 636 00:33:37,840 --> 00:33:40,980 Ve skutečnosti, pravděpodobně nechcete, tvrdé kódu v databázích jméno své. 637 00:33:40,980 --> 00:33:43,730 To by mělo pravděpodobně parametr že je uložen někde, možná 638 00:33:43,730 --> 00:33:45,940 v konfiguračním souboru, ale v malý příklad jako je tento, 639 00:33:45,940 --> 00:33:48,310 je to v pořádku, aby pevný kódu, který v. 640 00:33:48,310 --> 00:33:53,510 >> Takže teď, máme tuto třídu Post, která dědí ze základního modelu. 641 00:33:53,510 --> 00:33:56,930 A má, znovu, ID = PrimaryKeyField. 642 00:33:56,930 --> 00:34:02,250 Ve skutečnosti, pokud nechcete určit, když jsem ve skutečnosti zbavil to, 643 00:34:02,250 --> 00:34:07,152 pak Peewee my se postaráme automatické vytváření tohoto pole ID, 644 00:34:07,152 --> 00:34:09,360 a to bude automaticky učinit z něj PrimaryKey, který 645 00:34:09,360 --> 00:34:12,485 Myslím si, že je opravdu pěkné, protože obvykle, že je to něco, co chcete mít, 646 00:34:12,485 --> 00:34:16,239 ale líbí se mi, aby ji v specificky, jen proto, abych si uvědomit, že je to tam. 647 00:34:16,239 --> 00:34:19,480 Ale pokud neurčíte, že, že tam bude automaticky. 648 00:34:19,480 --> 00:34:22,198 >> Takže, mám datum, které je DateTimeField, a vše 649 00:34:22,198 --> 00:34:24,864 tyto různé obory, pokud jste podívejte se na Peewee dokumentace, 650 00:34:24,864 --> 00:34:28,920 to ti dám seznam různých typy polí, které můžete použít. 651 00:34:28,920 --> 00:34:34,440 Z větší části, to je analogický na to, co byste viděli v SQL. 652 00:34:34,440 --> 00:34:37,699 Takže tam je Charfield, je VarCharFields, TextFields, 653 00:34:37,699 --> 00:34:40,550 které jsou pro velmi dlouho texty, jako jsou blogu 654 00:34:40,550 --> 00:34:44,460 potenciálně DateTimeFields, DoubleFields, FloatFields, 655 00:34:44,460 --> 00:34:46,100 všechny takové věci. 656 00:34:46,100 --> 00:34:51,570 >> A můžete předat jiné argumenty na to, které jsem neupřesnila zde. 657 00:34:51,570 --> 00:34:55,719 Řekněme například, že jste nechtěl umožňují dvě pracovní místa mají stejný název, 658 00:34:55,719 --> 00:34:59,672 můžete určit, něco jako jedinečný = True, 659 00:34:59,672 --> 00:35:02,880 a to je jen další parametr pole, že při kompilaci dolů 660 00:35:02,880 --> 00:35:06,865 do SQL, bude to určit, že má být unikátní. 661 00:35:06,865 --> 00:35:09,740 Můžete také zadat něco jako ne null a všechny ostatní věci 662 00:35:09,740 --> 00:35:11,750 obvyklým způsobem v SQL. 663 00:35:11,750 --> 00:35:16,020 Tak, to je docela jednoduchý Model, který má datum. 664 00:35:16,020 --> 00:35:19,460 Všimněte si, v rámci DateTimeField, I podle toho, co je výchozí. 665 00:35:19,460 --> 00:35:22,560 Specifikovány jsem, že je datetime.datetime.now, 666 00:35:22,560 --> 00:35:24,920 Důvodem je způsob, který to dostane vyhodnocena, 667 00:35:24,920 --> 00:35:28,750 to vlastně hodnotí DateTime.Now kdy 668 00:35:28,750 --> 00:35:32,110 dostane vložena do databáze. 669 00:35:32,110 --> 00:35:34,760 >> Myslím, že bych se zdvojnásobit zkontrolovat, 670 00:35:34,760 --> 00:35:38,222 ale pokud jste něco takového, pak že by ve skutečnosti, že po vyhodnocení, 671 00:35:38,222 --> 00:35:40,180 a pak DateTime by být vždy stejné. 672 00:35:40,180 --> 00:35:44,240 Takže, jen pokud děláte něco, s datetimes, dvojitá kontrola 673 00:35:44,240 --> 00:35:47,080 že je to hodnocení, když ve skutečnosti dostane vložena, nebo jinak 674 00:35:47,080 --> 00:35:48,780 můžete být zmateni. 675 00:35:48,780 --> 00:35:51,221 >> Titul je jen Charfield, který zde 676 00:35:51,221 --> 00:35:53,970 jsou více argumentů můžete projdou při specifikaci přesně, jak dlouho budete 677 00:35:53,970 --> 00:35:56,170 chci, aby to bylo, ale tady, to se opravdu nezáleží. 678 00:35:56,170 --> 00:35:58,687 A Text bude text celého poštou, 679 00:35:58,687 --> 00:36:01,020 a, co se děje, že je TextField jen proto, že chcete, 680 00:36:01,020 --> 00:36:03,370 k tomu, aby mohla být docela dlouhý řetězec. 681 00:36:03,370 --> 00:36:05,970 >> Pak máme tuto Meta podtřídy, že právě 682 00:36:05,970 --> 00:36:11,250 určuje, že chceme databázi pokud je to ve skutečnosti otevírá do 683 00:36:11,250 --> 00:36:14,267 být db objekt, který tu máme. 684 00:36:14,267 --> 00:36:16,350 A poslední věc, kterou máme tady, je právě tato funkce 685 00:36:16,350 --> 00:36:18,120 že budeme použít z naší hlavní aplikace 686 00:36:18,120 --> 00:36:23,970 inicializovat databázi se chcete připojit to, a pak k vytvoření tabulky Post. 687 00:36:23,970 --> 00:36:26,880 >> Nyní se pojďme podívat na hlavní aplikace samotné. 688 00:36:26,880 --> 00:36:30,800 Takže tohle je docela trochu delší, než ty, 689 00:36:30,800 --> 00:36:34,840 že jsme neviděli, ale doufejme, že není tak špatné. 690 00:36:34,840 --> 00:36:37,140 Takže mi dovolte, abych rozšířit to. 691 00:36:37,140 --> 00:36:38,370 Dobře. 692 00:36:38,370 --> 00:36:42,070 >> Takže si všimněte, a horní jsem importoval celá parta dalších věcí 693 00:36:42,070 --> 00:36:44,129 z baňky, která my ne opravdu neviděl. 694 00:36:44,129 --> 00:36:46,670 A doufejme, že můžeme projít každý z nich po jednom 695 00:36:46,670 --> 00:36:49,420 a mluvit trochu víc o je, řazeny dle příkladu. 696 00:36:49,420 --> 00:36:51,380 Takže, máme baňky, a render_template, 697 00:36:51,380 --> 00:36:54,370 který jsme viděli dříve, Tato žádost objekt, 698 00:36:54,370 --> 00:37:00,400 který přijde, když se podíváme na to, jak forma, kterou jsem se ukazovat vlastně 699 00:37:00,400 --> 00:37:01,170 funguje. 700 00:37:01,170 --> 00:37:04,850 Přesměrování, který vám umožní přesměrovat zpět z Create New Post 701 00:37:04,850 --> 00:37:11,710 zpět na původní domovské stránky a pak URL, což je něco, co vám umožní 702 00:37:11,710 --> 00:37:15,550 zjistit, kde na webové stránky konkrétní stránku je. 703 00:37:15,550 --> 00:37:17,810 >> Tak, další věc, kterou dělám, je import I 704 00:37:17,810 --> 00:37:21,550 všechny informace od modelů soubory, které jsme se právě díváte. 705 00:37:21,550 --> 00:37:23,140 A, jo. 706 00:37:23,140 --> 00:37:28,720 >> Takže, něco nového, co přijde up, když máte co do činění s, 707 00:37:28,720 --> 00:37:31,850 zejména databáze, je, že můžete zadat 708 00:37:31,850 --> 00:37:35,110 funkce, která se zavolá před Každý požadavek, a funkci, kterou dostane 709 00:37:35,110 --> 00:37:39,690 volal po každém požadavku, pomocí tohoto Žádost funkčního Dekoratérský app.before. 710 00:37:39,690 --> 00:37:42,324 >> A tak to bude vykonán všude tam, kde je tato funkce. 711 00:37:42,324 --> 00:37:44,240 To nemusí být volal před vyžádání, 712 00:37:44,240 --> 00:37:46,281 ale obvykle to je něco, rozumné říkat. 713 00:37:46,281 --> 00:37:48,580 714 00:37:48,580 --> 00:37:51,650 Můžete určit, bez ohledu na funkci Chcete se tam volal, 715 00:37:51,650 --> 00:37:56,330 tak jsem je uvedeno toto initialize_db funkce, kterou jsme měli zpátky v modelech 716 00:37:56,330 --> 00:38:02,390 soubor, takže před každým vyžádání, vy Chcete se připojit k databázi. 717 00:38:02,390 --> 00:38:04,560 >> K dispozici jsou dva různé způsobů, jak to udělat. 718 00:38:04,560 --> 00:38:10,830 Můžete to udělatapp., I věří, že je to after_request. 719 00:38:10,830 --> 00:38:13,800 A rozdíl mezi after_request a teardown_request, 720 00:38:13,800 --> 00:38:17,590 je to, že se bude after_request dojít pouze v případě, že žádost ve skutečnosti byl platný. 721 00:38:17,590 --> 00:38:20,440 A tak, pouze v případě, že Požadavek byl úspěšný, 722 00:38:20,440 --> 00:38:22,490 pokud se nic nepovedlo, ale teardown_request 723 00:38:22,490 --> 00:38:26,300 se stane v případě úspěšného žádost, nebo v případě chyby. 724 00:38:26,300 --> 00:38:28,252 >> Takže, obvykle, chceš používat teardown_request, 725 00:38:28,252 --> 00:38:30,460 pokud chcete dělat něco, zejména odlišný 726 00:38:30,460 --> 00:38:31,470 v případě chyby. 727 00:38:31,470 --> 00:38:35,122 Ale jen pro uzavření databáze, ať už se to podaří, nebo pokud selže, 728 00:38:35,122 --> 00:38:37,080 my se chcete odpojit z databáze. 729 00:38:37,080 --> 00:38:41,240 Tak se jmenuje, db.Close na db objekt. 730 00:38:41,240 --> 00:38:43,740 >> Všimněte si, že teardown_request nasává výjimku. 731 00:38:43,740 --> 00:38:46,781 Takže si můžete zkontrolovat, zda tam byl vlastně chyba, když to bylo zavírání dolů, 732 00:38:46,781 --> 00:38:49,390 ale tady, doufejme, že tam nejsou spoustu chyb, 733 00:38:49,390 --> 00:38:52,720 takže jsme tak nějak ignorovat to. 734 00:38:52,720 --> 00:38:55,990 >> Dobře, a to ostatní není tak špatné. 735 00:38:55,990 --> 00:39:02,240 Takže, když jdeme na domovskou stránku, jsme tavené tuto home.html šablonu 736 00:39:02,240 --> 00:39:03,490 že otevřou. 737 00:39:03,490 --> 00:39:06,240 Průsmyk je ve funkci rovný, a co to 738 00:39:06,240 --> 00:39:10,260 dělá, je, pamatujte máme tento příspěvek Model, takže jsme vyberte všechny příspěvky, 739 00:39:10,260 --> 00:39:13,890 a pak další věc, kterou můžete udělat, můžete určit klauzuli WHERE, 740 00:39:13,890 --> 00:39:16,910 Můžete zadat objednávat, a tak jsme se 741 00:39:16,910 --> 00:39:18,820 všechny příspěvky, které dostat vybrán, a poté 742 00:39:18,820 --> 00:39:22,590 objednáváme jim touto post.date.descending. 743 00:39:22,590 --> 00:39:25,030 A to bude specifikovat, kdy že skutečně vyjdou, 744 00:39:25,030 --> 00:39:29,250 ten nejnovější bude velmi první. 745 00:39:29,250 --> 00:39:31,420 >> A pak, že jsme se projít do home.html šablona, 746 00:39:31,420 --> 00:39:34,240 tak se pojďme skutečně otevřít Šablona že opravdu rychlý, 747 00:39:34,240 --> 00:39:36,760 a podívat se na to, jak to je pracovat. 748 00:39:36,760 --> 00:39:42,130 A to není velký HTML, ale doufejme, že se můžeme soustředit na Python. 749 00:39:42,130 --> 00:39:46,960 >> Takže je tu odkaz na přidat nové Post, a tak to určuje trasu 750 00:39:46,960 --> 00:39:51,580 uvnitř baňky, které jsme definovat, což je tady. 751 00:39:51,580 --> 00:39:56,310 To je nový příspěvek trasa, a určíme, že až sem. 752 00:39:56,310 --> 00:40:00,450 A tak to je odkaz, který se pak jít na této trase v rámci serveru Flask. 753 00:40:00,450 --> 00:40:03,820 >> Čím více zajímavá věc je to pro smyčku zde. 754 00:40:03,820 --> 00:40:07,685 Tak jsme určíte, že toto Příspěvek parametr, který 755 00:40:07,685 --> 00:40:09,560 byl předán do render_template funkce, 756 00:40:09,560 --> 00:40:13,550 pro každý post v období po letech Objekt, který je předán v. 757 00:40:13,550 --> 00:40:16,600 Chceme vytisknout název místo, v 1. pololetí, 758 00:40:16,600 --> 00:40:21,930 a pak dále, chceme vytisknout post textu uvnitř odstavce. 759 00:40:21,930 --> 00:40:25,710 >> A tady, můžeme vlastně volání funkce Python, 760 00:40:25,710 --> 00:40:35,130 takže můžeme nazvat strftime, ST-RF-time, a můžete předat ve formátu řetězce 761 00:40:35,130 --> 00:40:37,064 které chcete vytisknout data v. 762 00:40:37,064 --> 00:40:39,980 Takže to je docela pěkné, že můžete ve skutečnosti tuto funkci volat Python 763 00:40:39,980 --> 00:40:41,090 zevnitř zde. 764 00:40:41,090 --> 00:40:44,370 Nemusíte dělat formátování na boční regulátor, protože ve skutečnosti, 765 00:40:44,370 --> 00:40:47,770 formátování datum, je něco, Chcete-li řešit v rámci pohledu. 766 00:40:47,770 --> 00:40:51,480 >> A všechny tyto procent věci, není extra důležité. 767 00:40:51,480 --> 00:40:55,270 Podíváte-li se do dokumentace pro funkci strftime v Pythonu, 768 00:40:55,270 --> 00:40:57,040 specifikuje všechny tyto věci, ale to je 769 00:40:57,040 --> 00:40:59,190 jak, kdy jsme se dívali na domovské stránce zde, 770 00:40:59,190 --> 00:41:04,440 že formátuje to s pěkný datum, a to určuje, AM nebo PM, 771 00:41:04,440 --> 00:41:09,410 ale normálně, kdybychom neměl tohle, 772 00:41:09,410 --> 00:41:14,024 budete pravděpodobně získat nějaké odpadky datum, které nevypadalo moc dobře. 773 00:41:14,024 --> 00:41:15,940 A pak jsme zadat post.text, mohl a já 774 00:41:15,940 --> 00:41:19,460 dali pár konce řádků tady, jen 775 00:41:19,460 --> 00:41:21,820 dát nějaké mezery mezi každé pracovní místo. 776 00:41:21,820 --> 00:41:26,270 >> Takže si myslím, že nejdůležitější věc, v tomto příkladu, 777 00:41:26,270 --> 00:41:28,697 je, že můžete použít pro smyčce. 778 00:41:28,697 --> 00:41:30,780 A to je analogický věci, které můžete udělat v PHP. 779 00:41:30,780 --> 00:41:32,905 Můžete iterovat, vše, co je předán do, 780 00:41:32,905 --> 00:41:36,719 a tak, místo toho, aby musel dělat kopírovat / vložit, kopírovat / vložit všechny HTML, 781 00:41:36,719 --> 00:41:40,010 stačí ji napsat jednou, a poté můžete iterovat přes všechny sloupků. 782 00:41:40,010 --> 00:41:41,510 >> A to je něco, běžné, že chcete 783 00:41:41,510 --> 00:41:44,510 dělat, když máte velké množství dat, je, že pro všechno na vaše data, 784 00:41:44,510 --> 00:41:48,370 Chcete udělat podobnou věc. 785 00:41:48,370 --> 00:41:51,690 A pak, jen pamatujte, že když vás Chcete-li tisknout něco výslovně 786 00:41:51,690 --> 00:41:54,780 v HTML, můžete použít dvojité rovnátka tady, 787 00:41:54,780 --> 00:41:57,820 ale pak, když chcete zadat Některé informace o stavu, 788 00:41:57,820 --> 00:42:02,430 nebo o cyklu for, ty použijte procenta konzolu. 789 00:42:02,430 --> 00:42:08,730 >> Takže jít zpátky do Python kód, takže vysvětluje 790 00:42:08,730 --> 00:42:12,242 co se děje v hlavní Trasa, když jdeme tam, 791 00:42:12,242 --> 00:42:14,450 to prostě zobrazí všechny sloupky, ale pak otázka 792 00:42:14,450 --> 00:42:17,440 je, jak jsme se skutečně dostat příspěvků do databáze, která 793 00:42:17,440 --> 00:42:18,970 je trochu zajímavější. 794 00:42:18,970 --> 00:42:23,960 >> Takže, když kliknete na Nový Post link, které jsme tu viděli, 795 00:42:23,960 --> 00:42:26,000 to vás přesměruje na tuto formu. 796 00:42:26,000 --> 00:42:29,580 A to je jen jednoduchý hovor na render_template funkce, které pak 797 00:42:29,580 --> 00:42:32,110 přechází na novou funkci ve formě HTML. 798 00:42:32,110 --> 00:42:36,212 Takže pojďme se podívat na to. 799 00:42:36,212 --> 00:42:37,420 Takže tohle je velmi jednoduchý. 800 00:42:37,420 --> 00:42:45,110 To má jednoduchý HTML formulář, který bude vypadat trochu povědomý, 801 00:42:45,110 --> 00:42:47,380 na základě formuláře v CS50 financí. 802 00:42:47,380 --> 00:42:49,940 A tak jsme se zde zadáte, akci. 803 00:42:49,940 --> 00:42:52,435 A tady, pokud pracujete s PHP, obvykle to, 804 00:42:52,435 --> 00:42:55,930 by bylo něco jako, create.PHP, ale tady 805 00:42:55,930 --> 00:42:59,960 jsme vlastně určit trasu v rámci serveru Flask. 806 00:42:59,960 --> 00:43:02,520 A tak tato cesta odpovídá k vytvoření trasy 807 00:43:02,520 --> 00:43:05,680 kterou tu máme, který půjdeme do v druhém. 808 00:43:05,680 --> 00:43:07,630 >> A tak jsme se určit, že je to metoda pošta, 809 00:43:07,630 --> 00:43:09,820 protože chceme poslat tato forma dat, a obvykle 810 00:43:09,820 --> 00:43:12,945 když jste odesílání dat z formuláře, možná budete chtít použít žádost o příspěvek, 811 00:43:12,945 --> 00:43:15,760 Jen takže nemusíte skončit s tímto velkým a nemotorný URL. 812 00:43:15,760 --> 00:43:18,970 Ale můžete také použít požadavek GET, a předat ji s variabilním směrování, 813 00:43:18,970 --> 00:43:21,170 ale formulářů, to je hezké na žádost o post zde. 814 00:43:21,170 --> 00:43:24,620 A tak poté, přesně jako vy by to s HTML a PHP, 815 00:43:24,620 --> 00:43:28,420 můžete zadat tyto textové vstupy, a můžete zadat název z nich, 816 00:43:28,420 --> 00:43:33,490 a to je jméno, které dostane prošel do objektu žádosti do baňky. 817 00:43:33,490 --> 00:43:36,960 >> A pak máme Odeslat tlačítko, které říká, že Post. 818 00:43:36,960 --> 00:43:40,760 A tady, pošta je název z tlačítko, protože je to blog post, 819 00:43:40,760 --> 00:43:42,700 ale tady, pošta je metoda požadavku. 820 00:43:42,700 --> 00:43:47,060 Takže to jsou stejné slovo ale ve skutečnosti nesouvisí. 821 00:43:47,060 --> 00:43:48,460 to jo 822 00:43:48,460 --> 00:43:54,800 >> Vraťme se zpět do Pythonu, když jsme zavolali metodu vytvářet, 823 00:43:54,800 --> 00:43:57,702 Všimněte si, že můžete skutečně určit v rámci cesty 824 00:43:57,702 --> 00:44:00,650 metody požadavku že chcete přijmout, 825 00:44:00,650 --> 00:44:04,770 a tak tady jsem určit, že já jen chcete přijmout metody POST. 826 00:44:04,770 --> 00:44:09,800 Takže, když jsem se skutečně snaží navštívit stránku přímo, který je pomocí požadavku GET, 827 00:44:09,800 --> 00:44:11,700 bude mi říct, "Metoda není povolena." 828 00:44:11,700 --> 00:44:15,840 >> A tak, budete mít stránky, něco jako tuto vytvořit stránku, což já jsem jen 829 00:44:15,840 --> 00:44:20,192 ve skutečnosti za použití jako cesta pro formulář, aby mohla předložena, 830 00:44:20,192 --> 00:44:22,900 můžete určit, že vy ne chcete, aby lidé mohli jít tam 831 00:44:22,900 --> 00:44:25,650 přímo přes požadavku GET, nebo pokud jste nechtěli, 832 00:44:25,650 --> 00:44:28,580 z nějakého důvodu, žádost o příspěvek, můžete jen zadat sem dostal, 833 00:44:28,580 --> 00:44:32,720 ale v tomto případě jsme právě Chcete požadavek Post jít ven. 834 00:44:32,720 --> 00:44:38,700 >> Takže, když je create_post nazývá, když navštívíme, že přes požadavek POST, 835 00:44:38,700 --> 00:44:43,600 vždy, když jdete do určité cesta, je tu tento požadavek objekt, 836 00:44:43,600 --> 00:44:46,640 a my jsme museli dovézt Žádosti na samém vrcholu, 837 00:44:46,640 --> 00:44:49,640 ale tam je tato žádost Objekt, který je předán v, 838 00:44:49,640 --> 00:44:53,210 a můžete přístup k datům formuláře, které dostane automaticky vyplněna 839 00:44:53,210 --> 00:44:55,070 Při odeslání požadavku z formuláře. 840 00:44:55,070 --> 00:44:56,990 >> A potom, co si myslím, je opravdu cool, je 841 00:44:56,990 --> 00:45:02,840 že objekt formuláře, aby si prošel in, je jen slovník, který Python 842 00:45:02,840 --> 00:45:10,560 obsahuje, pokud si to tady access--, ať me vytáhnout HTML vedle ní, jen 843 00:45:10,560 --> 00:45:17,670 takže můžete mít, že jako referenční, ano, tak 844 00:45:17,670 --> 00:45:21,060 názvy, které jsme zde byla zadána pro různé oblasti, tak 845 00:45:21,060 --> 00:45:23,900 název a text, my pak stačí použít ty sem 846 00:45:23,900 --> 00:45:27,110 jako indexy do dat formuláře. 847 00:45:27,110 --> 00:45:28,950 Tak to je super pohodlné. 848 00:45:28,950 --> 00:45:33,320 >> Takže říkáme post.create, který budou vytvářet a automaticky vložit 849 00:45:33,320 --> 00:45:36,850 tato nová funkce objekt do databáze. 850 00:45:36,850 --> 00:45:40,690 A myslím, že to vytvořit funkci tady je opravdu skvělý příklad toho, jak 851 00:45:40,690 --> 00:45:44,900 výkonný Baňka se a pracuje s tím, protože pokud jste dělali něco 852 00:45:44,900 --> 00:45:48,660 v PHP, budete muset udělat hodně validace, 853 00:45:48,660 --> 00:45:51,730 budete muset poté navázat spojení s databází, 854 00:45:51,730 --> 00:45:55,210 budete muset poté spustit SQL dotaz, 855 00:45:55,210 --> 00:45:59,550 ale tady prostě to pěkné post.create, které můžeme pak jen 856 00:45:59,550 --> 00:46:01,520 získat informace ven od podání žádosti objektu, 857 00:46:01,520 --> 00:46:05,370 a pak ji přenést do nového příspěvek, který vytváříme. 858 00:46:05,370 --> 00:46:07,850 >> A pak, úplně poslední co chceme dělat, 859 00:46:07,850 --> 00:46:09,630 je přesměrovat uživatele zpět do domu. 860 00:46:09,630 --> 00:46:13,020 A tak jsme se použít Baňka přesměrování funkci. 861 00:46:13,020 --> 00:46:17,770 A něco, co jsme neviděli předtím, bylo toto URL funkce. 862 00:46:17,770 --> 00:46:21,970 Takže URL pro funkci umožňuje předáte ve skutečnosti pojmenování 863 00:46:21,970 --> 00:46:26,090 z funkce ve vašem Pythonu, spíše než na konkrétní cestě 864 00:46:26,090 --> 00:46:26,720 že je to na. 865 00:46:26,720 --> 00:46:32,107 >> Takže jsem mohl mít stejně snadno přesměrován uživatele k lomítko, 866 00:46:32,107 --> 00:46:37,050 které by poslat jej zpět domů, ale pomocí adresy URL pro funkci je hezké, 867 00:46:37,050 --> 00:46:39,990 protože pokud změníte místo, kde věci jsou, 868 00:46:39,990 --> 00:46:44,080 takže řekněme, že jsem se změnit domov být v / home místo toho, 869 00:46:44,080 --> 00:46:47,040 to by ještě pak se vrátit / home, protože vlastně jde a vzhlíží 870 00:46:47,040 --> 00:46:50,770 název funkce, a to vám dá zpět URL za to. 871 00:46:50,770 --> 00:46:52,490 >> Tak, tak nějak na Předpoklad, že jste 872 00:46:52,490 --> 00:46:55,489 s větší pravděpodobností změní, kde věci jsou, než jména funkcí. 873 00:46:55,489 --> 00:46:58,840 Můžete použít to opravdu pěkná URL pro funkci. 874 00:46:58,840 --> 00:47:02,470 A ještě jedna věc je být si vědom to je trochu složitější, 875 00:47:02,470 --> 00:47:05,750 je to, že si myslíte, že byste mohli jen volání přesměrovat na adresu URL pro, 876 00:47:05,750 --> 00:47:10,600 ale ve skutečnosti všechny trasy mají vrátit nějaký text a HTML, 877 00:47:10,600 --> 00:47:14,360 takže jste skutečně na vrátí přesměrování hovoru. 878 00:47:14,360 --> 00:47:18,379 V opačném případě budete mít něco neplatný asi ne vracet řetězec, 879 00:47:18,379 --> 00:47:21,420 protože všichni tito mají vrátit HTML ve skutečnosti chcete vykreslit. 880 00:47:21,420 --> 00:47:26,980 >> A tak, když zavoláte přesměrování, to vás přesměruje na stránku, 881 00:47:26,980 --> 00:47:30,270 ale ve skutečnosti vrátí HTML budete potřebovat k provedení tohoto přesměrování. 882 00:47:30,270 --> 00:47:34,430 883 00:47:34,430 --> 00:47:37,110 Vraťte se zpět na domovskou stránku. 884 00:47:37,110 --> 00:47:39,200 Takže máme tyto dva různé pohledy. 885 00:47:39,200 --> 00:47:40,132 Máme domácí názor. 886 00:47:40,132 --> 00:47:41,590 Nebo, myslím, že bych měl říct šablony. 887 00:47:41,590 --> 00:47:44,190 Máme tyto dvě šablony, domov šablony, které 888 00:47:44,190 --> 00:47:48,500 zobrazí všechny naše příspěvky, a pak máme tuto reklamní věc, 889 00:47:48,500 --> 00:47:52,970 a když kliknete na místo, to jde do nové trasy v baňce 890 00:47:52,970 --> 00:47:55,920 ale, že trasa nemusí nutně mít odpovídající šablonu. 891 00:47:55,920 --> 00:47:59,290 892 00:47:59,290 --> 00:48:01,560 Nemusíte vidět cokoliv, ale stále můžete 893 00:48:01,560 --> 00:48:04,090 mají tato práce bude v zákulisí. 894 00:48:04,090 --> 00:48:07,450 A pak budete přesměrováni zpět na domovskou stránku. 895 00:48:07,450 --> 00:48:12,230 A rozhodně, to je snadné pracovat v některých příjemnějším CSS do šablony 896 00:48:12,230 --> 00:48:15,580 a aby to vypadat mnohem hezčí, ale všechny hlavní logiky 897 00:48:15,580 --> 00:48:18,590 je tam v Pythonu. 898 00:48:18,590 --> 00:48:20,020 >> Máte otázky k tomuto příkladu? 899 00:48:20,020 --> 00:48:22,760 Vím, že existuje spousta různé věci dál tam, 900 00:48:22,760 --> 00:48:25,341 spousta věcí, které jsme neviděli dříve, ale jako něco. 901 00:48:25,341 --> 00:48:25,840 To jo. 902 00:48:25,840 --> 00:48:28,346 >> AUDIENCE 1: Máte něco udělat speciální drhnout dat, který je 903 00:48:28,346 --> 00:48:29,600 přicházející z formuláře? 904 00:48:29,600 --> 00:48:31,109 Všiml jsem si, jen řekl: "vytvářet," 905 00:48:31,109 --> 00:48:33,900 EZRA ZIGMOND: Jo, tak to je ve skutečnosti, to je opravdu dobrý bod. 906 00:48:33,900 --> 00:48:36,350 Otázkou tedy bylo, že ne je třeba zkontrolovat a ujistěte se, 907 00:48:36,350 --> 00:48:39,190 že data jsou platná, a dělat nějaký druh drhnutí 908 00:48:39,190 --> 00:48:41,840 aby se ujistil, že je platné, protože, jak si můžete prohlédnout zde, 909 00:48:41,840 --> 00:48:42,660 Nedělám to. 910 00:48:42,660 --> 00:48:48,140 Takže pojďme se podívat, co se děje jestli jsem něco prázdné kartičky. 911 00:48:48,140 --> 00:48:51,190 Takže to bude vlastně jen učinit prázdné místo a vyplnit DateTime. 912 00:48:51,190 --> 00:48:55,990 >> Takže ve skutečnosti, pravděpodobně byste chcete udělat něco jako: 913 00:48:55,990 --> 00:49:04,749 Možná, že určit, zda titul je rovna prázdný řetězec, pak nedělej to. 914 00:49:04,749 --> 00:49:07,290 Nebo, jen to v případě, že titul je nerovná se prázdný řetězec. 915 00:49:07,290 --> 00:49:10,330 Takže to není ve skutečnosti automaticky postarat se o to čištění 916 00:49:10,330 --> 00:49:12,820 pro vás, takže stále musíte udělat. 917 00:49:12,820 --> 00:49:14,330 Jo, dobrá otázka. 918 00:49:14,330 --> 00:49:18,497 >> AUDIENCE 2: Záleží na peeling Pro pokračování série injekci? 919 00:49:18,497 --> 00:49:19,890 Víš? 920 00:49:19,890 --> 00:49:22,830 >> EZRA ZIGMOND: Doufejme, Peewee dělá. 921 00:49:22,830 --> 00:49:25,830 Myslím, že by bylo jistě docela špatné knihovny, pokud to neudělal. 922 00:49:25,830 --> 00:49:29,511 923 00:49:29,511 --> 00:49:32,690 Nevím přesně. 924 00:49:32,690 --> 00:49:34,820 Musel bych se podívat na Dotaz, který je generován. 925 00:49:34,820 --> 00:49:38,980 Myslím si, že když jsem napsal v blogu, že tak nějak vypadala 926 00:49:38,980 --> 00:49:46,370 jako útok SQL injection, něco takového, je-li toto 927 00:49:46,370 --> 00:49:49,370 je jako pole pro heslo, nebo tak něco, byste mohli udělat něco takového. 928 00:49:49,370 --> 00:49:53,410 >> Myslím si, že bude i nadále dostat doslova posta, 929 00:49:53,410 --> 00:49:59,200 ale myslím, že to dělat Peewee nějaký čisticí dat 930 00:49:59,200 --> 00:50:01,680 před tím, než ve skutečnosti vykoná jej. 931 00:50:01,680 --> 00:50:04,510 >> AUDIENCE 1: Tento text pole navržen tak, aby prostý text, je to tak? 932 00:50:04,510 --> 00:50:05,710 >> EZRA ZIGMOND: Jo, to je. 933 00:50:05,710 --> 00:50:06,465 To jo. 934 00:50:06,465 --> 00:50:09,590 Takže se domnívám, že všechny, tak toto je správné chování, který bude dělat to, 935 00:50:09,590 --> 00:50:12,170 Ale myslím, že Peewee doufejme, že dělá dělat 936 00:50:12,170 --> 00:50:13,780 nějaký druh ochrany na jejich konci. 937 00:50:13,780 --> 00:50:16,090 A pokud byste chtěli dvojitá kontrola, že existuje 938 00:50:16,090 --> 00:50:19,530 způsoby, jak při generování dotazu. 939 00:50:19,530 --> 00:50:22,622 takže se nemusíte spustit přímo. 940 00:50:22,622 --> 00:50:24,330 Budu muset vzít podívejte se na dokumentaci, 941 00:50:24,330 --> 00:50:27,930 ale můžete skutečně zobrazit SQL, že je generování, 942 00:50:27,930 --> 00:50:30,840 a podívat se na to, a dělat ujistěte se, že uniká věci. 943 00:50:30,840 --> 00:50:33,700 >> Dalším důvodem, proč byste mohli Chcete se podívat na SQL 944 00:50:33,700 --> 00:50:37,920 že Peewee je výstup, je-li věci se zdají jít opravdu pomalu, 945 00:50:37,920 --> 00:50:41,090 můžete se podívat a uvidíte, co to je skutečně dělá, protože je to občas 946 00:50:41,090 --> 00:50:44,670 snadné omylem přidat in, jak píšete, 947 00:50:44,670 --> 00:50:47,880 můžete omylem mít nejprve vyberte celou databázi, 948 00:50:47,880 --> 00:50:50,230 a pak udělat nějaké operace třídění na to, že když opravdu 949 00:50:50,230 --> 00:50:51,320 chtěl vybrat podmnožinu. 950 00:50:51,320 --> 00:50:53,560 >> A tak, pokud věci nejsou docela jde dobře, 951 00:50:53,560 --> 00:50:57,300 je dobré se podívat na žádost že to vlastně stále generovány. 952 00:50:57,300 --> 00:50:57,800 To jo. 953 00:50:57,800 --> 00:51:02,100 >> AUDIENCE 2: Když jste poprvé začal, dáte v přístavu as 5000. 954 00:51:02,100 --> 00:51:02,904 >> EZRA ZIGMOND: Jo. 955 00:51:02,904 --> 00:51:06,070 AUDIENCE 2: je výchozí s Peewee, nebo je to něco, co můžete změnit? 956 00:51:06,070 --> 00:51:10,870 EZRA ZIGMOND: Ano, tak port je výchozí s baňky. 957 00:51:10,870 --> 00:51:13,061 Pokud program spustíte bez upřesní cokoliv, 958 00:51:13,061 --> 00:51:14,310 to bude automaticky dělat. 959 00:51:14,310 --> 00:51:16,060 Věřím, že budu mít zdvojnásobit zkontrolovat, 960 00:51:16,060 --> 00:51:19,130 ale můžete určit, že v app.run, Myslím, že můžete udělat něco jako, 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 Dejme že zkusit opravdu rychle. 964 00:51:23,750 --> 00:51:29,100 965 00:51:29,100 --> 00:51:32,230 Jo, takže stačí zadat port = 8080, a bude spusťte jej tam, 966 00:51:32,230 --> 00:51:36,130 což si myslím, pokud byste chtěli spustit na IDE, jsem se snažil na to, 967 00:51:36,130 --> 00:51:38,527 ale myslím, že pokud jste běžel na portu 8080, 968 00:51:38,527 --> 00:51:40,360 to by asi být schopni pro přístup k serveru, 969 00:51:40,360 --> 00:51:41,870 stejně jako jste byli pro webové stránky. 970 00:51:41,870 --> 00:51:44,390 >> Jo, ale je to jednoduché to změnit, pokud vás 971 00:51:44,390 --> 00:51:48,540 nějaký druh, jako je přesměrování portů věci, které musíte udělat. 972 00:51:48,540 --> 00:51:50,410 >> Nějaké další otázky? 973 00:51:50,410 --> 00:51:50,916 To jo? 974 00:51:50,916 --> 00:51:53,416 AUDIENCE 1: Takže, viděl jsem ve vaší modely, které, jak jste zmínil, 975 00:51:53,416 --> 00:51:55,647 musíte zadat databáze pro každý objekt. 976 00:51:55,647 --> 00:51:58,105 Nevíte náhodou vědět, dělá které dělají to opravdu snadné, pokud 977 00:51:58,105 --> 00:52:03,210 mají spoustu databází SQLite, které jste chcete použít pro jediné webové aplikace, 978 00:52:03,210 --> 00:52:07,210 že můžete specifikovat spoustu z různých ty v modelu? 979 00:52:07,210 --> 00:52:11,620 >> EZRA ZIGMOND: Jo, dovolte mi, abych otevřít, že až opravdu rychle. 980 00:52:11,620 --> 00:52:17,570 Takže říkáte, chcete-li mít spoustu různých něčeho, možná 981 00:52:17,570 --> 00:52:22,670 líbí a studenti, pro některé důvod, něco takového? 982 00:52:22,670 --> 00:52:26,870 Jo, tak si myslím, že stále, každý model 983 00:52:26,870 --> 00:52:30,652 by musel ještě jen jednu databázi přiřazeny k tomu, 984 00:52:30,652 --> 00:52:32,610 ale pokud byste chtěli mít různé modely, které 985 00:52:32,610 --> 00:52:35,818 mají různé databázové objekty přiřazeno na to, mohli byste určitě udělat. 986 00:52:35,818 --> 00:52:43,070 Takže, když jsem vytvořil nový, něco takového, 987 00:52:43,070 --> 00:52:47,000 a teď je to student, který vypadá podivně jako blogu, 988 00:52:47,000 --> 00:52:49,390 Mohl bych upřesnit, že Databáze je roven db_2 sem. 989 00:52:49,390 --> 00:52:51,390 Takže si myslím, že je to Hlavní způsob, jak můžete udělat. 990 00:52:51,390 --> 00:52:54,560 991 00:52:54,560 --> 00:52:56,200 >> Bezva. 992 00:52:56,200 --> 00:52:58,410 Nějaké další otázky? 993 00:52:58,410 --> 00:53:02,170 >> Takže jen dokončit trochu bit, zde jsou některé zdroje, 994 00:53:02,170 --> 00:53:06,030 a tyto snímky budou zveřejněny on-line takže se můžete skutečně dostat tyto odkazy. 995 00:53:06,030 --> 00:53:08,500 Nejlepší zdroje jsou opravdu dokumentace pro láhev 996 00:53:08,500 --> 00:53:09,930 a Peewee sami. 997 00:53:09,930 --> 00:53:12,940 Jsou napsal opravdu dobře, myslím. 998 00:53:12,940 --> 00:53:18,180 Tak, webové stránky Flask je tady, a mají tutoriál, který QuickStart 999 00:53:18,180 --> 00:53:20,710 Projdete se podobné věci, na to, co jsem prošel, 1000 00:53:20,710 --> 00:53:23,560 ale pokud chcete nějaký druh přezkumu z věcí, které jsem přešel, 1001 00:53:23,560 --> 00:53:26,200 nebo jste si myslel, že jsem vysvětlil něco v matoucím způsobem, 1002 00:53:26,200 --> 00:53:28,390 budou mít podobné příklady tam. 1003 00:53:28,390 --> 00:53:31,570 >> Peewee má dokumentace, a mají tutorial QuickStart 1004 00:53:31,570 --> 00:53:34,650 že jde přes hlavních parametrů že byste chtěli použít. 1005 00:53:34,650 --> 00:53:38,900 Takže, co jsem mluvil o s unikátní, a upřesňující výchozí, 1006 00:53:38,900 --> 00:53:42,710 různé druhy polí můžete použít, ti byli by všichni tam. 1007 00:53:42,710 --> 00:53:44,690 >> Také, pokud máte otázky o Peewee, 1008 00:53:44,690 --> 00:53:47,530 a vy po nich na StackOverflow, ten, kdo udělal Peewee vlastně 1009 00:53:47,530 --> 00:53:49,500 pokračuje a odpovídá na ty někdy. 1010 00:53:49,500 --> 00:53:53,200 Pokud máte otázku, doufejme, že že bude moci odpovědět, 1011 00:53:53,200 --> 00:53:54,867 protože on napsal celou tu věc. 1012 00:53:54,867 --> 00:53:56,700 Myslím si, že je to všechno Chtěl jsem na krytí. 1013 00:53:56,700 --> 00:53:58,930 Díky, coming out. 1014 00:53:58,930 --> 00:54:02,688