1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:03,227 [Zenelejátszási] 3 00:00:03,227 --> 00:00:04,705 4 00:00:04,705 --> 00:00:05,830 EZRA Zigmond: Üdv mindenkinek. 5 00:00:05,830 --> 00:00:08,020 Köszönöm, hogy jön ki ma. 6 00:00:08,020 --> 00:00:10,660 Ez a szeminárium "Python Web-es alkalmazások Lombik. " 7 00:00:10,660 --> 00:00:14,510 >> Szóval, fogok beszélni egy kicsit arról, hogy miért 8 00:00:14,510 --> 00:00:17,400 érdemes használni Lombik hogy Web-es alkalmazások Python, szemben 9 00:00:17,400 --> 00:00:21,556 hogy más keretek odakinn, mint a Django, ami a legtöbb jól ismert. 10 00:00:21,556 --> 00:00:24,330 Az alcím "és peewee, "ami valami 11 00:00:24,330 --> 00:00:27,250 fogunk beszélni, hogyan hogy befolyásolja a SQL adatbázisokat. 12 00:00:27,250 --> 00:00:29,610 Ez teszi igazán szép. 13 00:00:29,610 --> 00:00:32,390 >> Szóval, itt csak egy gyors lista Az, amit akarok, hogy menjen át. 14 00:00:32,390 --> 00:00:35,520 Tehát először is, csak egy slide hogy lesz bevezetés, 15 00:00:35,520 --> 00:00:38,530 ami így, hogy mindent állítsa fel a számítógépre. 16 00:00:38,530 --> 00:00:41,760 Megyek bemutatójával ezt én helyi Mac gépet, 17 00:00:41,760 --> 00:00:45,220 csak azért, mert ez az, ahol én csináltam ezt előtt, én vagyok a legtöbb kényelmes vele, 18 00:00:45,220 --> 00:00:48,510 de ez határozottan lehetséges a CD50 IDE. 19 00:00:48,510 --> 00:00:52,050 >> Szóval, azt követően, hogy azt akarom, hogy bemutatása, hogy mit lombik, 20 00:00:52,050 --> 00:00:55,089 és meggyőzni, hogy miért érdemes használja az első helyen. 21 00:00:55,089 --> 00:00:56,880 Aztán, adok egy gyors példa arra, mit 22 00:00:56,880 --> 00:01:00,550 tehet Lombik, egy gyors példa mit tehetünk peewee, 23 00:01:00,550 --> 00:01:05,010 majd én megmutatom neked egy teljes példa alkalmazás 24 00:01:05,010 --> 00:01:07,520 hogy én raktam össze, hogy mi A séta együtt. 25 00:01:07,520 --> 00:01:10,040 >> És végül, a Az utolsó kép, van 26 00:01:10,040 --> 00:01:12,730 Egyes források nézel az online talál. 27 00:01:12,730 --> 00:01:15,560 Ez nem egy teljes tutorial, hogyan kell használni lombikba. 28 00:01:15,560 --> 00:01:18,140 És én remélem, hogy elhagyja egy kis időt a kérdésekre. 29 00:01:18,140 --> 00:01:21,050 Bárki figyeli helyben, csak mint, kiáltani közepén 30 00:01:21,050 --> 00:01:22,340 ha bármilyen kérdése van. 31 00:01:22,340 --> 00:01:27,150 >> Tehát gyors telepítés cucc, Ha azt szeretnénk, hogy kövesse végig, 32 00:01:27,150 --> 00:01:29,240 vagy ha azt akarjuk, hogy ez a akár a saját gépünkön, 33 00:01:29,240 --> 00:01:32,440 Én leszek a Python 2.7.10. 34 00:01:32,440 --> 00:01:35,860 Lombik működik együtt Python 3, de szeretem 35 00:01:35,860 --> 00:01:38,660 Python 2, mert van Néhány Python csomagok 36 00:01:38,660 --> 00:01:40,910 nem működnek a 3 még. 37 00:01:40,910 --> 00:01:44,800 Ha még pip telepítette, amely egy Python csomagkezelő, 38 00:01:44,800 --> 00:01:48,190 Azt hiszem, ha a Python nagyobb vagy egyenlő, mint 2.7.9, 39 00:01:48,190 --> 00:01:52,220 Önnél is telepítve van már, ez szuper könnyű telepíteni ezeket a csomagokat. 40 00:01:52,220 --> 00:01:54,990 >> Meg tudod csinálni pip telepíteni Lombik, Pip telepíteni peewee, 41 00:01:54,990 --> 00:01:58,600 Általában meg kell futtatni sudo csak úgy, hogy az engedélyeket dolgozzanak ki. 42 00:01:58,600 --> 00:02:01,080 És, ha használ szuper régi verziót a Python, 43 00:02:01,080 --> 00:02:05,100 Azt javasoljuk, módosítsa a Python, vagy használ EasyInstall telepíteni pip. 44 00:02:05,100 --> 00:02:09,180 45 00:02:09,180 --> 00:02:11,120 Tehát, a következő kérdés az, hogy mi van Lombik? 46 00:02:11,120 --> 00:02:13,280 És azt hiszem, először egy ésszerű kérdés azon tűnődtem 47 00:02:13,280 --> 00:02:15,585 Hosszú idő, mi is az a webes alkalmazás? 48 00:02:15,585 --> 00:02:17,960 Mert ez a szó, hogy én szerintem dobott körül sok 49 00:02:17,960 --> 00:02:19,240 hogy én nem igazán tudom. 50 00:02:19,240 --> 00:02:22,340 És azt hiszem, hogy a legjobb Például az, amit egy web app, 51 00:02:22,340 --> 00:02:26,960 tényleg CS50 pénzügyminiszter, ahol ez nem igazán csak egy honlap, 52 00:02:26,960 --> 00:02:29,320 de van valami, amit lehetne valami kölcsönhatásba. 53 00:02:29,320 --> 00:02:31,736 Vannak a felhasználói fiókok és mindenféle más dolgokat. 54 00:02:31,736 --> 00:02:35,010 Szóval, hogy pontosan hol húzzuk meg a vonal között, amit egy weboldal, 55 00:02:35,010 --> 00:02:38,780 és mi egy webes alkalmazás, van egyfajta önkényes, de azt hiszem, az ötlet, 56 00:02:38,780 --> 00:02:42,110 ez valami több, mint egy weboldal és ez egy hasznos alkalmazás. 57 00:02:42,110 --> 00:02:46,081 >> Szóval, lombik egy keretrendszer így a webes alkalmazásokat használó Python. 58 00:02:46,081 --> 00:02:48,330 És remélhetőleg, a végére E fogom meggyőzni, 59 00:02:48,330 --> 00:02:52,210 hogy meg tudná valójában írni valamit mint CS50 Pénzügy Python, amit 60 00:02:52,210 --> 00:02:53,950 mint egy sokkal jobb, mint a PHP, személyesen. 61 00:02:53,950 --> 00:02:57,320 >> Szóval, lombik, hívják a microframework, amely által 62 00:02:57,320 --> 00:02:59,800 úgy értem, hogy nagyon Egyszerű, de bővíthető. 63 00:02:59,800 --> 00:03:02,980 Szóval, azt, amire szüksége van, de ha azt szeretnénk, több funkcióval, 64 00:03:02,980 --> 00:03:04,522 ez könnyű, hogy be őket. 65 00:03:04,522 --> 00:03:06,480 De csak azért, mert ez egy microframework, nem 66 00:03:06,480 --> 00:03:08,960 jelenti azt, hogy csak a kis projektek. 67 00:03:08,960 --> 00:03:12,590 Nekem van egy link itt, hogy azt mondja, hogy Obama használt Lombik 2012-ben 68 00:03:12,590 --> 00:03:14,410 az ő kampánya honlap, mely reményeink szerint, 69 00:03:14,410 --> 00:03:16,937 van valami jóváhagyását. 70 00:03:16,937 --> 00:03:18,770 De a lényeg, hogy én Nagyon szeretem Lombik 71 00:03:18,770 --> 00:03:22,401 az, hogy, hogy nem igazán teszik bármiféle döntést. 72 00:03:22,401 --> 00:03:24,150 Csak azért, mert mi vagyunk beszélünk webes alkalmazások, 73 00:03:24,150 --> 00:03:26,940 Meg kell összehasonlítani, hogy Ruby on Sínek és Django, mindkettő 74 00:03:26,940 --> 00:03:30,450 nagy kereteket, de mindketten, hogy feltételezések 75 00:03:30,450 --> 00:03:33,600 arról, hogyan kívánja kölcsönhatásba adatbázisok, 76 00:03:33,600 --> 00:03:36,900 hogyan szeretné bemutatni a nézetek, és ők határozottan 77 00:03:36,900 --> 00:03:38,850 Jó szempontok ezt. 78 00:03:38,850 --> 00:03:41,490 >> Például, a Ruby on Rails van ez az aktív nyilvántartási rendszer, 79 00:03:41,490 --> 00:03:43,100 ami egy igazán szép módja, hogy kölcsönhatásba lépnek az adatok, 80 00:03:43,100 --> 00:03:45,960 de ha akarod használni Ruby on Sínek, te egyfajta kötött bele. 81 00:03:45,960 --> 00:03:47,835 De Lombik, mint Megyek mutassa meg a peewee, 82 00:03:47,835 --> 00:03:49,830 Használhatja bármilyen sorrend kívánt adatbázis, 83 00:03:49,830 --> 00:03:53,980 és akkor csak húzza, hogy a kiterjesztéseként a lombikba. 84 00:03:53,980 --> 00:03:56,350 >> Tehát ezért én nagyon mint Lombik, ez hogy 85 00:03:56,350 --> 00:04:01,170 nem teszi feltételezéseket az Ön számára alapuló dolog, amit nem kell igazán. 86 00:04:01,170 --> 00:04:04,440 >> Szóval, miért érdemes használni Lombik? 87 00:04:04,440 --> 00:04:08,230 Az előnyök, ez csak valóban a legfontosabb jellemzői 88 00:04:08,230 --> 00:04:09,420 beleépítve, hogy amire szüksége van. 89 00:04:09,420 --> 00:04:11,980 Szóval, nem kell aggódni megérteni egy csomó dolog 90 00:04:11,980 --> 00:04:13,175 hogy nem igazán szükség. 91 00:04:13,175 --> 00:04:15,060 Nem kell, hogy nem kell aggódnia mintegy kikapcsolja jellemzői 92 00:04:15,060 --> 00:04:16,620 hogy nem igazán szükség. 93 00:04:16,620 --> 00:04:21,082 >> És, mint már említettem, ez szuper Könnyű felvenni a kiterjesztések dolgok 94 00:04:21,082 --> 00:04:21,790 hogy ha nem kell. 95 00:04:21,790 --> 00:04:24,700 Néhányan közülük, lombik saját támogatását is. 96 00:04:24,700 --> 00:04:28,230 Szóval van egy úgynevezett Lombik admin, amely tükrözi, hogy az admin 97 00:04:28,230 --> 00:04:32,060 panel Django rendelkezik, amely ad egy szép vizuális módon 98 00:04:32,060 --> 00:04:33,405 adminisztrálni a honlapon. 99 00:04:33,405 --> 00:04:35,280 De ismétlem, ha hogy valami egyszerű, 100 00:04:35,280 --> 00:04:39,550 akkor valószínűleg nem kell nagy admin panel, ezért úgy gondolom, hogy a szuper szép. 101 00:04:39,550 --> 00:04:45,940 És a hátrányok, amelyek Van kevesebb energiát ki a dobozból. 102 00:04:45,940 --> 00:04:49,660 Szóval, amikor először nyit Lombik, és a Python programot, 103 00:04:49,660 --> 00:04:53,150 csak típust Lombik import *, vagy bármi, 104 00:04:53,150 --> 00:04:55,957 nem pontosan kap minden A funkciók érdemes. 105 00:04:55,957 --> 00:04:58,540 És ezért van, hogy kifejezettebben sorolja fel a kívánt funkciókat. 106 00:04:58,540 --> 00:05:01,990 Szóval ez egy hátránya, de én úgy gondolja, hogy az épület kis web 107 00:05:01,990 --> 00:05:04,782 apps, mint én leszek bemutató te, ez nem igazán probléma. 108 00:05:04,782 --> 00:05:07,281 És mi az utolsó dolog, kéne mondani, ami egy elírás, 109 00:05:07,281 --> 00:05:10,240 az, hogy vannak kevésbé szabványosított egyezmények, hogyan kell használni Lombik, 110 00:05:10,240 --> 00:05:12,400 csak azért, mert nincs annyi ember használja, hogy szakmailag 111 00:05:12,400 --> 00:05:13,191 míg a Django. 112 00:05:13,191 --> 00:05:16,380 Tehát, ha valahogy így néz ki, "hogyan csináljam x" Django, 113 00:05:16,380 --> 00:05:18,190 akkor valószínűleg találja meg. 114 00:05:18,190 --> 00:05:20,260 >> Van jó design minták tudod használni, 115 00:05:20,260 --> 00:05:22,660 de Lombik, ez fajta megy a maga útján, 116 00:05:22,660 --> 00:05:24,850 csak azért, mert ez egy csinos kis könyvtár. 117 00:05:24,850 --> 00:05:27,100 Tehát ezek a hátrányai, de azt hiszem, 118 00:05:27,100 --> 00:05:29,370 hogy ez még mindig egy jó könyvtár használni. 119 00:05:29,370 --> 00:05:31,909 >> Úgyhogy csak ugrani lombikba. 120 00:05:31,909 --> 00:05:34,200 Ez biztosan nem fog hogy egy teljes bemutató, 121 00:05:34,200 --> 00:05:37,480 de hogy adjak egy ötlet hogyan kell felépíteni a dolgokat, 122 00:05:37,480 --> 00:05:40,790 és így jól érzik magukat megy off és nézi a dokumentációt 123 00:05:40,790 --> 00:05:42,570 és egyre többet. 124 00:05:42,570 --> 00:05:48,500 >> Szóval, hadd nyit egy igazán egyszerű példa az első, 125 00:05:48,500 --> 00:05:50,737 és megmutatom, mit, hogy külleme, és aztán 126 00:05:50,737 --> 00:05:52,070 lebontani egy kicsit. 127 00:05:52,070 --> 00:05:56,160 >> Szóval ez itt, hadd hogy működésre bírjuk. 128 00:05:56,160 --> 00:06:06,800 129 00:06:06,800 --> 00:06:09,750 Szóval, most már én alkalmazás futása. 130 00:06:09,750 --> 00:06:15,910 Megyek nyitni a Safari és ez fut-e a helyi gépen. 131 00:06:15,910 --> 00:06:19,360 Szóval én csak fog, hogy ez a nagyobb. 132 00:06:19,360 --> 00:06:23,960 De localhost: 5000 133 00:06:23,960 --> 00:06:27,650 >> És így, most, mindez nem van, amikor meglátogatja a weboldalt, 134 00:06:27,650 --> 00:06:31,490 nem írja ki "Hello Lombik," ami nem szuper hasznos, 135 00:06:31,490 --> 00:06:34,630 de azt hiszem, ez jó, hogy ebben a kis fájl van, 136 00:06:34,630 --> 00:06:37,390 van egy web szerveren fut hogy még nyomtat valamit. 137 00:06:37,390 --> 00:06:40,500 Nos, nézzük valóban meg A kód egy második, 138 00:06:40,500 --> 00:06:43,080 és lebontani egy kicsit. 139 00:06:43,080 --> 00:06:45,260 Ez a méret jó mindenkinek itt? 140 00:06:45,260 --> 00:06:51,560 >> Szóval, remélhetőleg, te valamelyest Kényelmes Python. 141 00:06:51,560 --> 00:06:55,820 Én feltételezve, hogy nézd meg A Python és olvassa el. 142 00:06:55,820 --> 00:06:59,290 Ha bármilyen kérdése van semmit, azt is megy fölé. 143 00:06:59,290 --> 00:07:03,974 >> Tehát az első sor, ettől Lombik, mi import, lombik nagy "F" 144 00:07:03,974 --> 00:07:06,140 ami egyfajta valamennyi legfontosabb jellemzőit, hogy amire szüksége van. 145 00:07:06,140 --> 00:07:08,890 Amikor írsz egy fájlt, és a lombik, 146 00:07:08,890 --> 00:07:12,120 fogsz importálni kívánt, hogy csak mert az olyan fő dolog. 147 00:07:12,120 --> 00:07:15,400 A következő dolog, amit csinálunk, az, hogy mi ezt a funkciót Lombik, csak 148 00:07:15,400 --> 00:07:19,270 hogy hozzon létre egy app objektumot, és te Mindig szeretne majd csinálni. 149 00:07:19,270 --> 00:07:25,960 >> És akkor, leugrott a alján gyorsan, ez a rész itt van, 150 00:07:25,960 --> 00:07:28,760 "if_name _ ==" _ main_ "", ami egyfajta Python egyezmény. 151 00:07:28,760 --> 00:07:32,750 Tehát ez csak végrehajtani, ha futtatni ezt a fájlt közvetlenül a Python. 152 00:07:32,750 --> 00:07:36,040 Ezután hívjuk app.run, amely valójában kezdeni az alkalmazást fog. 153 00:07:36,040 --> 00:07:39,570 >> Szóval, ez a fő szerkezet, akkor meg bármilyen Lombik alkalmazás, 154 00:07:39,570 --> 00:07:48,550 A akkor ezt app = lombikba (_NAME_), majd app.run. 155 00:07:48,550 --> 00:07:54,940 >> Szóval, az a két dolog, hogy én itt vannak, amit úgy hívunk útvonalak. 156 00:07:54,940 --> 00:07:57,150 Szóval, beszéljünk routing egy kicsit. 157 00:07:57,150 --> 00:07:58,430 Megyek vissza a fedelet. 158 00:07:58,430 --> 00:08:02,540 >> Tehát a legalapvetőbb fogalom Lombik az útválasztás. 159 00:08:02,540 --> 00:08:06,750 És ez az ötlet, hogy rendeljen funkciókat Python 160 00:08:06,750 --> 00:08:11,280 Az egyes címek a weboldal. 161 00:08:11,280 --> 00:08:13,930 Szóval, amikor csak akarja hogy hozzon létre egy új útvonalat, 162 00:08:13,930 --> 00:08:16,500 használja ezt @ app.route funkciót lakberendező. 163 00:08:16,500 --> 00:08:19,770 Tehát, ha nem ismeri funkciót lakberendezők Python, 164 00:08:19,770 --> 00:08:24,160 Ez az a koncepció, hogy Lehetővé teszi, hogy egy függvény 165 00:08:24,160 --> 00:08:26,800 és az őt körülvevő valami mást. 166 00:08:26,800 --> 00:08:30,140 >> Szóval tényleg, mi ez a dekoratőr csinál, hogy tart a funkciót alatta, 167 00:08:30,140 --> 00:08:33,409 és hozzáteszi, további információk hozzá, de mi Lombik ténylegesen 168 00:08:33,409 --> 00:08:37,480 nak, hogy ez megtörténjen nem szuper fontos, de mi a fontos, 169 00:08:37,480 --> 00:08:43,640 az, hogy mielőtt az útvonal, akkor hogy ezt @ app.route, majd 170 00:08:43,640 --> 00:08:46,480 Az címét az útvonal, így a perjel az, amit 171 00:08:46,480 --> 00:08:48,360 látta, amikor csak megnyitja a weboldalt. 172 00:08:48,360 --> 00:08:49,580 Szóval ez a honlap. 173 00:08:49,580 --> 00:08:51,037 Ez csak a perjel útvonalon. 174 00:08:51,037 --> 00:08:52,370 És akkor már ez a funkció. 175 00:08:52,370 --> 00:08:54,453 A függvény neve lehet, amit csak akarsz. 176 00:08:54,453 --> 00:08:56,930 Ez nem kell feltétlenül köze van az útvonal. 177 00:08:56,930 --> 00:08:59,440 És akkor, bármi A függvény visszatérési, 178 00:08:59,440 --> 00:09:01,730 A funkció vissza kell egy string. 179 00:09:01,730 --> 00:09:03,740 És, hogy string tartalmaz HTML, vagy bármi, 180 00:09:03,740 --> 00:09:06,920 és hogy valójában mit kap visszatért a böngésző HTML, 181 00:09:06,920 --> 00:09:08,200 és ez lehetővé teszi majd, hogy. 182 00:09:08,200 --> 00:09:12,030 >> Tehát ez ugyanaz a kódot ez volt a példa 183 00:09:12,030 --> 00:09:16,430 hogy én csak futott, így amikor meglátogatjuk perjel, arra kéri a Hello World funkció, amely 184 00:09:16,430 --> 00:09:20,470 Csak egy szöveggel tér vissza, Helló Lombik, és hogy lesz nyomtatva a képernyőn. 185 00:09:20,470 --> 00:09:27,290 >> Szóval van egy másik példa, amely, amikor meglátogatja / hello, 186 00:09:27,290 --> 00:09:30,370 kinyomtatott Szia Szó, ami ténylegesen mondani, Hello World, 187 00:09:30,370 --> 00:09:32,010 de Tegyük fel, hogy szándékos volt. 188 00:09:32,010 --> 00:09:35,140 Úgyhogy húzza, hogy tényleg gyorsan. 189 00:09:35,140 --> 00:09:41,290 >> Tehát, ha megy a localhost / hello, akkor most nyomtatni valami mást. 190 00:09:41,290 --> 00:09:45,680 Szóval ez csak egy gyors példa arra, hogy hozhat létre két útvonalon. 191 00:09:45,680 --> 00:09:50,630 >> Tehát, amennyiben ez nem szuper hasznos, nincs egy csomó, amit tehetünk, 192 00:09:50,630 --> 00:09:55,360 akkor csak mindent megtesz, hogy a amelyek különböző HTML oldalak, 193 00:09:55,360 --> 00:09:58,000 és ha meglátogat egy adott oldal csak betölti az oldalt. 194 00:09:58,000 --> 00:10:00,864 Tehát lássuk néhány hasznos dolog, amit tehetünk. 195 00:10:00,864 --> 00:10:03,780 Szóval, egy dolog, hogy lehet, észrevette a példa, hogy húztam 196 00:10:03,780 --> 00:10:07,160 fel, hogy én már app.run (debug = True). 197 00:10:07,160 --> 00:10:09,580 És igen, mi ennek a hibakeresés érv: ez olyan 198 00:10:09,580 --> 00:10:14,600 hogy ha fut a webszerver, ha te vagy az alkalmazás, 199 00:10:14,600 --> 00:10:18,100 ha módosítja a fájlt, akkor automatikusan visszaáll a szerver. 200 00:10:18,100 --> 00:10:21,160 >> És így nem kell ténylegesen újraindítás Python, ami szuper hasznos. 201 00:10:21,160 --> 00:10:24,020 Én is azt mutatják, hogy. 202 00:10:24,020 --> 00:10:26,960 Hadd húzza fel a kódomat A elírás benne, 203 00:10:26,960 --> 00:10:30,420 és úgy tenni, mintha elírás került oda szándékosan tanulságos célra. 204 00:10:30,420 --> 00:10:31,625 Tehát tegyük hozzá vissza. 205 00:10:31,625 --> 00:10:33,140 Szóval most azt mondja Hello World. 206 00:10:33,140 --> 00:10:34,410 Azt, megmenti azt. 207 00:10:34,410 --> 00:10:36,540 És ha mi húzzuk vissza A terminál, akkor 208 00:10:36,540 --> 00:10:39,520 azt mondanám, hogy az újraindítás mert észlelt változást, 209 00:10:39,520 --> 00:10:43,620 és így most, amikor újra az oldalt, kiírja a helyes dolog. 210 00:10:43,620 --> 00:10:45,630 >> Tehát a debug szuper jól használhatónak. 211 00:10:45,630 --> 00:10:48,740 Továbbá, ha bármilyen egyfajta lezuhan, így 212 00:10:48,740 --> 00:10:54,370 Hadd mondjam el, ez az alkalmazás összeomlik azzal, hogy nem tér vissza a húr. 213 00:10:54,370 --> 00:10:57,540 Nos, nézzük csak meg, hogy Nincs visszaút valamilyen okból. 214 00:10:57,540 --> 00:11:00,810 És akkor, ha megnézem ezt oldal, akkor csak összeomlik, 215 00:11:00,810 --> 00:11:04,465 de a szerver nem csak összeomlik, akkor valóban ad egy szuper hasznos vissza 216 00:11:04,465 --> 00:11:06,490 nyoma mindent, ami elromlott. 217 00:11:06,490 --> 00:11:10,050 És ami igazán szép, hogy minden lépés ebben vissza nyoma, 218 00:11:10,050 --> 00:11:14,260 Ön is nyit egy interaktív shell itt, és egyfajta nyomtassa ki, amit 219 00:11:14,260 --> 00:11:17,780 változók azt szeretné, hogy egy pillantást. 220 00:11:17,780 --> 00:11:21,054 >> És így hibakeresés valóban hasznos kitalálni 221 00:11:21,054 --> 00:11:23,470 mi történik a szerver, ahelyett, hogy csak látni 222 00:11:23,470 --> 00:11:28,201 valami PHP, mint egy 500 belső szerver hiba, ami szuper haszontalan. 223 00:11:28,201 --> 00:11:30,700 Egy dolog, hogy tisztában legyenek, a hogy ha tesz a app Online 224 00:11:30,700 --> 00:11:34,260 így mindenki számára látható, akkor soha nem akarja elhagyni debug módban a, 225 00:11:34,260 --> 00:11:37,320 mert az emberek valóban használni, hogy a konzol, hogy én 226 00:11:37,320 --> 00:11:39,150 megmutattuk, hogy tetszőleges kód futtatására. 227 00:11:39,150 --> 00:11:42,120 >> Így ki is nyomtathatja, mint bármely titkos kódokat van ott, 228 00:11:42,120 --> 00:11:44,755 akkor nézd meg pontosan, hogy a website dolgozik. 229 00:11:44,755 --> 00:11:46,630 Szóval ez tényleg hasznos, tesztelésre, de mindig 230 00:11:46,630 --> 00:11:50,090 győződjön meg arról, hogy ki, mielőtt tesz közzé valamit az interneten. 231 00:11:50,090 --> 00:11:56,640 >> Tehát, ha éppen valami mint a PHP, van ez a gondolat 232 00:11:56,640 --> 00:11:58,920 hogy akkor adja át információs weboldalak közötti 233 00:11:58,920 --> 00:12:03,620 azáltal, hogy az információ valóban az URL, ami egy GET kérés, 234 00:12:03,620 --> 00:12:07,490 de Lombik, akkor valójában tenni valamit a fajta, mint hogy, 235 00:12:07,490 --> 00:12:10,590 azáltal, hogy egy útvonalat, amely egy változó, mint része. 236 00:12:10,590 --> 00:12:14,090 >> Tehát, ha megnézi ezt Például a képernyőn van, 237 00:12:14,090 --> 00:12:19,930 van egy útvonalat, ami ('/ Hello / "), és így, ha ellátogatnak 238 00:12:19,930 --> 00:12:23,790 / Hello / valamit, hogy valami fog ténylegesen kap töltött 239 00:12:23,790 --> 00:12:25,490 a név változó. 240 00:12:25,490 --> 00:12:27,850 És észre, hogy a függvény hogy jön, hogy az útvonalat 241 00:12:27,850 --> 00:12:31,302 van, hogy a paraméter megnevezni, úgy is, hogy ténylegesen 242 00:12:31,302 --> 00:12:32,510 hogy telt a funkciót. 243 00:12:32,510 --> 00:12:34,190 >> És akkor, ha már belsejét, hogy a funkció, 244 00:12:34,190 --> 00:12:36,420 tudod kezelni, hogy mint egy normális Python változó, 245 00:12:36,420 --> 00:12:39,650 és így aztán ez lesz nyomtassa ki Helló, és ez 246 00:12:39,650 --> 00:12:42,000 majd töltse ki a név használata néhány szöveg formázását. 247 00:12:42,000 --> 00:12:48,060 >> Tehát adjuk változó részek egy útvonal, használja a sarokvasra jelölést. 248 00:12:48,060 --> 00:12:51,220 És adott esetben, használhatja egy úgynevezett átalakító. 249 00:12:51,220 --> 00:12:56,840 És így, ha tesz ez a feliratozást a vastagbél, 250 00:12:56,840 --> 00:13:00,015 megadhatja, hogy ez az int, vagy float, vagy ösvény 251 00:13:00,015 --> 00:13:01,640 és automatikusan átalakítani, hogy a. 252 00:13:01,640 --> 00:13:05,130 Akkor is ezt a konverzió a Python funkciót, 253 00:13:05,130 --> 00:13:09,710 csak használja a leadott, de néha, ha biztosítani szeretné, hogy ez az egy int, 254 00:13:09,710 --> 00:13:12,080 akkor tegye, hogy átváltási szabály van. 255 00:13:12,080 --> 00:13:15,930 >> Úgyhogy húzza fel egy példát Néhány változó szabályok. 256 00:13:15,930 --> 00:13:21,480 Tehát itt, ennek ugyanaz az alapvető szerkezete a származó Lombik behozatali 257 00:13:21,480 --> 00:13:25,030 Lombik, az alkalmazás = Lombik (_NAME_), és akkor fut végén. 258 00:13:25,030 --> 00:13:28,050 Van ez a két különböző változó útvonalak itt. 259 00:13:28,050 --> 00:13:29,900 És az első, a Az egyik, hogy megmutattam 260 00:13:29,900 --> 00:13:34,230 a csúszda, ami az volt, hogy ez csak úgy egy string name 261 00:13:34,230 --> 00:13:35,650 és kiírja Hello neve. 262 00:13:35,650 --> 00:13:41,410 >> És akkor, a második az egyik használja a konverzió. 263 00:13:41,410 --> 00:13:44,690 Szóval ez automatikusan átalakítani, egy int, majd dupla int, 264 00:13:44,690 --> 00:13:46,150 és nyomtassa, hogy ki. 265 00:13:46,150 --> 00:13:48,220 És nem teszünk semmiféle Az átalakítás belül 266 00:13:48,220 --> 00:13:49,594 mert Lombik gondoskodik erről. 267 00:13:49,594 --> 00:13:53,181 Szóval térjünk a futás. 268 00:13:53,181 --> 00:13:54,930 Ha van egy Lombik alkalmazás futása 269 00:13:54,930 --> 00:13:58,440 akkor az ellenőrzés-C belőle megállítani a szerveren fut. 270 00:13:58,440 --> 00:14:02,420 És akkor fog futni a változókat. 271 00:14:02,420 --> 00:14:11,740 >> Szóval menjünk localhost / Hello / Ezra és Remélhetőleg ez köszönjön nekem. 272 00:14:11,740 --> 00:14:14,530 273 00:14:14,530 --> 00:14:20,310 >> Tehát ez volt az én nevemben, a változó útvonalat, és betöltötte azt itt. 274 00:14:20,310 --> 00:14:23,950 Szóval én is azt mutatják, gyors Például a duplázó. 275 00:14:23,950 --> 00:14:28,600 Tehát, ha megy / dupla / 3, kiírja 6. 276 00:14:28,600 --> 00:14:31,440 Tehát ez vigyázott Az átalakítás számunkra. 277 00:14:31,440 --> 00:14:34,190 >> Tehát akkor is csinálni úszó, és valami különlegeset, 278 00:14:34,190 --> 00:14:37,530 ha kell határozni valami ilyesmi az utat, amely lehetővé teszi, hogy fogadja el osztásjeleket, 279 00:14:37,530 --> 00:14:39,155 de ez általában nem lehet probléma. 280 00:14:39,155 --> 00:14:41,480 281 00:14:41,480 --> 00:14:43,820 Eddig, mindig van most visszatér 282 00:14:43,820 --> 00:14:46,320 vonósok, ami nem túl érdekes. 283 00:14:46,320 --> 00:14:48,730 >> Mi már valóban visszatér szó HTML szöveg. 284 00:14:48,730 --> 00:14:54,322 Tehát a kódot írhatjuk be valamit mint a b-tag, hogy ez a merész, 285 00:14:54,322 --> 00:14:56,030 de a legtöbb alkalommal, amikor Nem tényleg akar 286 00:14:56,030 --> 00:14:58,420 hogy írásban HTML kód a Python kódot. 287 00:14:58,420 --> 00:15:01,940 Nem lesz igazán koszos, és ez nem egy jó ideje. 288 00:15:01,940 --> 00:15:06,430 >> Lombik lehetővé teszi számunkra, hogy külön ki a HTML abba, hogy mi a neve a sablon, 289 00:15:06,430 --> 00:15:09,467 és így ha gondolkodsz szempontjából az MVC modell 290 00:15:09,467 --> 00:15:11,550 hogy Ön ismeri, Remélhetőleg működését 291 00:15:11,550 --> 00:15:15,520 A CS50 pénzügyminiszter egy kicsit, akkor gondolom a Python fájlok 292 00:15:15,520 --> 00:15:19,430 mint inkább a vezérlő, ahol ezek kölcsönhatásban áll bármilyen 293 00:15:19,430 --> 00:15:20,970 adatmodell lehet, hogy. 294 00:15:20,970 --> 00:15:24,900 >> És akkor ezek a kiabálták, hogy nézete és a múló információt, hogy megtekintése 295 00:15:24,900 --> 00:15:28,120 hogy töltse ki az adatokat HTML hogy szüksége van. 296 00:15:28,120 --> 00:15:30,490 És mit nevezünk azokat a nézeteket sablonok osztályban. 297 00:15:30,490 --> 00:15:35,280 >> Tehát Lombik használ egy másik Python modul, akkor automatikusan 298 00:15:35,280 --> 00:15:38,620 telepíteni, ha pip telepíteni Lombik nevű Jinja, amely 299 00:15:38,620 --> 00:15:40,885 lehetővé teszi hozzá ezeket a kommentárokat a HTML 300 00:15:40,885 --> 00:15:45,140 hogy látod a képernyőn, amely lehetővé teszi, teszel dolgokat, mint a feltételes mód, 301 00:15:45,140 --> 00:15:47,230 és hurkok a HTML. 302 00:15:47,230 --> 00:15:51,140 >> Így néz ki egy kicsit, mint hogy hogyan Lehet használni a PHP belül egy HTML fájlt, 303 00:15:51,140 --> 00:15:57,380 de ez csak akkor, amikor a Lombik szerver szolgálja ki a HTML fájlt, 304 00:15:57,380 --> 00:16:01,610 akkor megy ez sablonrendszer és feldolgozni ezen keresztül, és töltse a dolgokat. 305 00:16:01,610 --> 00:16:06,650 Tehát Lombik egy render_template funkció hogy lássuk az alján van. 306 00:16:06,650 --> 00:16:14,300 És így amikor meglátogatja ezt az oldalt, akkor tenné ezt hello.html sablon, 307 00:16:14,300 --> 00:16:16,407 majd töltse ki ezt a HTML oldalon. 308 00:16:16,407 --> 00:16:18,990 Úgyhogy csak futtatni ezt a valós gyors, és látni, hogy néz ki, 309 00:16:18,990 --> 00:16:21,198 majd megyek keresztül kicsit részletesebben. 310 00:16:21,198 --> 00:16:25,380 311 00:16:25,380 --> 00:16:30,260 Szóval, a sablonok mennek menni egy Sablonok mappába. 312 00:16:30,260 --> 00:16:33,980 Ez automatikusan megkeresi az Sablonok mappába az adott sablon. 313 00:16:33,980 --> 00:16:35,615 Úgyhogy megnyitni ezt fel. 314 00:16:35,615 --> 00:16:47,350 315 00:16:47,350 --> 00:16:50,005 Szóval, én fuss a Sablonozás példa. 316 00:16:50,005 --> 00:16:52,820 317 00:16:52,820 --> 00:17:03,660 >> Tehát, ha elmegyek a / hello / Ezra, azt a szörnyű, 318 00:17:03,660 --> 00:17:05,930 ellenszenves sátor tag, hogy tettem. 319 00:17:05,930 --> 00:17:08,050 Nagyon szép, nagyon dinamikus. 320 00:17:08,050 --> 00:17:09,349 Én nagy rajongója vagyok. 321 00:17:09,349 --> 00:17:13,900 De mi történik, ha Én csak megy, / te az első? 322 00:17:13,900 --> 00:17:15,220 Tehát csak azt mondja Hello World. 323 00:17:15,220 --> 00:17:17,678 Én nem felelt meg a nevét, és betöltötte azt automatikusan. 324 00:17:17,678 --> 00:17:22,050 Nézzük, hogyan csinálta, és hogyan tudunk megszabadulni, hogy a sátorban talán. 325 00:17:22,050 --> 00:17:26,240 >> Tehát itt, ez a fajta egy érdekes példa, 326 00:17:26,240 --> 00:17:29,101 ha ismeri, hogyan kapcsoló nyilatkozatok dolgozni egy nyelvet. 327 00:17:29,101 --> 00:17:31,350 Mondjuk ez a fajta, mint, hogy egyfajta esik át, 328 00:17:31,350 --> 00:17:34,266 ahol ténylegesen mellékelt két különböző útvonalakon ugyanazt a funkciót. 329 00:17:34,266 --> 00:17:41,190 Szóval csatolja a / hello, útvonal és A / Hello / nevet útvonalat a Hello, 330 00:17:41,190 --> 00:17:45,130 és mi adja using-- Python segítségével Megadja az alapértelmezett funkció arguments-- 331 00:17:45,130 --> 00:17:48,300 így ha nincs neve, így ha megyünk, hogy csak / hello, 332 00:17:48,300 --> 00:17:50,680 akkor a rendszer automatikusan kiszűri a név megegyezik Nincs. 333 00:17:50,680 --> 00:17:55,010 >> Tehát, mi teszi a Sablon name = név, 334 00:17:55,010 --> 00:17:59,510 így el fog múlni a név paraméter egyenlő ezt a nevet függvény paraméter, 335 00:17:59,510 --> 00:18:00,730 a sablon. 336 00:18:00,730 --> 00:18:04,040 Ez még mindig nem magyarázza meg, hogyan is eldönti, hogy nyomtassa Helló, világ, 337 00:18:04,040 --> 00:18:05,100 vagy nyomtassa ki a nevem. 338 00:18:05,100 --> 00:18:08,050 Úgyhogy valóban meg a sablon magát, 339 00:18:08,050 --> 00:18:11,610 és hol, hogy honnan jön. 340 00:18:11,610 --> 00:18:18,680 >> Szóval, ezen belül sablon, mi valóban van néhány feltétele logika, 341 00:18:18,680 --> 00:18:20,580 amely egyesek azt azzal érvelnek, hogy tényleg 342 00:18:20,580 --> 00:18:23,730 nem kellett volna sok a feltételes logikáját a sablon magát. 343 00:18:23,730 --> 00:18:26,310 Meg kell több belül a Controller, de ehhez a példához 344 00:18:26,310 --> 00:18:27,476 ez valami elég kicsi. 345 00:18:27,476 --> 00:18:31,060 Tehát itt, akkor ellenőrizze, ha nevet, így ha név nem egyenlő Nincs, 346 00:18:31,060 --> 00:18:33,130 ha a neve valójában telt, aztán majd 347 00:18:33,130 --> 00:18:36,210 köszönni, nevét a fejléc és a sátor, 348 00:18:36,210 --> 00:18:41,490 Mindezek szokásos HTML, Máskülönben nyomtassa ki Helló, világ, csak normálisan. 349 00:18:41,490 --> 00:18:45,820 Tehát egy pár dolgot itt megjegyezni arról, hogyan formázza a sablonrendszer, 350 00:18:45,820 --> 00:18:49,110 az, hogy az összes ilyen feltételes állítások, 351 00:18:49,110 --> 00:18:54,475 Valahogy úgy, mint hogyan PHP, amikor szeretnénk beszúrni egy PHP, 352 00:18:54,475 --> 00:18:58,380 használja kevésbé, mint a szóban forgó jelet, ez a fajta analóg ide 353 00:18:58,380 --> 00:19:00,140 a ... val {%. 354 00:19:00,140 --> 00:19:02,130 >> Tehát itt, van feltételes kódot. 355 00:19:02,130 --> 00:19:05,920 És akkor, ha valóban akar Szó szerint értékelni valamit, és a nyomtatási 356 00:19:05,920 --> 00:19:08,710 ki a képernyőn, akkor használja a kettős fogszabályozó. 357 00:19:08,710 --> 00:19:12,310 Tehát itt van a kettős nadrágtartó, és akkor adja meg nevét, 358 00:19:12,310 --> 00:19:15,500 így ezen belül pedig értékelni fogja A változó neve, amely 359 00:19:15,500 --> 00:19:18,860 fogadtak el a render sablon funkció, 360 00:19:18,860 --> 00:19:21,484 ahelyett, hogy csak a nyomtatás ki, ha megszabadultak ezeket, 361 00:19:21,484 --> 00:19:23,150 akkor csak nyomtassa ki a "név". 362 00:19:23,150 --> 00:19:26,340 Szóval, ez is valami, hogy néz ki. 363 00:19:26,340 --> 00:19:29,792 >> Tehát egy másik dolog, hogy értesítés, hogy amikor 364 00:19:29,792 --> 00:19:31,500 szeretné használni a render_template funkciót, 365 00:19:31,500 --> 00:19:34,490 mi valójában kell importálni kifejezetten re lombikba. 366 00:19:34,490 --> 00:19:36,915 És ez egy példa A modularitás lombik, 367 00:19:36,915 --> 00:19:39,290 hogy nem kell importálni dolog, amit nem kell. 368 00:19:39,290 --> 00:19:41,290 Akkor csak hogy a funkciók ténylegesen 369 00:19:41,290 --> 00:19:43,450 nem kell, ami néha Jó, így nem 370 00:19:43,450 --> 00:19:46,560 Van, hogy mindezeket a funkciókat üldögél, hogy ha éppen nem használja, 371 00:19:46,560 --> 00:19:49,730 hanem, ha elfelejti, hogy kell importálni render_template, 372 00:19:49,730 --> 00:19:52,660 akkor talán kap egy figyelmeztetést amely segítségével tudom. 373 00:19:52,660 --> 00:19:56,700 Szóval, ez sablonozó. 374 00:19:56,700 --> 00:20:01,680 >> Szóval, most már megmutatták, hogyan kell hogy egyszerű weboldalak, 375 00:20:01,680 --> 00:20:04,947 és adjunk hozzá egy kicsit logika ez, tekintve a változó útvonal. 376 00:20:04,947 --> 00:20:08,280 Ez lehetővé teszi, hogy különböző dolgokat alapján mit URL megy, és azt is majd, hogy 377 00:20:08,280 --> 00:20:11,950 A HTML egy kicsit több értelme van tekintve, hogy azt szeretnénk, hogy tegye a dolgokat. 378 00:20:11,950 --> 00:20:14,210 Nem kell, hogy az összes HTML-t a Python, 379 00:20:14,210 --> 00:20:16,640 de elég sok minden webes alkalmazás, 380 00:20:16,640 --> 00:20:21,480 fogsz szeretnénk valamiféle Az adatok modell társul hozzá. 381 00:20:21,480 --> 00:20:25,560 >> És így hagyományosan, ez valami ilyesmi SQL adatbázisba. 382 00:20:25,560 --> 00:20:30,280 És ha csak kölcsönhatásba közvetlenül az SQL. 383 00:20:30,280 --> 00:20:32,190 Python, azt hiszem, ezt hívják. 384 00:20:32,190 --> 00:20:33,040 SQLite 3. 385 00:20:33,040 --> 00:20:38,454 Tudod csak importálni SQLite 3 és végrehajthat SQL lekérdezések közvetlenül, 386 00:20:38,454 --> 00:20:40,870 de én nem tudom, mi van, de én nagyon nem szeretem, csak, 387 00:20:40,870 --> 00:20:42,750 kiírása SQL lekérdezések. 388 00:20:42,750 --> 00:20:45,350 Úgy látszik, hogy nagyon hosszú és bonyolult. 389 00:20:45,350 --> 00:20:49,180 >> És igen, valami, Szeretem használni a mi 390 00:20:49,180 --> 00:20:53,610 ismert, mint egy ORM, amely egy objektum-relációs leképezés. 391 00:20:53,610 --> 00:20:56,890 És az a pont egy objektum-relációs leképezés, 392 00:20:56,890 --> 00:21:00,100 az, hogy van két különböző módon lehet gondolni adatbázisok. 393 00:21:00,100 --> 00:21:03,240 >> Tehát a példa arra, hogy Professzor Malan általában 394 00:21:03,240 --> 00:21:07,660 használja az osztályban, az Excel táblázatot, ahol akkor ezek a sorok, és ezek az oszlopok, 395 00:21:07,660 --> 00:21:10,210 és ez igazán hasznos hogyan képviseli az SQL 396 00:21:10,210 --> 00:21:13,170 és hogyan lép kölcsönhatásba, de Egy másik módja, hogy ez valóban 397 00:21:13,170 --> 00:21:16,390 Hasznos gondolni rá néha, hogy tekintve az osztályok és objektumok. 398 00:21:16,390 --> 00:21:20,420 >> Tehát ahelyett, hogy gondolkodás Az egyes táblázatok, mint amelyek 399 00:21:20,420 --> 00:21:23,040 Ebben a sorban, amely rendelkezik bizonyos információt, akkor valójában 400 00:21:23,040 --> 00:21:26,100 belegondolok, hogy Minden táblázat egy osztály, 401 00:21:26,100 --> 00:21:29,810 majd minden esetben a osztály bizonyos tulajdonságai. 402 00:21:29,810 --> 00:21:35,110 Tehát, ebben a példában, a példányainak az osztály a sorok a táblázatban, 403 00:21:35,110 --> 00:21:37,490 majd minden ingatlant egy oszlop a táblázatban. 404 00:21:37,490 --> 00:21:40,840 >> Szóval, az ORM, hogy szeretem használni az úgynevezett peewee. 405 00:21:40,840 --> 00:21:43,520 Ez tényleg kicsi, a fajta, mint lombikba. 406 00:21:43,520 --> 00:21:46,760 Azt gondolom, hogy jól mennek együtt, de van egy csomó más ORMS 407 00:21:46,760 --> 00:21:47,730 hogy tudod használni. 408 00:21:47,730 --> 00:21:52,180 A népszerűbb az egyik néven sqlalchemy, 409 00:21:52,180 --> 00:21:56,050 és én nem emlékszem, miért eredetileg válassz peewee több mint sqlalchemy, 410 00:21:56,050 --> 00:21:58,311 vagy azt mondani, hogy miért Szerintem ez a legjobb, 411 00:21:58,311 --> 00:22:01,060 de mi csak fogja használni ezt egy, mert tudom, hogyan kell használni. 412 00:22:01,060 --> 00:22:04,760 >> Szóval, az egyik kérdés az, hogy miért érdemes bajlódni használ ORM, 413 00:22:04,760 --> 00:22:07,552 ahelyett, hogy csak közvetlenül írásban SQL lekérdezések? 414 00:22:07,552 --> 00:22:09,760 És azt hiszem, a legjobb esetben, az, hogy valójában nem 415 00:22:09,760 --> 00:22:11,356 Meg kell írni SQL lekérdezések. 416 00:22:11,356 --> 00:22:14,480 Sokkal egyszerűbb, mint én megmutatom, hogy dolgokat, mint kiválasztás, beillesztés, 417 00:22:14,480 --> 00:22:16,157 törlés, különösen tábla létrehozása. 418 00:22:16,157 --> 00:22:17,990 Sokkal könnyebb levelet egy osztály- 419 00:22:17,990 --> 00:22:22,250 mint az, hogy felépíteni a Create Táblázat nyilatkozatot, de egy dolog 420 00:22:22,250 --> 00:22:25,710 tisztában lenni, hogy Az ORM mindent megtesz 421 00:22:25,710 --> 00:22:28,640 hogy kitaláljuk, mi a leginkább hatékony SQL lekérdezés lenne, 422 00:22:28,640 --> 00:22:30,110 de néha ez nem sikerül. 423 00:22:30,110 --> 00:22:32,660 >> És különösen, ha dolgozik egy nagy adatbázis, 424 00:22:32,660 --> 00:22:35,557 láthatjuk, hogy egy lekérdezés hogy kell gyorsan futni, 425 00:22:35,557 --> 00:22:36,640 valójában, hosszabb. 426 00:22:36,640 --> 00:22:40,164 És ha megnézzük a motorháztető alatt, hogy milyen Az ORM értelmezi, hogy az SQL, 427 00:22:40,164 --> 00:22:42,080 talán csinál valamit Tényleg nevetséges, 428 00:22:42,080 --> 00:22:44,371 csak azért, mert ez a fajta intett a szándékai rossz. 429 00:22:44,371 --> 00:22:48,080 És, voltak idők, amikor Elegem van, hogy felülbírálja azt, és csak 430 00:22:48,080 --> 00:22:52,429 végre a saját SQL lekérdezések, csak mert elemzésekor furcsa módon. 431 00:22:52,429 --> 00:22:54,220 Szóval, van némi rezsi, csak útban 432 00:22:54,220 --> 00:22:58,680 hogy lefordítja a kimutatások le SQL. 433 00:22:58,680 --> 00:23:06,200 >> Nos, nézzük meg szuper gyorsan Egy egyszerű példa egy adat modell 434 00:23:06,200 --> 00:23:07,350 hogy lehet használni. 435 00:23:07,350 --> 00:23:11,880 Szóval, ez Python kódot, és így a első dolog, amit akarok re 436 00:23:11,880 --> 00:23:12,950 peewee import *. 437 00:23:12,950 --> 00:23:15,850 Tehát, ellentétben Lombik, ahol van, Mindezen egyes modulok 438 00:23:15,850 --> 00:23:18,125 és importálni kívánt Lombik és levelet Sablon, és mások 439 00:23:18,125 --> 00:23:20,690 hogy később látni fogjuk, ettől peewee, ha csak importálni mindent, 440 00:23:20,690 --> 00:23:22,290 mert ez egy elég kis könyvtár. 441 00:23:22,290 --> 00:23:26,490 >> Tehát az első dolog, amit akarok csinálni, valóban létre az adatbázisban objektumot. 442 00:23:26,490 --> 00:23:31,212 Szóval, van db = SqliteDatabase, majd a nevét az adatbázis. 443 00:23:31,212 --> 00:23:33,170 És ez ténylegesen hozzon létre egy adatbázis-objektum 444 00:23:33,170 --> 00:23:36,230 hogy kölcsönhatásba léphet, és peewee. 445 00:23:36,230 --> 00:23:40,570 >> És akkor, mi van a tényleges modell, amit szeretnénk létrehozni. 446 00:23:40,570 --> 00:23:42,470 Így az asztal akarunk létrehozni. 447 00:23:42,470 --> 00:23:47,270 Szóval, belül peewee, minden osztály saját táblájának az adatbázis. 448 00:23:47,270 --> 00:23:52,800 Szóval, minden osztályban örökölni az alapmodell, 449 00:23:52,800 --> 00:23:55,960 és a főváros M modell valami, ami meghatározott peewee. 450 00:23:55,960 --> 00:24:02,162 >> Szóval, az összes modelleket kell öröklik, mint a legmagasabb szuperosztályban 451 00:24:02,162 --> 00:24:04,620 meg kell örökölni a modell, de ami igazán klassz, 452 00:24:04,620 --> 00:24:07,610 az, hogy akkor valójában a modellek öröklik egymástól. 453 00:24:07,610 --> 00:24:10,530 És egy csomó időt, a adatmodellek nem feltétlenül 454 00:24:10,530 --> 00:24:13,754 hogy egy szép öröklődési hierarchia, de szor ahol igen, ez nagyon szép, 455 00:24:13,754 --> 00:24:15,920 mert van a modell inherens egymástól. 456 00:24:15,920 --> 00:24:19,710 >> Szóval, mi határozza meg ezt az osztályt "diák," amely örökli a modell, 457 00:24:19,710 --> 00:24:21,170 és van három tulajdonság. 458 00:24:21,170 --> 00:24:24,080 Meg van egy azonosító, amely Egy PrimaryKeyField, amely 459 00:24:24,080 --> 00:24:26,920 van valami, ami biztosított a peewee, név egy CharField, 460 00:24:26,920 --> 00:24:28,490 és a fokozat egy IntegerField. 461 00:24:28,490 --> 00:24:32,260 Tehát ez lehet vagy nem lehet hogyan CS50 valóban tárolja az összes 462 00:24:32,260 --> 00:24:33,650 A diákok évfolyamon. 463 00:24:33,650 --> 00:24:36,060 Nem, de ez hogyan kellene csinálni. 464 00:24:36,060 --> 00:24:37,920 >> És akkor van, belül Ebben az osztályban, és ez a 465 00:24:37,920 --> 00:24:41,620 van valami, amit tehetünk Python, akkor már beágyazott osztályok. 466 00:24:41,620 --> 00:24:43,920 És ez az, amit ami szükséges a peewee. 467 00:24:43,920 --> 00:24:47,250 Szóval, ez az osztály Meta, akkor meghatározni, hogy az adatbázis 468 00:24:47,250 --> 00:24:49,830 egyenlő az objektum hogy a fent létrehozott. 469 00:24:49,830 --> 00:24:54,339 És ez azt mondja, hogy mi a fájl ebben a táblázatban ténylegesen fog tartalmazni. 470 00:24:54,339 --> 00:24:57,130 Tehát ez olyan dolog, hogy van tennie belül az összes modell. 471 00:24:57,130 --> 00:24:59,380 Csak meg kell határozni ezen belül a Meta osztály 472 00:24:59,380 --> 00:25:01,400 az adatbázis egyenlő db. 473 00:25:01,400 --> 00:25:03,940 Szóval mit szoktam csinálni, ha van egy csomó különböző modellek, 474 00:25:03,940 --> 00:25:05,910 az, hogy én egy bázist modellt, hogy én általában 475 00:25:05,910 --> 00:25:08,839 csak hívja "alapmodell" amely a Meta osztály, 476 00:25:08,839 --> 00:25:10,380 és ez határozza meg az adatbázis egyenlő db. 477 00:25:10,380 --> 00:25:13,710 És akkor minden az én későbbi modellek örökli attól a kiindulási osztályban. 478 00:25:13,710 --> 00:25:16,760 És akkor nem kell aggódnia beállításával a Meta osztály. 479 00:25:16,760 --> 00:25:21,490 >> Tehát, ha ez valójában kap összeállított le egy SQL utasítást, 480 00:25:21,490 --> 00:25:24,875 úgy néz ki, mint ez szép dolog le Itt, "Tábla létrehozása diákigazolvány egész, 481 00:25:24,875 --> 00:25:26,020 " bármi. 482 00:25:26,020 --> 00:25:30,002 >> És azt gondolom, hogy ez rövidebb, ez SQL lekérdezés itt, 483 00:25:30,002 --> 00:25:32,960 de ha megnézi ezt az osztályt itt láthatja, hogy pontosan mi folyik itt. 484 00:25:32,960 --> 00:25:36,116 Láthatjuk milyen típusú mezők vannak, amit ők nevezik, 485 00:25:36,116 --> 00:25:38,115 és igen, úgy gondolom, hogy néztem ezt a Python kódot 486 00:25:38,115 --> 00:25:43,340 sokkal több olvasható, mint próbál írni ezt a SQL lekérdezés. 487 00:25:43,340 --> 00:25:45,990 >> Tehát annak érdekében, hogy a ténylegesen használni az adatbázist, 488 00:25:45,990 --> 00:25:48,470 van csatlakozni hozzá tartozó Python. 489 00:25:48,470 --> 00:25:52,770 Szóval, én általában levelet nevezett funkció initialize_db, hogy két dolgot. 490 00:25:52,770 --> 00:25:54,880 Tart az adatbázisban objektum db és 491 00:25:54,880 --> 00:25:58,360 kapcsolódik hozzá, amely csak megnyitja up szakaszban az adatbázishoz. 492 00:25:58,360 --> 00:26:00,860 Ha most fut bár honlapján a helyi gépen, 493 00:26:00,860 --> 00:26:04,320 ez nem egy szuper nagy dolog aggódni mintegy csatlakoztatása és bontása, 494 00:26:04,320 --> 00:26:06,885 de ha fut ez egy honlapon, akkor 495 00:26:06,885 --> 00:26:10,010 szeretnénk, hogy győződjön meg arról, hogy, ha egy felhasználó kapcsolódik hozzá, amikor zárni 496 00:26:10,010 --> 00:26:12,270 A honlap, akkor húzza ki úgy, hogy Nem kell egy csomó ember csatlakozik 497 00:26:12,270 --> 00:26:14,480 hogy az adatbázis egyszerre. 498 00:26:14,480 --> 00:26:16,370 >> És akkor, amikor kapcsolódni az adatbázishoz, 499 00:26:16,370 --> 00:26:20,832 hívni kívánt db.create_tables, és sorolja fel a modell, amit akar 500 00:26:20,832 --> 00:26:21,540 táblázatot készíteni. 501 00:26:21,540 --> 00:26:23,950 Tehát itt, én csak azt szeretném, hogy hozza létre ez a diák. 502 00:26:23,950 --> 00:26:28,070 És akkor, mi a fontos az, hogy adja biztonságos = True legtöbb időt. 503 00:26:28,070 --> 00:26:30,380 Szóval mi ez a kijelentés fog tenni, hogy ez 504 00:26:30,380 --> 00:26:33,580 teremt táblák az hallgató modellt, de csak 505 00:26:33,580 --> 00:26:36,109 ha ez a tábla két hozták létre a már. 506 00:26:36,109 --> 00:26:37,400 Ez az, amit a biztonságos pontosítja,. 507 00:26:37,400 --> 00:26:39,150 Tehát ez nem írja felül a meglévő asztal, 508 00:26:39,150 --> 00:26:41,525 ez csak hozzon létre egy új táblát, ha nincs is ott. 509 00:26:41,525 --> 00:26:45,090 Szóval, akkor is csak létre A táblázatok segítségével egyszerre SQL. 510 00:26:45,090 --> 00:26:49,410 És akkor is, hogy az adatbázisban ülés ott, majd kapcsolódni minden alkalommal, 511 00:26:49,410 --> 00:26:52,450 de általában szép, csak a ebbe a create_tables hívást, 512 00:26:52,450 --> 00:26:55,550 így, ha valaha is törli a adatbázis futtatásakor a web 513 00:26:55,550 --> 00:26:57,960 alkalmazást újra, akkor újra létrehozható. 514 00:26:57,960 --> 00:27:00,730 >> Szóval, csak arról, hogy biztonságban meg van adva, hogy igaz, 515 00:27:00,730 --> 00:27:03,580 vagy meg fogja találni az adatok csak egyre szennyezi minden alkalommal. 516 00:27:03,580 --> 00:27:06,380 És akkor, ha csak hívni initialize_db létrehozása 517 00:27:06,380 --> 00:27:09,820 kapcsolatot, és hozzon létre táblázatokat, ha szükséges. 518 00:27:09,820 --> 00:27:13,150 >> Szóval, a leggyakoribb dolog, amit meg akarnak tenni, 519 00:27:13,150 --> 00:27:15,920 vagy az egyik leggyakoribb dolgokat, az, hogy ténylegesen beszúrni dolgokat 520 00:27:15,920 --> 00:27:17,170 be az adatbázisba. 521 00:27:17,170 --> 00:27:19,430 És így, ahelyett, hogy írjon egy INSERT INTO 522 00:27:19,430 --> 00:27:21,990 nyilatkozatot az összes A megadott értékek, 523 00:27:21,990 --> 00:27:24,650 akkor valóban hívja funkciót a diák osztály. 524 00:27:24,650 --> 00:27:28,200 Tehát, ha létrehoz egy osztály amely örökli a modellt, 525 00:27:28,200 --> 00:27:30,200 van ez létre módszert. 526 00:27:30,200 --> 00:27:33,870 >> Szóval, te osztály name.create, és adja meg a paramétereket 527 00:27:33,870 --> 00:27:35,260 kívánt átadni. 528 00:27:35,260 --> 00:27:39,200 Tehát, ha azt akarom, hogy adjunk néhány diák hogy mi CS50 minőségű könyvet például 529 00:27:39,200 --> 00:27:41,820 Beteszem a Dávid, aki egy nagyon jó minőségű, van egy 95. 530 00:27:41,820 --> 00:27:45,100 És én, aki nem csinál olyan jól CS50, van egy 50. 531 00:27:45,100 --> 00:27:47,600 És igen, az szép dolog mi ez a létrehozni függvény, 532 00:27:47,600 --> 00:27:53,040 az, hogy visszaadja a példány, illetve a sorban, hogy létrehozta az asztalra, 533 00:27:53,040 --> 00:27:55,750 és így akkor tárolja, hogy egy változó, és a munka vele később. 534 00:27:55,750 --> 00:27:58,830 Meg lehet változtatni körül, amely Megmutatom egy példát. 535 00:27:58,830 --> 00:28:03,050 >> Figyeljük meg, hogy én nem meg kell határozni az azonosító 536 00:28:03,050 --> 00:28:09,340 mert hiszen ez az PrimaryKeyField, akkor automatikusan 537 00:28:09,340 --> 00:28:10,930 megnöveli eggyel, ha nem adja meg. 538 00:28:10,930 --> 00:28:12,250 És valóban, akkor valószínűleg ne adjon meg, 539 00:28:12,250 --> 00:28:14,810 mert lehet, hogy véletlenül clobber valaki más azonosító. 540 00:28:14,810 --> 00:28:16,830 És azt szeretnénk, hogy győződjön arról, hogy ez az egyedülálló. 541 00:28:16,830 --> 00:28:20,662 >> Szóval, valóban, a legtöbb Megszokott dolog, amit akarok, 542 00:28:20,662 --> 00:28:22,620 Valószínűleg válassza ki Az adatbázis egyszer 543 00:28:22,620 --> 00:28:24,078 Van egy csomó információt ott. 544 00:28:24,078 --> 00:28:27,360 És igen, ha azt akarjuk, hogy mindent, így a megfelelője a válassza csillagos 545 00:28:27,360 --> 00:28:30,940 diákoktól nyilatkozatot, hogy ez csak student.select. 546 00:28:30,940 --> 00:28:34,380 És hogy kapsz vissza egy tömbben minden a hallgatói tárgyak benne 547 00:28:34,380 --> 00:28:35,770 hogy végighaladni, amit akar. 548 00:28:35,770 --> 00:28:37,019 Tudod, hogy a dolgok belőle. 549 00:28:37,019 --> 00:28:39,310 És a legtöbb időt, akkor Nem csak azt, hogy nem válasszuk, 550 00:28:39,310 --> 00:28:40,935 valóban szeretne megadni valamit. 551 00:28:40,935 --> 00:28:44,580 És igen, akkor lánc együtt ezek a funkciót hívások, 552 00:28:44,580 --> 00:28:48,830 mint azt, hogyan lánc valamint a nyilatkozatok SQL-ben. 553 00:28:48,830 --> 00:28:53,002 Szóval lehet csinálni student.select (). Ahol ebben a példában. 554 00:28:53,002 --> 00:28:54,710 És akkor, akkor meghatározhatja azokat a feltételeket, 555 00:28:54,710 --> 00:28:57,880 Csak a szokásos Python Logikai hogy ellenőrizze a dolgokat. 556 00:28:57,880 --> 00:29:02,110 >> Szóval, ebben az esetben azt szeretnénk, hogy korlátozza amit kiválasztja a, 557 00:29:02,110 --> 00:29:06,790 ahol student.grade egyenlő 50, és student.name egyenlő Ezra, 558 00:29:06,790 --> 00:29:09,130 így majd csak érts belőle. 559 00:29:09,130 --> 00:29:11,340 És észre, egy igazán finom dolog itt 560 00:29:11,340 --> 00:29:15,570 hogy ha meg akarja határozni Egy és / és vagy vagy / vagy, 561 00:29:15,570 --> 00:29:19,840 Python, amit általában, Azt hiszem, az "és" ténylegesen, 562 00:29:19,840 --> 00:29:23,351 de itt használhatja az egyetlen jelet, amely általában egy bitenkénti üzemben, 563 00:29:23,351 --> 00:29:25,600 de ebben a speciális esetben, ahogy peewee csinálja, 564 00:29:25,600 --> 00:29:27,660 használja az egységes jelet megadni "és". 565 00:29:27,660 --> 00:29:29,451 Ez olyasmi, Én keverednek össze egy csomó, 566 00:29:29,451 --> 00:29:32,530 de ez nem jön létre hogy sok a gyakorlatban. 567 00:29:32,530 --> 00:29:36,350 >> És akkor, ha már az összes A diákok az adatbázisban, 568 00:29:36,350 --> 00:29:39,420 amikor vége te válasszuk és a kopás, vagy bármi, 569 00:29:39,420 --> 00:29:42,334 akkor egy foreach ciklus, mint a rendes Python, 570 00:29:42,334 --> 00:29:44,500 minden fajta bejáró vagy bármilyen tömb. 571 00:29:44,500 --> 00:29:46,333 Szóval lehet csinálni, az ok A student.select (). whe 572 00:29:46,333 --> 00:29:52,930 re (Student.grade <75), és így ez az akarat végighaladni minden diák a táblázatban 573 00:29:52,930 --> 00:29:56,260 amelynek fokozatú kevesebb, mint 75, ami Ebben az esetben, még mindig csak nekem. 574 00:29:56,260 --> 00:29:59,218 És akkor tehetne valamit belül A hurkot, mint küldjön nekem egy e 575 00:29:59,218 --> 00:30:01,680 és mondd meg, hogy ténylegesen kapcsolja az én probléma határozza. 576 00:30:01,680 --> 00:30:04,550 >> Szóval, egy másik dolog, akkor igen, ez tényleg egyszerű 577 00:30:04,550 --> 00:30:06,460 frissíteni sorok a táblázatban. 578 00:30:06,460 --> 00:30:08,720 Szóval, emlékszem vissza, Ön mikor beilleszteni, 579 00:30:08,720 --> 00:30:11,440 Vettem az értéket, amelyet által visszaadott student.create, 580 00:30:11,440 --> 00:30:14,920 és én rendelt el neve, amit Ezra. 581 00:30:14,920 --> 00:30:18,995 És így most, meg lehet változtatni a értékeket ezen belül például 582 00:30:18,995 --> 00:30:20,870 ahogy te is egy normál osztályban Pythonban. 583 00:30:20,870 --> 00:30:25,060 >> Szóval lehet beállítani ezra.grade = 95 és hogy frissíti a helyi másolat, 584 00:30:25,060 --> 00:30:28,380 de ha tényleg akar elkövetni, hogy a változás az adatbázishoz, 585 00:30:28,380 --> 00:30:31,410 hívnod ezra.save, így hívják a .save módszer 586 00:30:31,410 --> 00:30:32,650 a példányon. 587 00:30:32,650 --> 00:30:38,085 >> És így most, már sikeresen megváltozott Saját minőségű az adatbázisban. 588 00:30:38,085 --> 00:30:41,210 Szóval, akkor mondjuk, hogy elkapnak változó én osztály az adatbázisban. 589 00:30:41,210 --> 00:30:44,126 Professzor Malan valószínűleg lesz hogy törölni akarja nekem az osztályból, 590 00:30:44,126 --> 00:30:48,630 és így hívja a .delete Például a módszer csak azon a dolog. 591 00:30:48,630 --> 00:30:51,674 >> Tehát, ha akart menni vissza ebbe a hurok van, 592 00:30:51,674 --> 00:30:53,465 és valóban, ehelyett Az e-mail küldése az összes 593 00:30:53,465 --> 00:30:56,577 A diákok, akiknek fokozatú kevesebb mint 75, azt akartad, hogy törölje őket, 594 00:30:56,577 --> 00:30:58,660 ezen belül a hurok, amit lehetett hívja s.delete fokon. 595 00:30:58,660 --> 00:31:04,180 596 00:31:04,180 --> 00:31:07,780 És az utolsó dolog, amit akarok, van, amikor a kapcsolat létrehozásakor, 597 00:31:07,780 --> 00:31:10,350 és kész a munkára, hívni kívánt db.close, 598 00:31:10,350 --> 00:31:13,190 ahol db ilyen adatbázis kifogásolják, hogy a miénk volt. 599 00:31:13,190 --> 00:31:18,290 És azt szeretnénk, hogy győződjön meg arról, hogy mindent becsukjuk ki. 600 00:31:18,290 --> 00:31:18,790 >> Hűvös. 601 00:31:18,790 --> 00:31:22,410 Tehát most, van egy példa alkalmazást. 602 00:31:22,410 --> 00:31:26,880 Már egyfajta előre elkészített mindent csak úgy, hogy nem lesz semmilyen élő kódolás 603 00:31:26,880 --> 00:31:30,220 hibákat, de lehet séta azt, és nézze meg, hogyan tenné Lombik 604 00:31:30,220 --> 00:31:33,685 és peewee együtt, és egy egyszerű alkalmazást. 605 00:31:33,685 --> 00:31:38,680 Úgy hívom CS50 henceg, és ez egyfajta egyszerű blog platform. 606 00:31:38,680 --> 00:31:41,150 >> Tehát először is fogok futni, és azt mutatják, hogy néz ki, 607 00:31:41,150 --> 00:31:42,890 és akkor nézd inkább a kódot. 608 00:31:42,890 --> 00:32:00,470 609 00:32:00,470 --> 00:32:02,830 Oké, úgyhogy csak futtatni ezt. 610 00:32:02,830 --> 00:32:14,040 611 00:32:14,040 --> 00:32:17,250 Cool, megcsinálom ezt egy kicsit kisebb. 612 00:32:17,250 --> 00:32:20,000 Ez nem túl szép, csak azért, mert Én nem, hogy egy csomó CSS, 613 00:32:20,000 --> 00:32:23,255 de mit csinál, azt Ebben az adatbázisban a blogbejegyzések, 614 00:32:23,255 --> 00:32:25,630 és ez megy végig őket, és ez jelenik meg őket 615 00:32:25,630 --> 00:32:28,170 Az oldalon sorrendjében a legfrissebb. 616 00:32:28,170 --> 00:32:30,920 És így ez csak néhány hozzászólások hogy megmentette az adatbázisban. 617 00:32:30,920 --> 00:32:35,680 >> Tehát ha azt akarjuk, hogy hozzon létre egy új hozzászólás, mehetünk hozzáadni egy új Post, 618 00:32:35,680 --> 00:32:42,720 és tudjuk be a címet a hozzászólás, így valami olyasmit, CS50 szemináriumon. 619 00:32:42,720 --> 00:32:45,360 620 00:32:45,360 --> 00:32:46,735 Wow, nagyon élvezi a szemináriumon. 621 00:32:46,735 --> 00:32:51,070 622 00:32:51,070 --> 00:32:52,270 >> Hűvös. 623 00:32:52,270 --> 00:32:56,060 Akkor nyomja poszt, és ez lesz átirányítjuk vissza a honlapon, 624 00:32:56,060 --> 00:33:00,039 majd látni fogod, hogy Utolsó hozzászólás adunk. 625 00:33:00,039 --> 00:33:01,580 És még mindig van az összes közül van. 626 00:33:01,580 --> 00:33:08,080 Tehát most, Lépjünk át az összes kódot, és látom, hogy a gyakorlati megvalósítás. 627 00:33:08,080 --> 00:33:11,995 >> Szóval, azt hiszem, az első dolog, hogy nézzük vessünk egy pillantást, valójában a modell. 628 00:33:11,995 --> 00:33:14,120 Egy csomó időt, amikor te tervezése valamit, 629 00:33:14,120 --> 00:33:17,036 akarjuk gondolni először arról, hogy hogyan fogsz képviselni az adatokat, 630 00:33:17,036 --> 00:33:22,915 majd tervezni a dolgokat, hogy úgy, hogy mindennek van értelme. 631 00:33:22,915 --> 00:33:25,290 És hogy valójában hogyan csinálta mikor volt, hogy ezt a, 632 00:33:25,290 --> 00:33:28,030 Leültem, és gondoltam, mit is akarok egy bejegyzésben. 633 00:33:28,030 --> 00:33:32,130 >> Szóval, itt, akkor ugyanaz a struktúra hogy utaltam korábban, 634 00:33:32,130 --> 00:33:33,755 ahol mi db = Sqldatabase ("posts.db"). 635 00:33:33,755 --> 00:33:37,840 636 00:33:37,840 --> 00:33:40,980 A valóságban, akkor valószínűleg nem szeretné, A kemény kódot a nevét adatbázisaiban. 637 00:33:40,980 --> 00:33:43,730 Hogy kell valószínűleg egy paraméter ami tárolni valahol, talán 638 00:33:43,730 --> 00:33:45,940 egy config file, de egy kis példa, mint ez, 639 00:33:45,940 --> 00:33:48,310 nem baj, ha kemény kódot, hogy az. 640 00:33:48,310 --> 00:33:53,510 >> Tehát most, hogy van ez a hozzászólás osztály, amely örökli az alapmodell. 641 00:33:53,510 --> 00:33:56,930 És van, újra, a ID = PrimaryKeyField. 642 00:33:56,930 --> 00:34:02,250 Igazából, ha nem adja meg, ha valóban megszabadultak e, 643 00:34:02,250 --> 00:34:07,152 akkor peewee fogunk vigyázni a program automatikusan létrehozza az ID mező, 644 00:34:07,152 --> 00:34:09,360 és akkor automatikusan hogy ez egy PrimaryKey, amely 645 00:34:09,360 --> 00:34:12,485 Azt hiszem, tényleg szép, mert általában, ez valami azt szeretné, hogy, 646 00:34:12,485 --> 00:34:16,239 de szeretem, hogy betette kifejezetten, Annyira emlékszem, hogy van benne. 647 00:34:16,239 --> 00:34:19,480 De ha nem adja meg, hogy hogy ott lesz automatikusan. 648 00:34:19,480 --> 00:34:22,198 >> Tehát akkor, van egy dátum, amely egy DateTimeField, és az összes 649 00:34:22,198 --> 00:34:24,864 Ezek különböző területeken, ha nézd meg a peewee dokumentációt, 650 00:34:24,864 --> 00:34:28,920 ez kapsz egy listát a különböző típusú mezők, amelyek segítségével. 651 00:34:28,920 --> 00:34:34,440 Az esetek többségében, ez analóg hogy mit látnánk SQL-ben. 652 00:34:34,440 --> 00:34:37,699 Tehát van egy CharField, a VarCharFields, szövegmezők, 653 00:34:37,699 --> 00:34:40,550 amelyek nagyon hosszú szövegek, mint egy blogbejegyzést 654 00:34:40,550 --> 00:34:44,460 potenciálisan DateTimeFields, DoubleFields, FloatFields, 655 00:34:44,460 --> 00:34:46,100 minden ilyesmi. 656 00:34:46,100 --> 00:34:51,570 >> És akkor át más érvek hozzá, amit nem adja ide. 657 00:34:51,570 --> 00:34:55,719 Tegyük fel például, hogy nem akar hogy két álláshely, hogy ugyanaz a címe, 658 00:34:55,719 --> 00:34:59,672 meg tudná határozni olyasmi, mint az egyedülálló = True, 659 00:34:59,672 --> 00:35:02,880 és ez csak egy extra paramétert területén, hogy amikor az általa összeállított le 660 00:35:02,880 --> 00:35:06,865 az SQL, megadja hogy egyedinek kell lennie. 661 00:35:06,865 --> 00:35:09,740 Azt is megadhatja, valami ilyesmi nem nulla, és az összes többi dolog 662 00:35:09,740 --> 00:35:11,750 szokásos módon SQL-ben. 663 00:35:11,750 --> 00:35:16,020 Szóval, ez egy nagyon egyszerű modell, amely a dátumot. 664 00:35:16,020 --> 00:35:19,460 Figyeljük meg itt, a DateTimeField, Én meg, mi az alapértelmezés. 665 00:35:19,460 --> 00:35:22,560 Én meg azt, hogy datetime.datetime.now, 666 00:35:22,560 --> 00:35:24,920 mert az út, hogy a ez lesz értékelni, 667 00:35:24,920 --> 00:35:28,750 ez valójában értékeli A DateTime.Now ha 668 00:35:28,750 --> 00:35:32,110 ez lesz helyezve az adatbázisba. 669 00:35:32,110 --> 00:35:34,760 >> Úgy gondolom, hogy én volna, hogy ellenőrizze ezt, 670 00:35:34,760 --> 00:35:38,222 de ha mégis valami ilyesmi, akkor ez valóban értékeli, hogy egyszer, 671 00:35:38,222 --> 00:35:40,180 majd a DateTime lenne mindig ugyanaz. 672 00:35:40,180 --> 00:35:44,240 Szóval, csak ha csinálsz valamit A datetimes, ellenőrizze 673 00:35:44,240 --> 00:35:47,080 hogy ez értékelésére, amikor valóban lesz behelyezve, vagy pedig 674 00:35:47,080 --> 00:35:48,780 zavaró is lehet. 675 00:35:48,780 --> 00:35:51,221 >> A cím csak egy CharField, amely ott 676 00:35:51,221 --> 00:35:53,970 Több érvek akkor át A meghatározná, milyen hosszú ideig 677 00:35:53,970 --> 00:35:56,170 szeretné, hogy legyen, de itt, ez nem igazán számít. 678 00:35:56,170 --> 00:35:58,687 És szöveg lesz A szöveg az egész poszt, 679 00:35:58,687 --> 00:36:01,020 és ez lesz a TextField csak azért, mert azt szeretnénk, 680 00:36:01,020 --> 00:36:03,370 hogy lehetővé teszik, hogy egy nagyon hosszú karakterlánc. 681 00:36:03,370 --> 00:36:05,970 >> Aztán itt van ez a Meta alosztály, hogy csak 682 00:36:05,970 --> 00:36:11,250 meghatározza, hogy szeretnénk az adatbázist ahol ez valójában megnyitotta a 683 00:36:11,250 --> 00:36:14,267 hogy a db tárgyat, hogy mi van itt. 684 00:36:14,267 --> 00:36:16,350 És az utolsó dolog, amit el Itt, csak ez a funkció 685 00:36:16,350 --> 00:36:18,120 hogy megyünk Használja a mi fő app 686 00:36:18,120 --> 00:36:23,970 Az adatbázis létrehozásához való csatlakozáshoz azt, majd hozza létre a post asztalra. 687 00:36:23,970 --> 00:36:26,880 >> Most, nézzük meg a fő alkalmazás maga. 688 00:36:26,880 --> 00:36:30,800 Szóval ez egy elég kicsit hosszabb, mint azok, 689 00:36:30,800 --> 00:36:34,840 Láttuk korábban, de remélhetőleg nem túl rossz. 690 00:36:34,840 --> 00:36:37,140 Szóval, hadd kiterjeszteni ezt. 691 00:36:37,140 --> 00:36:38,370 Oké. 692 00:36:38,370 --> 00:36:42,070 >> Szóval, észre, és a tetején én importált egy csomó más dolog 693 00:36:42,070 --> 00:36:44,129 re Lombik, hogy mi nem Tényleg látott. 694 00:36:44,129 --> 00:36:46,670 És remélhetőleg, mehetünk át mindegyiknek egyenként 695 00:36:46,670 --> 00:36:49,420 és beszéljünk egy kicsit többet ezek szerint rendezve példa. 696 00:36:49,420 --> 00:36:51,380 Szóval, mi van a lombik, és a render_template, 697 00:36:51,380 --> 00:36:54,370 amit eddig láttam, ez a kérés objektum, 698 00:36:54,370 --> 00:37:00,400 amely akkor lép fel, ha megnézzük, hogy hogyan formájában, hogy én mutattam ténylegesen 699 00:37:00,400 --> 00:37:01,170 művek. 700 00:37:01,170 --> 00:37:04,850 Átirányítani, amely lehetővé teszi, hogy átirányítani vissza a Create New hozzászólás 701 00:37:04,850 --> 00:37:11,710 Vissza az eredeti honlapra, majd URL, ami valami, amivel 702 00:37:11,710 --> 00:37:15,550 kitalálni, ahol a honlapján egy adott oldal. 703 00:37:15,550 --> 00:37:17,810 >> Szóval, akkor a következő dolog, amit nem, az én behozatali 704 00:37:17,810 --> 00:37:21,550 az összes információt a Modellek fájlokat, hogy mi volt, csak néztem. 705 00:37:21,550 --> 00:37:23,140 És igen. 706 00:37:23,140 --> 00:37:28,720 >> Szóval, valami mást, ami új fel, ha van dolgunk,, 707 00:37:28,720 --> 00:37:31,850 Különösen adatbázisok, az, hogy megadhatja 708 00:37:31,850 --> 00:37:35,110 függvénye, hogy lesz úgynevezett előtt minden kérést, és a funkció, hogy lesz 709 00:37:35,110 --> 00:37:39,690 kiáltott utána minden kérést, ezzel funkciót dekoratőr app.before kérést. 710 00:37:39,690 --> 00:37:42,324 >> És így ez lesz végrehajtva ahol ez a funkció. 711 00:37:42,324 --> 00:37:44,240 Ez nem kell, hogy meghívni, mielőtt kérésére, 712 00:37:44,240 --> 00:37:46,281 de általában ez is valami értelmes nevezni. 713 00:37:46,281 --> 00:37:48,580 714 00:37:48,580 --> 00:37:51,650 Megadható bármilyen funkciót azt akarjuk, hogy az úgynevezett ott, 715 00:37:51,650 --> 00:37:56,330 úgyhogy megadott ezt initialize_db funkciót, hogy mi volt vissza a modell 716 00:37:56,330 --> 00:38:02,390 fájlt, így mielőtt minden kérést, szeretnénk csatlakozni az adatbázishoz. 717 00:38:02,390 --> 00:38:04,560 >> Két különböző módon lehet csinálni. 718 00:38:04,560 --> 00:38:10,830 Meg tudod csinálniapp., I Szerintem ez after_request. 719 00:38:10,830 --> 00:38:13,800 És a különbség after_request és teardown_request, 720 00:38:13,800 --> 00:38:17,590 hogy after_request csak akkor kerül sor ha a kérelem valóban érvényes volt. 721 00:38:17,590 --> 00:38:20,440 És így, csak akkor, ha a kérelem sikeres volt, 722 00:38:20,440 --> 00:38:22,490 ha semmi nem jön közbe, de teardown_request 723 00:38:22,490 --> 00:38:26,300 történik abban az esetben, egy sikeres kérésre, vagy a hiba esetén. 724 00:38:26,300 --> 00:38:28,252 >> Szóval, általában, azt szeretnénk, használni teardown_request, 725 00:38:28,252 --> 00:38:30,460 hacsak nem akarod csinálni valamit, különösen a különböző 726 00:38:30,460 --> 00:38:31,470 abban az esetben, egy hiba. 727 00:38:31,470 --> 00:38:35,122 De csak lezárására az adatbázis, hogy ez sikerült, vagy ha ez nem sikerül, 728 00:38:35,122 --> 00:38:37,080 mi azt szeretnénk, hogy húzza az adatbázisból. 729 00:38:37,080 --> 00:38:41,240 Szóval ezt hívják, db.close A db tárgyat. 730 00:38:41,240 --> 00:38:43,740 >> Figyeljük meg, hogy a teardown_request vesz egy kivétel. 731 00:38:43,740 --> 00:38:46,781 Így ellenőrizheti, hogy van-ténylegesen Hiba amikor bezárják, 732 00:38:46,781 --> 00:38:49,390 de itt is, hátha van nem egy egész csomó hibát, 733 00:38:49,390 --> 00:38:52,720 így mi csak egyfajta figyelmen kívül hagyva, hogy. 734 00:38:52,720 --> 00:38:55,990 >> Oké, és a többi nem túl rossz. 735 00:38:55,990 --> 00:39:02,240 Tehát, amikor megyünk a honlapon, mi tette ezt home.html Template 736 00:39:02,240 --> 00:39:03,490 hogy nyit. 737 00:39:03,490 --> 00:39:06,240 A bérlet utáni egyenlő, és mi ezt 738 00:39:06,240 --> 00:39:10,260 nem is, emlékszem már ezen a poszton modell, így válassza ki az összes hozzászólás, 739 00:39:10,260 --> 00:39:13,890 majd egy másik dolog, amit tehetünk, megadhatja a WHERE, 740 00:39:13,890 --> 00:39:16,910 megadhat egy rendezést, és így vesszük 741 00:39:16,910 --> 00:39:18,820 az összes hozzászólást, hogy a kiválasztott, majd 742 00:39:18,820 --> 00:39:22,590 rendeljük őket a post.date.descending. 743 00:39:22,590 --> 00:39:25,030 És hogy meg fogja határozni, ha valójában jönnek ki, 744 00:39:25,030 --> 00:39:29,250 a legutóbbi lesz nagyon elsőt. 745 00:39:29,250 --> 00:39:31,420 >> És akkor, átadjuk, hogy a A home.html sablon, 746 00:39:31,420 --> 00:39:34,240 úgyhogy tényleg nyit hogy Template nagyon gyors, 747 00:39:34,240 --> 00:39:36,760 és nézd meg, hogyan működik. 748 00:39:36,760 --> 00:39:42,130 És ez nem jó HTML, de Remélhetőleg tudunk összpontosítani a Python. 749 00:39:42,130 --> 00:39:46,960 >> Szóval van egy link az Új Hozzászólás, és így ez meghatározza az útvonal 750 00:39:46,960 --> 00:39:51,580 az Lombik hogy meghatározni, ami itt van. 751 00:39:51,580 --> 00:39:56,310 Ez az új poszt útvonalon, és mi adja, hogy akár itt. 752 00:39:56,310 --> 00:40:00,450 És így, hogy egy linket, ami akkor megy az adott útvonalra belül Lombik szerver. 753 00:40:00,450 --> 00:40:03,820 >> Minél több érdekes dolog ez a hurok itt. 754 00:40:03,820 --> 00:40:07,685 Így adja, hogy ez a hozzászólás paraméter 755 00:40:07,685 --> 00:40:09,560 vezetünk be a render_template funkciót, 756 00:40:09,560 --> 00:40:13,550 Minden hozzászólás a bejegyzéshez objektum kerül továbbításra az. 757 00:40:13,550 --> 00:40:16,600 Azt akarjuk, hogy nyomtassa ki a cikk címét, a H1, 758 00:40:16,600 --> 00:40:21,930 majd alább, szeretnénk kinyomtatni A hozzászólás szövege bekezdésen belül. 759 00:40:21,930 --> 00:40:25,710 >> És itt, mi is valójában hívni egy Python funkciót, 760 00:40:25,710 --> 00:40:35,130 így tudjuk hívni strftime, ST-RF-time, és akkor át a formátum string 761 00:40:35,130 --> 00:40:37,064 hogy a nyomtatni kívánt adatokat ki. 762 00:40:37,064 --> 00:40:39,980 Szóval ez elég szép, hogy valóban hívja ezt a funkciót Python 763 00:40:39,980 --> 00:40:41,090 belül van. 764 00:40:41,090 --> 00:40:44,370 Nem kell, hogy ezt a formázását A vezérlési oldalról, mert tényleg, 765 00:40:44,370 --> 00:40:47,770 formázás a dátum valami, nem kíván foglalkozni a Nézet. 766 00:40:47,770 --> 00:40:51,480 >> És mindezen százalék a dolgok nem szuper fontos. 767 00:40:51,480 --> 00:40:55,270 Ha megnézed a dokumentációs Az strftime függvény Python, 768 00:40:55,270 --> 00:40:57,040 meghatározza ezeket a dolgokat, de ez 769 00:40:57,040 --> 00:40:59,190 hogyan, amikor kerestünk A honlap itt, 770 00:40:59,190 --> 00:41:04,440 ez formátumok ez egy szép dátum, és ez megadja az AM vagy PM, 771 00:41:04,440 --> 00:41:09,410 de általában, ha Nem volt ez itt, 772 00:41:09,410 --> 00:41:14,024 akkor talán kap némi szemetet dátum hogy nem néz ki túl jó. 773 00:41:14,024 --> 00:41:15,940 És akkor adja meg a post.text, és tudtam 774 00:41:15,940 --> 00:41:19,460 volna egy pár sortöréseket itt, csak 775 00:41:19,460 --> 00:41:21,820 hogy egy kis terek között minden posztra. 776 00:41:21,820 --> 00:41:26,270 >> Szóval, azt hiszem, a legfontosabb dolog ebben a példában, 777 00:41:26,270 --> 00:41:28,697 az, hogy tudod használni ezt a for ciklus. 778 00:41:28,697 --> 00:41:30,780 És ez analóg a dolog, amit tehetünk, PHP nyelven. 779 00:41:30,780 --> 00:41:32,905 Akkor halad végig, mindent átad az, 780 00:41:32,905 --> 00:41:36,719 És így, ahelyett, hogy do másolás / beillesztés, copy / paste a HTML, 781 00:41:36,719 --> 00:41:40,010 csak meg kell írni, hogy egyszer, majd akkor végighaladni az összes álláshely. 782 00:41:40,010 --> 00:41:41,510 >> És ez az, amit Gyakori, hogy azt szeretnénk, 783 00:41:41,510 --> 00:41:44,510 csinálni, ha van egy csomó adat, az, hogy mindenért az adatokat, 784 00:41:44,510 --> 00:41:48,370 akarsz csinálni egy hasonló dolog. 785 00:41:48,370 --> 00:41:51,690 És akkor, csak ne feledjük, hogy ha a kinyomtatni kívánt valamit kifejezetten 786 00:41:51,690 --> 00:41:54,780 a HTML, használja A kettős nadrágtartó itt, 787 00:41:54,780 --> 00:41:57,820 de amikor meg akarja határozni Némi információt feltétele, 788 00:41:57,820 --> 00:42:02,430 vagy egy for ciklus, akkor Használja a százalékos konzol. 789 00:42:02,430 --> 00:42:08,730 >> Szóval, megy vissza a Python kódot, hogy megmagyarázza, 790 00:42:08,730 --> 00:42:12,242 mi történik a fő útvonalon, ha megyünk oda, 791 00:42:12,242 --> 00:42:14,450 ez csak megjeleníti az összes hozzászólás, de akkor a kérdés 792 00:42:14,450 --> 00:42:17,440 van, hogyan valóban kap hozzászólások be az adatbázisba, amely 793 00:42:17,440 --> 00:42:18,970 egy kicsit érdekes. 794 00:42:18,970 --> 00:42:23,960 >> Tehát, ha rákattint a New Hozzászólás linket, amit itt látott, 795 00:42:23,960 --> 00:42:26,000 ez átirányítja Önt ebben a formában. 796 00:42:26,000 --> 00:42:29,580 És ez csak egy egyszerű hívást a render_template funkció, ami aztán 797 00:42:29,580 --> 00:42:32,110 halad az új poszt HTML formában. 798 00:42:32,110 --> 00:42:36,212 Szóval vessünk egy pillantást, hogy. 799 00:42:36,212 --> 00:42:37,420 Tehát ez egy nagyon egyszerű. 800 00:42:37,420 --> 00:42:45,110 Ez egy egyszerű HTML űrlap, amely fog kinézni egy kicsit ismerős, 801 00:42:45,110 --> 00:42:47,380 alapuló formák CS50 pénzügyminiszter. 802 00:42:47,380 --> 00:42:49,940 És mi is itt adja meg, a keresetet. 803 00:42:49,940 --> 00:42:52,435 És itt, ha dolgozik PHP, általában, ez 804 00:42:52,435 --> 00:42:55,930 lenne valami ilyesmi, create.PHP, de itt 805 00:42:55,930 --> 00:42:59,960 mi valójában adjon meg egy útvonalat a Lombik szerver. 806 00:42:59,960 --> 00:43:02,520 És igen, ez az útvonal megegyezik Az Új útvonal 807 00:43:02,520 --> 00:43:05,680 hogy mi van itt, ami megyünk be a második. 808 00:43:05,680 --> 00:43:07,630 >> És így, akkor olyan ez egy hozzászólás módszer, 809 00:43:07,630 --> 00:43:09,820 mert azt szeretnénk küldeni ebben a formában adatot és általában 810 00:43:09,820 --> 00:43:12,945 ha küldenek adatokat olyan formában, érdemes használni egy post kérés, 811 00:43:12,945 --> 00:43:15,760 csak hogy ne a végén ez a nagy, nehézkes URL. 812 00:43:15,760 --> 00:43:18,970 De akkor is használhatja a GET kérést, és adja át a változó útvonal, 813 00:43:18,970 --> 00:43:21,170 de a formák, örülök egy poszt kérésére itt. 814 00:43:21,170 --> 00:43:24,620 És akkor, mint te tenne a HTML és PHP, 815 00:43:24,620 --> 00:43:28,420 megadhatja ezeket a szöveges bemenet, és megadhatja a nevét őket, 816 00:43:28,420 --> 00:43:33,490 és ez a név fog kap telt a kérés objektum belül lombikba. 817 00:43:33,490 --> 00:43:36,960 >> És akkor még egy beküldése gombot, azt mondja Post. 818 00:43:36,960 --> 00:43:40,760 És itt, posta a nevét gombot, mert ez egy blogbejegyzést, 819 00:43:40,760 --> 00:43:42,700 de itt, az üzenet a kérést módszer. 820 00:43:42,700 --> 00:43:47,060 Tehát ezek ugyanazt a szót de valójában nem függ össze. 821 00:43:47,060 --> 00:43:48,460 Igen 822 00:43:48,460 --> 00:43:54,800 >> Visszatérve a Python kódot, amikor az úgynevezett létre módszerrel, 823 00:43:54,800 --> 00:43:57,702 megemlítem, hogy tudsz ténylegesen meghatározza a útvonalon 824 00:43:57,702 --> 00:44:00,650 A kérelmet módszerek hogy szeretnénk-e fogadni, 825 00:44:00,650 --> 00:44:04,770 és ezért itt, azt adja meg, hogy én csak fogadni kíván a Post módszer. 826 00:44:04,770 --> 00:44:09,800 Tehát, ha én valóban megpróbál ellátogatni az oldalra közvetlenül, amely segítségével egy GET kérés, 827 00:44:09,800 --> 00:44:11,700 akkor mondd "módszer nem lehetséges." 828 00:44:11,700 --> 00:44:15,840 >> És igen, van oldalak, vagyis afféle ennek létrehozása oldalt, ami csak azért vagyok 829 00:44:15,840 --> 00:44:20,192 Tényleg használ, mert így a formájában kap benyújtott, 830 00:44:20,192 --> 00:44:22,900 megadhatja, hogy te nem akarom az embereket, hogy képes legyen ott 831 00:44:22,900 --> 00:44:25,650 közvetlenül a GET kérést, vagy ha nem akar, 832 00:44:25,650 --> 00:44:28,580 valamilyen oknál fogva, a Post kérelmet, akkor csak adja ide, 833 00:44:28,580 --> 00:44:32,720 de ebben a példában, csak szeretné a Posta kérésére kimenni. 834 00:44:32,720 --> 00:44:38,700 >> Tehát, ha create_post hívják, amikor meglátogatjuk, hogy keresztül a Posta kérésére, 835 00:44:38,700 --> 00:44:43,600 ha elmész egy adott útvonalon, itt van ez a kérés objektum, 836 00:44:43,600 --> 00:44:46,640 és meg kellett importálni kéri a legtetején, 837 00:44:46,640 --> 00:44:49,640 de van ezt a kérést objektum kerül továbbításra az, 838 00:44:49,640 --> 00:44:53,210 és elérheti az űrlap adatokat, amely automatikusan kap töltött 839 00:44:53,210 --> 00:44:55,070 ha elküld egy kérést egy formája. 840 00:44:55,070 --> 00:44:56,990 >> És akkor, hogy én mit gondolok nagyon klassz, a 841 00:44:56,990 --> 00:45:02,840 hogy az űrlap objektum hogy telt a, csak egy Python szótár, amely 842 00:45:02,840 --> 00:45:10,560 tartalmaz, ha access-- így itt, hadd húzzam fel a HTML mellette, csak 843 00:45:10,560 --> 00:45:17,670 így lehet, hogy mint a referencia, igen, igen 844 00:45:17,670 --> 00:45:21,060 A nevek, hogy mi itt adja a különböző területeken, így 845 00:45:21,060 --> 00:45:23,900 A cím és a szöveg, amit akkor csak használja ezeket ide 846 00:45:23,900 --> 00:45:27,110 mint indexeket be az adatokat. 847 00:45:27,110 --> 00:45:28,950 Szóval ez szuper kényelmes. 848 00:45:28,950 --> 00:45:33,320 >> Szóval akkor hívja post.create, amely teremt majd, és automatikusan beilleszti 849 00:45:33,320 --> 00:45:36,850 Egy ilyen poszt objektumot az adatbázisba. 850 00:45:36,850 --> 00:45:40,690 És azt hiszem, ez a funkció létre Itt egy nagyon jó példa arra, hogy 851 00:45:40,690 --> 00:45:44,900 erőteljes lombik és a munka ezzel, mert ha csinálsz valamit 852 00:45:44,900 --> 00:45:48,660 PHP, akkor lehet, hogy nem sok érvényesítését, 853 00:45:48,660 --> 00:45:51,730 akkor kellett volna, akkor adatbázis-kapcsolat létrehozására, 854 00:45:51,730 --> 00:45:55,210 akkor kellett volna, akkor hajtja végre az SQL lekérdezés, 855 00:45:55,210 --> 00:45:59,550 de itt már csak ez a szép post.create, amit aztán csak 856 00:45:59,550 --> 00:46:01,520 az információt ki a kérelem tárgya, 857 00:46:01,520 --> 00:46:05,370 majd adja át egy új tegye, hogy mi hozzuk létre. 858 00:46:05,370 --> 00:46:07,850 >> És akkor, az utolsó dolog, amit szeretnénk csinálni, 859 00:46:07,850 --> 00:46:09,630 az, hogy irányítsa át a felhasználói vissza a haza. 860 00:46:09,630 --> 00:46:13,020 És így használjuk ezt Lombik átirányítani funkciót. 861 00:46:13,020 --> 00:46:17,770 És valami, amit még nem látott előtt, ez volt az URL funkciót. 862 00:46:17,770 --> 00:46:21,970 Tehát az URL-funkció lehetővé teszi, elmész valójában a neve 863 00:46:21,970 --> 00:46:26,090 A funkciót a Python kódot, mintsem az adott útvonalon 864 00:46:26,090 --> 00:46:26,720 hogy ez az. 865 00:46:26,720 --> 00:46:32,107 >> Így tudtam ugyanolyan könnyen átirányítja a felhasználót, hogy csökkentse, 866 00:46:32,107 --> 00:46:37,050 ami küldje haza, de használatával az URL-funkció szép, 867 00:46:37,050 --> 00:46:39,990 mert ha megváltoztatja a helyen, ahol a dolgok, 868 00:46:39,990 --> 00:46:44,080 Tehát mondjuk, hogy tudom megváltoztatni a otthon lenni a / home helyett, 869 00:46:44,080 --> 00:46:47,040 már az is majd vissza a / home, mert valóban megy, és felnéz 870 00:46:47,040 --> 00:46:50,770 A függvény neve, és kapsz vissza az URL ezért. 871 00:46:50,770 --> 00:46:52,490 >> Szóval, valami a Feltételezve, hogy te 872 00:46:52,490 --> 00:46:55,489 nagyobb valószínűséggel változtatni, ahol a dolgok vannak, mint a nevét a funkciókat. 873 00:46:55,489 --> 00:46:58,840 Használhatja ezt a nagyon Szép URL-jét funkciót. 874 00:46:58,840 --> 00:47:02,470 És egy dolog, hogy tisztában legyenek hogy egy kicsit trükkös, 875 00:47:02,470 --> 00:47:05,750 az, hogy úgy gondolja, akkor csak hívja átirányítani a URL-t, 876 00:47:05,750 --> 00:47:10,600 de valójában minden útvonalon van vissza valamilyen szöveges és HTML, 877 00:47:10,600 --> 00:47:14,360 így valóban meg kell vissza az átirányítás hívást. 878 00:47:14,360 --> 00:47:18,379 Ellenkező esetben kapsz valamit Érvénytelen mintegy vissza nem egy string, 879 00:47:18,379 --> 00:47:21,420 mert az összes ilyen kell vissza A HTML valóban szeretne tenni. 880 00:47:21,420 --> 00:47:26,980 >> És így, amikor telefonál az átirányítás, akkor átirányítja Önt az oldalra, 881 00:47:26,980 --> 00:47:30,270 de valójában visszatér a HTML akkor kell végrehajtani, hogy átirányítást. 882 00:47:30,270 --> 00:47:34,430 883 00:47:34,430 --> 00:47:37,110 Menj vissza a főoldalra. 884 00:47:37,110 --> 00:47:39,200 Tehát van két különböző nézetek. 885 00:47:39,200 --> 00:47:40,132 Megvan az otthoni kilátás. 886 00:47:40,132 --> 00:47:41,590 Vagy, azt hiszem, azt kell mondanom, sablonokat. 887 00:47:41,590 --> 00:47:44,190 Van két sablonok, Az otthoni sablont, amely 888 00:47:44,190 --> 00:47:48,500 megjeleníti minden kedves hozzászólásokat, és akkor van ez a hirdetés dolog, 889 00:47:48,500 --> 00:47:52,970 és ha rákattint az üzenetre megy egy új útvonalat a lombik, 890 00:47:52,970 --> 00:47:55,920 de ezen az útvonalon nem feltétlenül egy megfelelő sablont. 891 00:47:55,920 --> 00:47:59,290 892 00:47:59,290 --> 00:48:01,560 Nem kell látni semmit, de akkor is 893 00:48:01,560 --> 00:48:04,090 Van ez a munka folyik a színfalak mögött. 894 00:48:04,090 --> 00:48:07,450 És akkor átirányításhoz vissza a kezdőlapra. 895 00:48:07,450 --> 00:48:12,230 És határozottan, hogy könnyű dolgozni Néhány szebb CSS be a sablonba 896 00:48:12,230 --> 00:48:15,580 és hogy néz ez ki a sok szebb, de a fő logika 897 00:48:15,580 --> 00:48:18,590 ott van a Python. 898 00:48:18,590 --> 00:48:20,020 >> Bármilyen kérdése van, hogy például? 899 00:48:20,020 --> 00:48:22,760 Tudom, hogy van egy csomó különböző dolog folyik ott, 900 00:48:22,760 --> 00:48:25,341 Egy csomó dolog, amit még nem látott előtt, de mint minden. 901 00:48:25,341 --> 00:48:25,840 Igen. 902 00:48:25,840 --> 00:48:28,346 >> KÖZÖNSÉG 1: Van, hogy semmit Különleges súrolja az adatokat, ami 903 00:48:28,346 --> 00:48:29,600 érkező formában? 904 00:48:29,600 --> 00:48:31,109 Észrevettem, hogy csak azt mondta: "teremteni" 905 00:48:31,109 --> 00:48:33,900 EZRA Zigmond: Igen, ez az, valóban, ez egy nagyon jó pont. 906 00:48:33,900 --> 00:48:36,350 Szóval a kérdés az volt, ugye ellenőrizni kell, és győződjön meg róla, 907 00:48:36,350 --> 00:48:39,190 hogy az adatok érvényesek, és do bármilyen súroló 908 00:48:39,190 --> 00:48:41,840 hogy győződjön meg arról, hogy érvényes, mert ahogy itt is látszik, 909 00:48:41,840 --> 00:48:42,660 Én nem csinálom. 910 00:48:42,660 --> 00:48:48,140 Nézzük, mi történik ha felad valami üres. 911 00:48:48,140 --> 00:48:51,190 Szóval, akkor valójában csak, hogy egy üres post, és töltse ki az DateTime. 912 00:48:51,190 --> 00:48:55,990 >> Így a valóságban, akkor valószínűleg akar tenni valamit, mint, 913 00:48:55,990 --> 00:49:04,749 Talán adja, ha a cím megegyezik Az üres string, akkor ne csináld ezt. 914 00:49:04,749 --> 00:49:07,290 Vagy csak csinálni, ha a cím nem egyenlő az üres string. 915 00:49:07,290 --> 00:49:10,330 Tehát valójában nem automatikusan vigyázzon, hogy súrolás 916 00:49:10,330 --> 00:49:12,820 az Ön számára, így továbbra is szükség van erre. 917 00:49:12,820 --> 00:49:14,330 Igen, jó kérdés. 918 00:49:14,330 --> 00:49:18,497 >> KÖZÖNSÉG 2: Tényleg bozót A folytatást injekciót? 919 00:49:18,497 --> 00:49:19,890 Tudod? 920 00:49:19,890 --> 00:49:22,830 >> EZRA Zigmond: Remélhetőleg peewee csinálja. 921 00:49:22,830 --> 00:49:25,830 Azt hiszem, ez minden bizonnyal egy szép Rossz könyvtár, ha ezt nem tette meg. 922 00:49:25,830 --> 00:49:29,511 923 00:49:29,511 --> 00:49:32,690 Nem tudom pontosan. 924 00:49:32,690 --> 00:49:34,820 Azt kell nézd meg a lekérdezni, hogy keletkezett. 925 00:49:34,820 --> 00:49:38,980 Úgy gondolom, hogy ha beírtam egy blogbejegyzést, hogy egyfajta nézett 926 00:49:38,980 --> 00:49:46,370 mint egy SQL injection támadást, valami ilyesmi, ha ez a 927 00:49:46,370 --> 00:49:49,370 olyan, mint egy jelszó mezőt, vagy valami, lehet, hogy nem valami ilyesmi. 928 00:49:49,370 --> 00:49:53,410 >> Úgy gondolom, hogy továbbra is hogy a szó szoros írt, 929 00:49:53,410 --> 00:49:59,200 de azt hiszem, hogy peewee nem világos valamiféle súroló adatok 930 00:49:59,200 --> 00:50:01,680 mielőtt ténylegesen végrehajtja. 931 00:50:01,680 --> 00:50:04,510 >> KÖZÖNSÉG 1: Ez a szöveg mező tervezték, hogy egyszerű szöveges, ugye? 932 00:50:04,510 --> 00:50:05,710 >> EZRA Zigmond: Igen, ez az. 933 00:50:05,710 --> 00:50:06,465 Igen. 934 00:50:06,465 --> 00:50:09,590 Tehát úgy gondolom, hogy az összes, így ez helyes viselkedés, hogy meg fog tenni, hogy 935 00:50:09,590 --> 00:50:12,170 de azt hiszem, hogy peewee remélhetőleg nem csinál 936 00:50:12,170 --> 00:50:13,780 valamiféle védelmet a vége. 937 00:50:13,780 --> 00:50:16,090 És ha akart ellenőrizze, hogy van 938 00:50:16,090 --> 00:50:19,530 olyan módon, ha létrehoz egy lekérdezést. 939 00:50:19,530 --> 00:50:22,622 így nem kell végre közvetlenül. 940 00:50:22,622 --> 00:50:24,330 Azt kell, hogy egy nézd dokumentációt, 941 00:50:24,330 --> 00:50:27,930 de valójában megtekintéséhez SQL hogy generáló, 942 00:50:27,930 --> 00:50:30,840 és nézd meg ezt, és hogy arról, hogy távozik a dolgokat. 943 00:50:30,840 --> 00:50:33,700 >> A másik ok, miért lehet akarom nézni az SQL 944 00:50:33,700 --> 00:50:37,920 hogy peewee kimenetén, az, ha a dolgok úgy tűnik, hogy megy igazán lassan, 945 00:50:37,920 --> 00:50:41,090 akkor vess egy pillantást, és látni, milyen az valójában csinál, mert néha 946 00:50:41,090 --> 00:50:44,670 könnyű véletlenül hozzá a, ahogy írod, 947 00:50:44,670 --> 00:50:47,880 akkor véletlenül van ez jelölje ki a teljes adatbázis első, 948 00:50:47,880 --> 00:50:50,230 majd tegye valamiféle működése azon, ha igazán 949 00:50:50,230 --> 00:50:51,320 azt jelentette, hogy válasszon egy részhalmaza. 950 00:50:51,320 --> 00:50:53,560 >> És így, ha a dolgok nem elég jól megy, 951 00:50:53,560 --> 00:50:57,300 ez jó, hogy vessen egy pillantást a kérelem Ez valójában egyre keletkezett. 952 00:50:57,300 --> 00:50:57,800 Igen. 953 00:50:57,800 --> 00:51:02,100 >> KÖZÖNSÉG 2: Amikor először, teszel a port, mint 5000. 954 00:51:02,100 --> 00:51:02,904 >> EZRA Zigmond: Igen. 955 00:51:02,904 --> 00:51:06,070 KÖZÖNSÉG 2: Az alapértelmezett a peewee, vagy az, hogy valamit meg lehet változtatni? 956 00:51:06,070 --> 00:51:10,870 EZRA Zigmond: Igen, így a port alapértelmezett lombikkal. 957 00:51:10,870 --> 00:51:13,061 Ha nélkül futtatod meghatározva semmit, 958 00:51:13,061 --> 00:51:14,310 akkor automatikusan megtenni. 959 00:51:14,310 --> 00:51:16,060 Úgy gondolom, én is hogy ellenőrizze ezt, 960 00:51:16,060 --> 00:51:19,130 de megadhatja, hogy a app.run, Azt hiszem, meg tudod csinálni valami ilyesmit, 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 Adjunk hogy megpróbálja gyorsan. 964 00:51:23,750 --> 00:51:29,100 965 00:51:29,100 --> 00:51:32,230 Igen, így csak adja port = 8080, és akkor megy oda, 966 00:51:32,230 --> 00:51:36,130 ami szerintem, ha akarta futtatni az IDE, én még nem próbáltam ezt ki, 967 00:51:36,130 --> 00:51:38,527 de azt hiszem, hogy ha futott 8080-as porton, 968 00:51:38,527 --> 00:51:40,360 azt valószínűleg tudja, a szerver eléréséhez, 969 00:51:40,360 --> 00:51:41,870 Csak szeretném, ha voltak a honlapon. 970 00:51:41,870 --> 00:51:44,390 >> Igen, de ez könnyen megváltoztatni, hogy ha 971 00:51:44,390 --> 00:51:48,540 bármilyen fajta, mint kaputovábbítás dolog, amit tennie kell. 972 00:51:48,540 --> 00:51:50,410 >> Más kérdés? 973 00:51:50,410 --> 00:51:50,916 Igen? 974 00:51:50,916 --> 00:51:53,416 KÖZÖNSÉG 1: Szóval, láttam a modellek, ahogy említettük, 975 00:51:53,416 --> 00:51:55,647 meg kell határozni a adatbázis minden objektum. 976 00:51:55,647 --> 00:51:58,105 Nem tudod véletlenül, hogy tudja, nem hogy teszik igazán könnyű, ha 977 00:51:58,105 --> 00:52:03,210 Rengeteg SQLite adatbázisok, hogy használni kívánt egyetlen webes alkalmazás, 978 00:52:03,210 --> 00:52:07,210 hogy ha csak egy csokorban A másik is, a modell? 979 00:52:07,210 --> 00:52:11,620 >> EZRA Zigmond: Igen, hadd nyissa hogy tényleg gyorsan. 980 00:52:11,620 --> 00:52:17,570 Szóval, azt mondod, ha azt akarjuk, hogy egy csomó különböző valamit, talán 981 00:52:17,570 --> 00:52:22,670 Szeretem, és a diákok, néhány Ezért valami ilyesmi? 982 00:52:22,670 --> 00:52:26,870 Igen, úgy gondolom, hogy Még mindig, minden egyes modell 983 00:52:26,870 --> 00:52:30,652 volna, hogy még mindig csak Egy adatbázis rendelve, 984 00:52:30,652 --> 00:52:32,610 de ha azt akarta, hogy különböző modellek 985 00:52:32,610 --> 00:52:35,818 különböző adatbázis-objektumok rendelt hozzá, akkor biztosan csinálni. 986 00:52:35,818 --> 00:52:43,070 Tehát, ha én létrehozott egy új, valami ilyesmi, 987 00:52:43,070 --> 00:52:47,000 és most ez egy diák, hogy úgy néz ki furcsán, mint egy blogbejegyzést, 988 00:52:47,000 --> 00:52:49,390 Azt is megadhatjuk, hogy a adatbázis egyenlő db_2 itt. 989 00:52:49,390 --> 00:52:51,390 Szóval, azt hiszem, ez a fő út, amit tehetünk, hogy. 990 00:52:51,390 --> 00:52:54,560 991 00:52:54,560 --> 00:52:56,200 >> Hűvös. 992 00:52:56,200 --> 00:52:58,410 Más kérdés? 993 00:52:58,410 --> 00:53:02,170 >> Tehát csak befejezni egy kicsit kicsit, itt van néhány erőforrások, 994 00:53:02,170 --> 00:53:06,030 és ezeket a diákat után közzétesszük az interneten így valóban eljut ezeket a linkeket. 995 00:53:06,030 --> 00:53:08,500 A legjobb források valóban A dokumentáció Lombik 996 00:53:08,500 --> 00:53:09,930 és peewee magukat. 997 00:53:09,930 --> 00:53:12,940 Ők írásos igazán jól, azt hiszem. 998 00:53:12,940 --> 00:53:18,180 Szóval, a Lombik honlapján is itt van, és van egy gyorstalpaló tutorial, hogy 999 00:53:18,180 --> 00:53:20,710 majd séta hasonló dolgokat, amit én ment keresztül, 1000 00:53:20,710 --> 00:53:23,560 de ha azt szeretnénk, bármilyen felülvizsgálata a dolog, hogy odamentem, 1001 00:53:23,560 --> 00:53:26,200 vagy netán azt magyaráztam valami zavaros módon, 1002 00:53:26,200 --> 00:53:28,390 akkor lesz hasonló példa van. 1003 00:53:28,390 --> 00:53:31,570 >> Peewee van dokumentációt, és van egy gyorsindító útmutató 1004 00:53:31,570 --> 00:53:34,650 hogy megy át a fő paramétereket amit szeretne használni. 1005 00:53:34,650 --> 00:53:38,900 Szóval, a dolgok, amiről beszéltem a Az egyedi, és meghatározza mulasztásokat, 1006 00:53:38,900 --> 00:53:42,710 A különböző fajta mezők használhatja, azok is mind ott lesz. 1007 00:53:42,710 --> 00:53:44,690 >> Továbbá, ha van kérdései peewee, 1008 00:53:44,690 --> 00:53:47,530 és tegye őket a StackOverflow, A srác, aki peewee ténylegesen 1009 00:53:47,530 --> 00:53:49,500 megy tovább és válaszok ezeket néha. 1010 00:53:49,500 --> 00:53:53,200 Ha kérdése van, remélhetőleg ő képes lesz választ adni, 1011 00:53:53,200 --> 00:53:54,867 mert ő írta az egészet. 1012 00:53:54,867 --> 00:53:56,700 Azt hiszem, ez mindent Azt akartam, hogy ellepje. 1013 00:53:56,700 --> 00:53:58,930 Köszönöm, hogy jön ki. 1014 00:53:58,930 --> 00:54:02,688