1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:03,227 [Speel van musiek] 3 00:00:03,227 --> 00:00:04,705 4 00:00:04,705 --> 00:00:05,830 ESRA ZIGMOND: Hi, almal. 5 00:00:05,830 --> 00:00:08,020 Dankie vir die kom vandag. 6 00:00:08,020 --> 00:00:10,660 Hierdie seminaar is "Python Web Apps met Fies. " 7 00:00:10,660 --> 00:00:14,510 >> So, ek gaan om te praat 'n bietjie oor waarom 8 00:00:14,510 --> 00:00:17,400 jy dalk wil Fies gebruik om web apps met Python, in teenstelling 9 00:00:17,400 --> 00:00:21,556 aan 'n ander raamwerke daar buite, soos Django, wat is die mees bekende. 10 00:00:21,556 --> 00:00:24,330 Die subtitel is "en snuiter, "en dit is iets 11 00:00:24,330 --> 00:00:27,250 ons gaan praat oor hoe om met SQL databasis. 12 00:00:27,250 --> 00:00:29,610 Dit maak dit baie mooi. 13 00:00:29,610 --> 00:00:32,390 >> So, hier is net 'n vinnige verduideliking van wat ek wil om te gaan oor. 14 00:00:32,390 --> 00:00:35,520 So, in die eerste, net een skyfie wat gaan vinnig start wees, 15 00:00:35,520 --> 00:00:38,530 dit is hoe om alles te kry opgestel op jou rekenaar. 16 00:00:38,530 --> 00:00:41,760 Ek gaan word te demonstreer dit op my plaaslike Mac masjien, 17 00:00:41,760 --> 00:00:45,220 net omdat dit is waar ek het dit gedoen voor, ek is baie gemaklik met dit, 18 00:00:45,220 --> 00:00:48,510 maar dit is beslis moontlik op die CD50 IDE. 19 00:00:48,510 --> 00:00:52,050 >> So, na dit, ek wil stel wat Fies is, 20 00:00:52,050 --> 00:00:55,089 en oortuig waarom jy moet gebruik dit in die eerste plek. 21 00:00:55,089 --> 00:00:56,880 Dan, sal ek 'n vinnige gee voorbeeld van wat jy 22 00:00:56,880 --> 00:01:00,550 kan doen in fles, 'n vinnige voorbeeld van wat jy kan doen in snuiter, 23 00:01:00,550 --> 00:01:05,010 en dan sal ek jou 'n meer wys volledige voorbeeld aansoek 24 00:01:05,010 --> 00:01:07,520 dat ek saam dat ons kan deur saam te loop. 25 00:01:07,520 --> 00:01:10,040 >> En dan uiteindelik, in die laaste skyfie, ek het 26 00:01:10,040 --> 00:01:12,730 sommige hulpbronne wat jy kyk by online vir meer inligting. 27 00:01:12,730 --> 00:01:15,560 Dit is nie 'n volledige handleiding oor hoe om te gebruik Fies. 28 00:01:15,560 --> 00:01:18,140 En Ek sal hoop om te verlaat 'n geruime tyd vir vrae. 29 00:01:18,140 --> 00:01:21,050 Enigiemand kyk plaaslik, net soos, skree in die middel 30 00:01:21,050 --> 00:01:22,340 As jy enige vrae het. 31 00:01:22,340 --> 00:01:27,150 >> So vinnige installasie dinge, as jy wil om saam te volg, 32 00:01:27,150 --> 00:01:29,240 of as jy wil om dit te kry op jou eie masjien, 33 00:01:29,240 --> 00:01:32,440 Ek gaan word met behulp van Python 2.7.10. 34 00:01:32,440 --> 00:01:35,860 Fies werk nie met Python 3, maar ek wil 35 00:01:35,860 --> 00:01:38,660 met Python 2, want daar is sommige Python pakkette wat 36 00:01:38,660 --> 00:01:40,910 nog nie werk met 3. 37 00:01:40,910 --> 00:01:44,800 As jy pit geïnstalleer, wat is 'n Python pakket bestuurder, 38 00:01:44,800 --> 00:01:48,190 Ek dink as jou Python is groter as of gelyk aan 2.7.9, 39 00:01:48,190 --> 00:01:52,220 jy het dit reeds geïnstalleer, dit is super maklik om hierdie pakkette te installeer. 40 00:01:52,220 --> 00:01:54,990 >> Jy kan dit doen pit installeer Fies, neut installeer snuiter, 41 00:01:54,990 --> 00:01:58,600 gewoonlik wat jy hoef te sudo net loop sodat die regte werk. 42 00:01:58,600 --> 00:02:01,080 En as jy 'n super ou weergawe van Python, 43 00:02:01,080 --> 00:02:05,100 Ek beveel die opdatering van jou Python, of die gebruik van EasyInstall om pit installeer. 44 00:02:05,100 --> 00:02:09,180 45 00:02:09,180 --> 00:02:11,120 So, die volgende vraag is, wat is Fies? 46 00:02:11,120 --> 00:02:13,280 En ek dink, die eerste 'n redelike vraag het ek gewonder 47 00:02:13,280 --> 00:02:15,585 vir 'n lang tyd is, wat is 'n web app? 48 00:02:15,585 --> 00:02:17,960 Want dit is 'n woord wat ek dink is gegooi om 'n baie 49 00:02:17,960 --> 00:02:19,240 dat ek nie regtig weet. 50 00:02:19,240 --> 00:02:22,340 En ek dink dat die beste voorbeeld van wat 'n web app is, 51 00:02:22,340 --> 00:02:26,960 werklik is CS50 Finansies, waar dit is nie regtig net 'n webwerf, 52 00:02:26,960 --> 00:02:29,320 maar dit is iets wat jy kon soort van interaksie met. 53 00:02:29,320 --> 00:02:31,736 Daar is gebruiker rekeninge en alle vorme van verskillende dinge. 54 00:02:31,736 --> 00:02:35,010 So, presies waar jy teken die lyn tussen wat is 'n webwerf, 55 00:02:35,010 --> 00:02:38,780 en wat is 'n web app, is soort van arbitrêre, maar ek dink die idee, 56 00:02:38,780 --> 00:02:42,110 dit is iets meer as 'n webwerf en dit is 'n nuttige toepassing. 57 00:02:42,110 --> 00:02:46,081 >> So, Fies is 'n raamwerk vir maak web apps met Python. 58 00:02:46,081 --> 00:02:48,330 En hopelik teen die einde van hierdie, sal ek jou te oortuig 59 00:02:48,330 --> 00:02:52,210 dat jy eintlik iets kon skryf soos CS50 Finansies met Python, wat ek 60 00:02:52,210 --> 00:02:53,950 soos 'n baie beter as PHP, persoonlik. 61 00:02:53,950 --> 00:02:57,320 >> So, Fies is, hulle noem 'n microframework, waardeur, 62 00:02:57,320 --> 00:02:59,800 dit beteken dit is baie eenvoudig, maar extensible. 63 00:02:59,800 --> 00:03:02,980 So, dit het net wat jy nodig het, maar as jy wil meer funksies, 64 00:03:02,980 --> 00:03:04,522 dit is maklik om hulle in te bring. 65 00:03:04,522 --> 00:03:06,480 Maar net omdat dit 'n microframework, nie 66 00:03:06,480 --> 00:03:08,960 beteken dat dit is net vir klein projekte. 67 00:03:08,960 --> 00:03:12,590 Ek het 'n skakel hier wat sê dat Obama gebruik Fles in 2012 68 00:03:12,590 --> 00:03:14,410 vir sy veldtog webwerf, wat hopelik, 69 00:03:14,410 --> 00:03:16,937 is iets van 'n endossement. 70 00:03:16,937 --> 00:03:18,770 Maar die ding wat ek regtig graag oor Fies 71 00:03:18,770 --> 00:03:22,401 is dat, beteken dit nie regtig enige soort besluite vir jou. 72 00:03:22,401 --> 00:03:24,150 Net omdat ons praat oor web apps, 73 00:03:24,150 --> 00:03:26,940 Ek het om dit te vergelyk met Ruby on Relings en Django, beide van wat 74 00:03:26,940 --> 00:03:30,450 is groot raamwerke, maar hulle albei te maak aannames 75 00:03:30,450 --> 00:03:33,600 oor hoe jy wil interaksie met databasisse, 76 00:03:33,600 --> 00:03:36,900 hoe jy wil om jou te bied uitsig, en hulle is beslis 77 00:03:36,900 --> 00:03:38,850 goeie aspekte wat. 78 00:03:38,850 --> 00:03:41,490 >> Byvoorbeeld, Ruby on Rails het hierdie aktiewe rekord stelsel, 79 00:03:41,490 --> 00:03:43,100 wat is 'n baie mooi manier om interaksie met data, 80 00:03:43,100 --> 00:03:45,960 maar as jy wil Ruby gebruik op Relings, jy soort van vasgebind in daardie. 81 00:03:45,960 --> 00:03:47,835 Maar met Fies, soos ek sal wys jou met snuiter, 82 00:03:47,835 --> 00:03:49,830 jy kan ook al soort gebruik van die databasis wat jy wil, 83 00:03:49,830 --> 00:03:53,980 en jy kan net trek wat in as 'n uitbreiding in Fies. 84 00:03:53,980 --> 00:03:56,350 >> So dit is waarom ek regtig soos Fies, dit is dat dit 85 00:03:56,350 --> 00:04:01,170 nie aannames te maak vir jou gebaseer op dinge wat jy nie regtig nodig het. 86 00:04:01,170 --> 00:04:04,440 >> So, hoekom moet jy Fies gebruik? 87 00:04:04,440 --> 00:04:08,230 Die voordele is, is dit net werklik die kern eienskappe 88 00:04:08,230 --> 00:04:09,420 gebou in dit wat jy nodig het. 89 00:04:09,420 --> 00:04:11,980 So, het jy nie hoef te bekommer oor verstaan ​​van 'n hele klomp van die dinge 90 00:04:11,980 --> 00:04:13,175 dat jy nie regtig nodig het. 91 00:04:13,175 --> 00:04:15,060 Jy hoef nie te bekommerd te wees oor die draai af funksies 92 00:04:15,060 --> 00:04:16,620 dat jy nie regtig nodig het. 93 00:04:16,620 --> 00:04:21,082 >> En, soos ek genoem het, is dit super maklik om by te voeg in uitbreidings van die dinge 94 00:04:21,082 --> 00:04:21,790 dat jy nodig het. 95 00:04:21,790 --> 00:04:24,700 Sommige van hulle, Fies het hul eie ondersteuning vir dit. 96 00:04:24,700 --> 00:04:28,230 So daar is iets genoem Fies admin, wat daardie admin spieëls 97 00:04:28,230 --> 00:04:32,060 paneel wat Django bied, wat gee jou 'n mooi visuele manier 98 00:04:32,060 --> 00:04:33,405 om jou webwerf te administreer. 99 00:04:33,405 --> 00:04:35,280 Maar weereens, as jy maak iets eenvoudig, 100 00:04:35,280 --> 00:04:39,550 het jy waarskynlik nie 'n groot admin nodig paneel, so ek dink dit is super nice. 101 00:04:39,550 --> 00:04:45,940 En die nadele is dat jy het minder krag uit die boks. 102 00:04:45,940 --> 00:04:49,660 So, wanneer jy die eerste oop Fies, en in jou Python program, 103 00:04:49,660 --> 00:04:53,150 jy net tik van Fies invoer *, of wat ook al, 104 00:04:53,150 --> 00:04:55,957 jy nie presies al kry die eienskappe wat jy dalk wil. 105 00:04:55,957 --> 00:04:58,540 En so moet jy meer uitdruklik n lys van die eienskappe wat jy wil. 106 00:04:58,540 --> 00:05:01,990 So dit is 'n nadeel nie, maar ek dink dat vir die bou van klein web 107 00:05:01,990 --> 00:05:04,782 programme soos ek gaan vertoon jy, dit is nie regtig 'n probleem. 108 00:05:04,782 --> 00:05:07,281 En wat is die laaste ding is veronderstel is om te sê, wat is 'n tikfout, 109 00:05:07,281 --> 00:05:10,240 is dat daar minder gestandaardiseerde konvensies vir hoe om Fies gebruik, 110 00:05:10,240 --> 00:05:12,400 net omdat daar is nie so baie mense dat dit professioneel gebruik 111 00:05:12,400 --> 00:05:13,191 in vergelyking met Django. 112 00:05:13,191 --> 00:05:16,380 So, as jy iets lyk, "hoe kan ek doen x" in Django, 113 00:05:16,380 --> 00:05:18,190 jy sal waarskynlik vind. 114 00:05:18,190 --> 00:05:20,260 >> Daar is 'n goeie ontwerp patrone wat jy kan gebruik, 115 00:05:20,260 --> 00:05:22,660 maar met Fies, dit is soort gaan jou eie manier, 116 00:05:22,660 --> 00:05:24,850 net omdat dit 'n mooi klein biblioteek. 117 00:05:24,850 --> 00:05:27,100 So dit is die nadele, maar ek dink 118 00:05:27,100 --> 00:05:29,370 dat dit nog steeds 'n goeie biblioteek te gebruik. 119 00:05:29,370 --> 00:05:31,909 >> So laat ons net Spring regs in Fies. 120 00:05:31,909 --> 00:05:34,200 Dit is beslis nie van plan om 'n volledige handleiding wees, 121 00:05:34,200 --> 00:05:37,480 maar dit is om jou 'n idee van hoe om dinge te orden, 122 00:05:37,480 --> 00:05:40,790 en so jy gemaklik voel gaan af en kyk na die dokumentasie 123 00:05:40,790 --> 00:05:42,570 en meer uit te vind. 124 00:05:42,570 --> 00:05:48,500 >> So, laat my maak 'n werklik eenvoudige voorbeeld op die eerste, 125 00:05:48,500 --> 00:05:50,737 en wys jou wat dit lyk, en dan sal ons 126 00:05:50,737 --> 00:05:52,070 breek dit af 'n bietjie meer. 127 00:05:52,070 --> 00:05:56,160 >> So dit hier, laat my dit kry loop. 128 00:05:56,160 --> 00:06:06,800 129 00:06:06,800 --> 00:06:09,750 So, ek het nou my aansoek hardloop. 130 00:06:09,750 --> 00:06:15,910 Ek gaan om oop te maak Safari, en dit loop op my plaaslike gasheer. 131 00:06:15,910 --> 00:06:19,360 So ek is net gaan om dit groter te maak. 132 00:06:19,360 --> 00:06:23,960 Maar localhost: 5000 133 00:06:23,960 --> 00:06:27,650 >> En so, nou is dit alles doen is, wanneer jy die webtuiste besoek, 134 00:06:27,650 --> 00:06:31,490 dit druk uit "Hallo Fies," wat nie super nuttig, 135 00:06:31,490 --> 00:06:34,630 maar ek dink dit is cool dat in hierdie klein lêer hier, 136 00:06:34,630 --> 00:06:37,390 ons het 'n web bediener hardloop wat die druk van iets. 137 00:06:37,390 --> 00:06:40,500 So, laat ons eintlik lyk by die kode vir 'n tweede, 138 00:06:40,500 --> 00:06:43,080 en breek dit af 'n bietjie. 139 00:06:43,080 --> 00:06:45,260 Is die grootte goed vir almal hier? 140 00:06:45,260 --> 00:06:51,560 >> So, hopelik, jy is ietwat gemaklik met Python. 141 00:06:51,560 --> 00:06:55,820 Ek neem aan dat ons kan kyk na die Python en lees deur dit. 142 00:06:55,820 --> 00:06:59,290 As jy enige vrae oor enigiets, kan ek ook gaan oor dit. 143 00:06:59,290 --> 00:07:03,974 >> So het die eerste reël is, van Fies, ons invoer, Fies met 'n kapitaal "F" 144 00:07:03,974 --> 00:07:06,140 wat is 'n soort van al die belangrikste eienskappe wat jy nodig het. 145 00:07:06,140 --> 00:07:08,890 Wanneer jy skryf 'n lêer en die gebruik van Fies, 146 00:07:08,890 --> 00:07:12,120 jy gaan wil invoer dat net omdat wat al die vernaamste dinge. 147 00:07:12,120 --> 00:07:15,400 Die volgende ding wat ons doen, is ons noem hierdie funksie te Fies, net 148 00:07:15,400 --> 00:07:19,270 om 'n app voorwerp te skep, en jy is altyd gaan om te wil om dit te doen. 149 00:07:19,270 --> 00:07:25,960 >> En dan, spring af na die onderkant vinnig, hierdie deel hier is, 150 00:07:25,960 --> 00:07:28,760 'if_name _ == "_ main_" wat soort van 'n Python konvensie. 151 00:07:28,760 --> 00:07:32,750 So dit sal slegs voer as jy hardloop hierdie lêer direk met behulp van Python. 152 00:07:32,750 --> 00:07:36,040 Dan noem ons app.run, wat sal eintlik begin die app gaan. 153 00:07:36,040 --> 00:07:39,570 >> So, dit is die belangrikste struktuur wat jy sal hê in enige Fies aansoek, 154 00:07:39,570 --> 00:07:48,550 is jy sal dit app = Fies (_name_), en dan app.run. 155 00:07:48,550 --> 00:07:54,940 >> So, die twee dinge wat ek het hier, is wat ons roetes te bel. 156 00:07:54,940 --> 00:07:57,150 So, laat ons praat oor routing 'n bietjie meer. 157 00:07:57,150 --> 00:07:58,430 Ek kom terug na die skyfie gaan. 158 00:07:58,430 --> 00:08:02,540 >> So het die mees fundamentele konsep in fles routing. 159 00:08:02,540 --> 00:08:06,750 En dit is die idee dat jy toewys funksies in Python 160 00:08:06,750 --> 00:08:11,280 om spesifieke adresse op jou web bladsy. 161 00:08:11,280 --> 00:08:13,930 So, wanneer jy wil om 'n nuwe roete te skep, 162 00:08:13,930 --> 00:08:16,500 jy dit @ app.route gebruik funksie versierder. 163 00:08:16,500 --> 00:08:19,770 So, as jy nie vertroud is nie funksie ontwerpers in Python, 164 00:08:19,770 --> 00:08:24,160 dit is hierdie konsep wat Kom jy 'n funksie te neem 165 00:08:24,160 --> 00:08:26,800 en omring dit met iets anders. 166 00:08:26,800 --> 00:08:30,140 >> So regtig, wat dit versierder doen, is dat dit die funksie onder dit, 167 00:08:30,140 --> 00:08:33,409 en dit voeg meer inligting om dit, maar wat eintlik Fies 168 00:08:33,409 --> 00:08:37,480 maak dit gebeur nie super van kardinale belang, maar wat belangrik is, 169 00:08:37,480 --> 00:08:43,640 is dat voor die roete, jy sit dit @ app.route, en dan 170 00:08:43,640 --> 00:08:46,480 die adres van die roete, so die streep is wat ons 171 00:08:46,480 --> 00:08:48,360 gesien toe ons oopmaak net op die webblad. 172 00:08:48,360 --> 00:08:49,580 So wat is die tuisblad. 173 00:08:49,580 --> 00:08:51,037 Dis net die streep roete. 174 00:08:51,037 --> 00:08:52,370 En dan moet jy hierdie funksie. 175 00:08:52,370 --> 00:08:54,453 Die naam van die funksie kan wees net wat jy wil. 176 00:08:54,453 --> 00:08:56,930 Dit hoef nie noodwendig tot het te doen met die roete. 177 00:08:56,930 --> 00:08:59,440 En dan, wat ook al die funksie se terugkeer, 178 00:08:59,440 --> 00:09:01,730 die funksie moet 'n string terug te keer. 179 00:09:01,730 --> 00:09:03,740 En dat string kan bevat HTML of enigiets nie, 180 00:09:03,740 --> 00:09:06,920 en dit is eintlik wat sal kry terug na jou webblaaier as HTML, 181 00:09:06,920 --> 00:09:08,200 en dit sal lewer nie. 182 00:09:08,200 --> 00:09:12,030 >> So dit is die dieselfde kode dit was uit die voorbeeld 183 00:09:12,030 --> 00:09:16,430 dat ek net gehardloop, so wanneer ons besoek streep dit 'n Hello World funksie noem wat 184 00:09:16,430 --> 00:09:20,470 net terug 'n string, Hello Fies, en wat kry gedruk op die skerm. 185 00:09:20,470 --> 00:09:27,290 >> So daar is nog 'n voorbeeld, wat is, wanneer jy na / hello, 186 00:09:27,290 --> 00:09:30,370 dit druk uit Hallo Woord, wat moet eintlik sê, Hello World, 187 00:09:30,370 --> 00:09:32,010 maar laat ons voorgee dit was opsetlike. 188 00:09:32,010 --> 00:09:35,140 So laat trek wat tot ware vinnig. 189 00:09:35,140 --> 00:09:41,290 >> So as jy gaan na localhost / hello, dit sal nou iets anders te druk. 190 00:09:41,290 --> 00:09:45,680 So dit is net 'n vinnige voorbeeld van hoe kan jy twee verskillende roetes te skep. 191 00:09:45,680 --> 00:09:50,630 >> So, so ver dit is nie super nuttig, daar is nie 'n hele klomp wat jy kan doen, 192 00:09:50,630 --> 00:09:55,360 jy kan net doen alles wat met met verskillende HTML bladsye, 193 00:09:55,360 --> 00:09:58,000 en wanneer jy na 'n spesifieke page is dit net laai die bladsy. 194 00:09:58,000 --> 00:10:00,864 So laat ons sien n paar meer nuttige dinge wat jy kan doen. 195 00:10:00,864 --> 00:10:03,780 So, een ding wat jy mag hê opgemerk in die voorbeeld wat ek getrek 196 00:10:03,780 --> 00:10:07,160 up, is dat ek het app.run (debug = True). 197 00:10:07,160 --> 00:10:09,580 En so, wat hierdie debug argument nie, is 198 00:10:09,580 --> 00:10:14,600 dat wanneer jy jou web bediener te laat hardloop, wanneer jy in jou aansoek, 199 00:10:14,600 --> 00:10:18,100 As jy 'n lêer verander is, sal dit die bediener outomaties herlaai. 200 00:10:18,100 --> 00:10:21,160 >> En so het jy nie eintlik om herlaai Python, wat is super nuttig. 201 00:10:21,160 --> 00:10:24,020 Ek kan sien dat. 202 00:10:24,020 --> 00:10:26,960 Laat my toe om my kode met die tikfout in dit, 203 00:10:26,960 --> 00:10:30,420 en voorgee dat tikfout is daar te vestig doelbewus vir insiggewend doeleindes. 204 00:10:30,420 --> 00:10:31,625 So laat voeg dit terug. 205 00:10:31,625 --> 00:10:33,140 So nou is dit sê Hello World. 206 00:10:33,140 --> 00:10:34,410 Ek sal dit red. 207 00:10:34,410 --> 00:10:36,540 En as ons terug te trek tot die terminale, sal jy 208 00:10:36,540 --> 00:10:39,520 sê dat dit weer te begin, omdat dit 'n verandering bespeur, 209 00:10:39,520 --> 00:10:43,620 en so nou wanneer ons herlaai die bladsy, dit sal die druk van die regte ding. 210 00:10:43,620 --> 00:10:45,630 >> So debug is super nuttig vir daardie. 211 00:10:45,630 --> 00:10:48,740 Ook, as jy enige het soort van 'n ongeluk, so 212 00:10:48,740 --> 00:10:54,370 laat my toe om hierdie aansoek crash deur met dit nie 'n string terug te keer. 213 00:10:54,370 --> 00:10:57,540 So, laat ons net dit terugkeer Geen ander rede. 214 00:10:57,540 --> 00:11:00,810 En dan wanneer ek dit besoek bladsy, sal dit net crash, 215 00:11:00,810 --> 00:11:04,465 maar die bediener nie net crash, dit eintlik gee jou 'n super nuttig terug 216 00:11:04,465 --> 00:11:06,490 spoor van alles wat verkeerd geloop het. 217 00:11:06,490 --> 00:11:10,050 En wat is regtig mooi, is dat op enige stap in hierdie terug spoor, 218 00:11:10,050 --> 00:11:14,260 jy kan oopmaak 'n interaktiewe dop hier, en soort van druk wat 219 00:11:14,260 --> 00:11:17,780 veranderlikes wat jy wil om 'n blik op te neem. 220 00:11:17,780 --> 00:11:21,054 >> En so debugging is regtig nuttig vir die uitzoeken 221 00:11:21,054 --> 00:11:23,470 wat gaan aan met jou bediener, eerder as om net te sien 222 00:11:23,470 --> 00:11:28,201 iets in PHP soos 'n 500 interne bediener fout, wat is super nutteloos. 223 00:11:28,201 --> 00:11:30,700 Een ding om bewus te wees van, is dat as jy jou app aanlyn 224 00:11:30,700 --> 00:11:34,260 so dit is sigbaar vir die publiek, het jy nooit wil debug modus op te verlaat, 225 00:11:34,260 --> 00:11:37,320 want die mense kan eintlik gebruik wat konsole dat ek 226 00:11:37,320 --> 00:11:39,150 gewys het aan arbitrêre kode uit te voer. 227 00:11:39,150 --> 00:11:42,120 >> Sodat hulle kan uit te druk soos enige geheime kodes wat jy het daar, 228 00:11:42,120 --> 00:11:44,755 hulle kan kyk na presies hoe om jou webwerf werk. 229 00:11:44,755 --> 00:11:46,630 So dit is regtig nuttig vir die toets, maar altyd 230 00:11:46,630 --> 00:11:50,090 maak seker om dit uit te neem voordat jy enigiets aanlyn publiseer. 231 00:11:50,090 --> 00:11:56,640 >> So wanneer jy die gebruik van iets soos PHP, daar is hierdie idee 232 00:11:56,640 --> 00:11:58,920 wat jy kan slaag inligting tussen webblaaie 233 00:11:58,920 --> 00:12:03,620 deur om die inligting eintlik in die URL, wat is 'n GET-versoek, 234 00:12:03,620 --> 00:12:07,490 maar in fles, kan jy eintlik iets soort van soos dit te doen, 235 00:12:07,490 --> 00:12:10,590 deur met 'n roete wat 'n veranderlike as deel van dit. 236 00:12:10,590 --> 00:12:14,090 >> So as jy kyk na hierdie byvoorbeeld op die skerm hier 237 00:12:14,090 --> 00:12:19,930 ons het 'n roete wat ('/ hallo /'), en so, as jy besoek 238 00:12:19,930 --> 00:12:23,790 / hallo / iets, dat daar iets gaan eintlik kry gevul 239 00:12:23,790 --> 00:12:25,490 in die naam veranderlike. 240 00:12:25,490 --> 00:12:27,850 En sien dat die funksie wat kom met daardie roete 241 00:12:27,850 --> 00:12:31,302 het om te neem in die parameter noem, sodat dit sal eintlik 242 00:12:31,302 --> 00:12:32,510 kry geslaag in die funksie. 243 00:12:32,510 --> 00:12:34,190 >> En dan, wanneer jy binnekant van daardie funksie, 244 00:12:34,190 --> 00:12:36,420 jy kan hanteer wat soos 'n normale Python veranderlike, 245 00:12:36,420 --> 00:12:39,650 en so dan sal dit druk Hallo, en dit 246 00:12:39,650 --> 00:12:42,000 sal in die naam te vul met behulp van sommige string opmaak. 247 00:12:42,000 --> 00:12:48,060 >> So veranderlike dele toe te voeg tot 'n routing, jy die hoek bracket merk te gebruik. 248 00:12:48,060 --> 00:12:51,220 En opsioneel, jy kan gebruik wat genoem word 'n converter. 249 00:12:51,220 --> 00:12:56,840 En so, as jy dit het body met die kolon, 250 00:12:56,840 --> 00:13:00,015 jy kan spesifiseer dat dit 'n int, of 'n vlot, of die pad, 251 00:13:00,015 --> 00:13:01,640 en dit sal outomaties omskep nie. 252 00:13:01,640 --> 00:13:05,130 Jy kan ook die omskakeling binne die Python-funksie, 253 00:13:05,130 --> 00:13:09,710 net deur die gebruik van 'n cast, maar soms as jy wil om te verseker dat dit 'n int, 254 00:13:09,710 --> 00:13:12,080 wat jy kan sit omskakeling reël daar in. 255 00:13:12,080 --> 00:13:15,930 >> So laat trek 'n voorbeeld van 'n paar veranderlike reëls. 256 00:13:15,930 --> 00:13:21,480 So hier, dit het dieselfde basiese struktuur met die van Fies invoer 257 00:13:21,480 --> 00:13:25,030 Fies, die jeug = fles (_name_), en dan is dit loop aan die einde. 258 00:13:25,030 --> 00:13:28,050 Ons het hierdie twee verskillende veranderlike roetes hier. 259 00:13:28,050 --> 00:13:29,900 En die eerste een, is die een wat ek het 260 00:13:29,900 --> 00:13:34,230 in die skyfie, wat was dat dit neem net in 'n string name 261 00:13:34,230 --> 00:13:35,650 en dit sal druk Hallo, Naam. 262 00:13:35,650 --> 00:13:41,410 >> En dan, die tweede gebruik jy die omskakeling. 263 00:13:41,410 --> 00:13:44,690 So dit sal outomaties omskep dit om 'n int, en dan dubbel die int, 264 00:13:44,690 --> 00:13:46,150 en druk dat uit. 265 00:13:46,150 --> 00:13:48,220 En ons het nie enige soort te doen van bekering daarin 266 00:13:48,220 --> 00:13:49,594 omdat Fies sorg dat. 267 00:13:49,594 --> 00:13:53,181 So laat ons kry hierdie hardloop. 268 00:13:53,181 --> 00:13:54,930 Wanneer jy 'n sak aansoek hardloop, 269 00:13:54,930 --> 00:13:58,440 Jy kan beheer-C uit dit na die bediener loop stop. 270 00:13:58,440 --> 00:14:02,420 En dan sal Ek die veranderlikes te hardloop. 271 00:14:02,420 --> 00:14:11,740 >> So laat ons gaan om localhost / hallo / Esra en Hopelik sal hierdie sê hallo vir my. 272 00:14:11,740 --> 00:14:14,530 273 00:14:14,530 --> 00:14:20,310 >> So het dit in my naam, in die veranderlike roete, en dit maak dit hier. 274 00:14:20,310 --> 00:14:23,950 So ek sal ook wys 'n vinnige voorbeeld van die verdubbeling. 275 00:14:23,950 --> 00:14:28,600 So as jy gaan na / double / 3, dit sal 6 druk. 276 00:14:28,600 --> 00:14:31,440 So het hierdie sorg die omskakeling vir ons. 277 00:14:31,440 --> 00:14:34,190 >> Sodat jy kan dit ook met ' float, en iets spesiaal, 278 00:14:34,190 --> 00:14:37,530 As jy nodig het om iets soos spesifiseer 'n pad, wat kan dit te aanvaar houe, 279 00:14:37,530 --> 00:14:39,155 maar dit behoort nie gewoonlik 'n kwessie wees. 280 00:14:39,155 --> 00:14:41,480 281 00:14:41,480 --> 00:14:43,820 So ver ons, nog net terug 282 00:14:43,820 --> 00:14:46,320 snare, wat nie baie interessant. 283 00:14:46,320 --> 00:14:48,730 >> Ons kon eintlik terug letterlike HTML string. 284 00:14:48,730 --> 00:14:54,322 So in die kode wat ons kan iets voeg soos die b-tag om dit dapper te maak, 285 00:14:54,322 --> 00:14:56,030 maar die meeste van die tyd wat jy nie eintlik wil 286 00:14:56,030 --> 00:14:58,420 te wees skryf HTML-kode in jou Python kode. 287 00:14:58,420 --> 00:15:01,940 Dit regtig slordig, en dit is nie 'n goeie tyd. 288 00:15:01,940 --> 00:15:06,430 >> Fies ons toelaat om uit te skei die HTML in wat die Template genoem, 289 00:15:06,430 --> 00:15:09,467 en so as jy dink in terme van die MVC model 290 00:15:09,467 --> 00:15:11,550 wat jy ken, hopelik, van die werk 291 00:15:11,550 --> 00:15:15,520 met CS50 Finansies 'n bietjie, jy kan dink van die Python lêers 292 00:15:15,520 --> 00:15:19,430 as meer van die Kontroleur waar hulle interaksie met alles wat 293 00:15:19,430 --> 00:15:20,970 data model wat jy mag hê. 294 00:15:20,970 --> 00:15:24,900 >> En dan is hulle uit te roep om Views en inligting deurgee aan dié View 295 00:15:24,900 --> 00:15:28,120 in die inligting in te vul in HTML wat dit nodig het. 296 00:15:28,120 --> 00:15:30,490 En wat ons diegene Views noem is Templates in die klas. 297 00:15:30,490 --> 00:15:35,280 >> So Fies gebruik 'n ander Python module dat dit sal outomaties 298 00:15:35,280 --> 00:15:38,620 installeer wanneer jy PIP installeer Fies genoem Jinja, wat 299 00:15:38,620 --> 00:15:40,885 Kom jy hierdie voeg annotasies om die HTML 300 00:15:40,885 --> 00:15:45,140 wat jy sien op die skerm, wat kan jy sit in dinge soos conditionals, 301 00:15:45,140 --> 00:15:47,230 en lusse in die HTML. 302 00:15:47,230 --> 00:15:51,140 >> So dit lyk 'n bietjie soos hoe jy kan gebruik PHP binne 'n HTML-lêer, 303 00:15:51,140 --> 00:15:57,380 maar dit is net wanneer die fles bediener dien tot die HTML-lêer, 304 00:15:57,380 --> 00:16:01,610 dit sal die template engine hardloop en ontleed deur middel van hierdie en vul dinge in. 305 00:16:01,610 --> 00:16:06,650 So het 'n Fies render_template funksie dat jy hier aan die onderkant kan sien. 306 00:16:06,650 --> 00:16:14,300 En so wanneer jy hierdie bladsy besoek, is dit sou dit hello.html Sjabloon lewer, 307 00:16:14,300 --> 00:16:16,407 en dan in hierdie HTML bladsy te vul. 308 00:16:16,407 --> 00:16:18,990 So laat ons net loop dit werklik vinnig, en kyk hoe dit lyk, 309 00:16:18,990 --> 00:16:21,198 en dan sal ek gaan deur 'n bietjie in meer detail. 310 00:16:21,198 --> 00:16:25,380 311 00:16:25,380 --> 00:16:30,260 So, jou Templates gaan om te gaan in 'n Templates gids. 312 00:16:30,260 --> 00:16:33,980 Dit sal outomaties in die kyk Gids templates vir daardie Sjabloon. 313 00:16:33,980 --> 00:16:35,615 So laat oop hierdie up. 314 00:16:35,615 --> 00:16:47,350 315 00:16:47,350 --> 00:16:50,005 So, ek sal die template byvoorbeeld hardloop. 316 00:16:50,005 --> 00:16:52,820 317 00:16:52,820 --> 00:17:03,660 >> So as ek gaan na / hallo / Esra, dit het hierdie verskriklike, 318 00:17:03,660 --> 00:17:05,930 onaangenaam markiestent tag wat ek in. 319 00:17:05,930 --> 00:17:08,050 Baie mooi, baie dinamies. 320 00:17:08,050 --> 00:17:09,349 Ek is 'n groot fan. 321 00:17:09,349 --> 00:17:13,900 Maar wat gebeur as Ek gaan net na, / hallo? 322 00:17:13,900 --> 00:17:15,220 So is dit net sê Hello World. 323 00:17:15,220 --> 00:17:17,678 Ek het nie slaag hom 'n naam en dit maak dit outomaties. 324 00:17:17,678 --> 00:17:22,050 So laat ons sien hoe dit gedoen het, en hoe ons kan dalk raak van daardie markiestent kry. 325 00:17:22,050 --> 00:17:26,240 >> So hier is dit soort van 'n interessante voorbeeld van, 326 00:17:26,240 --> 00:17:29,101 As jy vertroud is met hoe skakelaar is state werk in 'n taal. 327 00:17:29,101 --> 00:17:31,350 Sê dit is soort van soos, dat die soort van 'n val deur, 328 00:17:31,350 --> 00:17:34,266 waar jy eintlik verbonde twee verskillende roetes na dieselfde funksie. 329 00:17:34,266 --> 00:17:41,190 Sodat ons die / hallo roete heg en die / hallo / naam roete Hallo, 330 00:17:41,190 --> 00:17:45,130 en ons spesifiseer using-- Python kan jy spesifiseer verstek funksie arguments-- 331 00:17:45,130 --> 00:17:48,300 so as daar is geen naam, so As ons gaan net / hello, 332 00:17:48,300 --> 00:17:50,680 dit sal outomaties filter naam is gelyk aan een. 333 00:17:50,680 --> 00:17:55,010 >> So dan, lewer ons die Sjabloon met name = Naam 334 00:17:55,010 --> 00:17:59,510 so dit sal slaag in die parameter naam gelyk aan die funksie naam parameter, 335 00:17:59,510 --> 00:18:00,730 in die sjabloon. 336 00:18:00,730 --> 00:18:04,040 Wat nog nie verduidelik hoe besluit of Hello World druk, 337 00:18:04,040 --> 00:18:05,100 of druk my naam. 338 00:18:05,100 --> 00:18:08,050 So laat eintlik lyk in die Sjabloon self, 339 00:18:08,050 --> 00:18:11,610 en sien wat kom. 340 00:18:11,610 --> 00:18:18,680 >> So, in hierdie Sjabloon ons eintlik 'n paar voorwaardelike logika, 341 00:18:18,680 --> 00:18:20,580 waarvan sommige mense sou argumenteer, wat jy eintlik 342 00:18:20,580 --> 00:18:23,730 moet nie 'n baie van voorwaardelike logika in jou Sjabloon self. 343 00:18:23,730 --> 00:18:26,310 Dit moet meer binne die wees Kontroleerder, maar vir hierdie voorbeeld 344 00:18:26,310 --> 00:18:27,476 dit is iets wat redelik klein. 345 00:18:27,476 --> 00:18:31,060 So hier, ons gaan, as die naam, so As die naam is nie gelyk aan Geen, 346 00:18:31,060 --> 00:18:33,130 As 'n naam is eintlik geslaag, dan sal ons 347 00:18:33,130 --> 00:18:36,210 Sê hallo, Noem die kop en die markiestent, 348 00:18:36,210 --> 00:18:41,490 al hierdie normale HTML, anders, sal ons druk Hallo, wêreld, net soos gewoonlik. 349 00:18:41,490 --> 00:18:45,820 So 'n paar dinge om te sien hier oor hoe jy die template formaat, 350 00:18:45,820 --> 00:18:49,110 is dat al hierdie voorwaardelike stellings, 351 00:18:49,110 --> 00:18:54,475 soort van soos hoe ons PHP toe jy wil 'n PHP voeg, 352 00:18:54,475 --> 00:18:58,380 jy die minder-as gebruik vraag merk, dit is soort van analoog hier 353 00:18:58,380 --> 00:19:00,140 met die {%. 354 00:19:00,140 --> 00:19:02,130 >> So hier, ons het ons voorwaardelike kode. 355 00:19:02,130 --> 00:19:05,920 En dan, wanneer jy eintlik wil letterlik iets te evalueer, en druk 356 00:19:05,920 --> 00:19:08,710 dit uit na die skerm, kan jy gebruik die dubbel draadjies. 357 00:19:08,710 --> 00:19:12,310 So hier is die dubbele draadjies, en dan die naam spesifiseer ons 358 00:19:12,310 --> 00:19:15,500 so in daardie, sal dit evalueer die veranderlike naam, wat 359 00:19:15,500 --> 00:19:18,860 geslaag in die lewer sjabloon funksie, 360 00:19:18,860 --> 00:19:21,484 eerder as om net te druk uit as ons ontslae geraak het van hierdie, 361 00:19:21,484 --> 00:19:23,150 Dit sou net die druk van die woord "naam." 362 00:19:23,150 --> 00:19:26,340 So, dit is iets om te kyk uit vir. 363 00:19:26,340 --> 00:19:29,792 >> So 'n ander ding om kennisgewing is dat, wanneer ons 364 00:19:29,792 --> 00:19:31,500 wil die gebruik render_template funksie, 365 00:19:31,500 --> 00:19:34,490 ons eintlik moet invoer dit uitdruklik van Fies. 366 00:19:34,490 --> 00:19:36,915 En dit is 'n voorbeeld van die modulariteit van Fies, 367 00:19:36,915 --> 00:19:39,290 dat jy nie moet invoer dinge wat jy nodig het nie. 368 00:19:39,290 --> 00:19:41,290 Jy kan bring net in die funksies wat jy eintlik 369 00:19:41,290 --> 00:19:43,450 nodig het nie, wat soms mooi, sodat jy dit nie doen nie 370 00:19:43,450 --> 00:19:46,560 het om al hierdie funksies sit om dat jy nie die gebruik van, 371 00:19:46,560 --> 00:19:49,730 maar ook, as jy dat jy vergeet moet render_template invoer, 372 00:19:49,730 --> 00:19:52,660 jy sal waarskynlik 'n waarskuwing te kry wat sal jou laat weet oor daardie. 373 00:19:52,660 --> 00:19:56,700 So, dit is template. 374 00:19:56,700 --> 00:20:01,680 >> So, ons het gewys hoe om maak eenvoudige web bladsye, 375 00:20:01,680 --> 00:20:04,947 en voeg 'n bietjie meer logika dit in terme van die veranderlike routing. 376 00:20:04,947 --> 00:20:08,280 Dit kan jy doen verskillende dinge wat gebaseer is op wat URL wat jy dan na, en ook gee 377 00:20:08,280 --> 00:20:11,950 die HTML 'n bietjie meer sin in terme van hoe jy wil om dinge te lewer. 378 00:20:11,950 --> 00:20:14,210 Jy hoef nie al sit HTML in jou Python, 379 00:20:14,210 --> 00:20:16,640 maar pretty much elke web aansoek, 380 00:20:16,640 --> 00:20:21,480 jy gaan 'n soort wil van data model wat verband hou met dit. 381 00:20:21,480 --> 00:20:25,560 >> En so tradisioneel, sou dit iets soos 'n SQL databasis. 382 00:20:25,560 --> 00:20:30,280 En jy kan net interaksie direk met SQL. 383 00:20:30,280 --> 00:20:32,190 Python het, ek dink dit is genoem. 384 00:20:32,190 --> 00:20:33,040 SQLite 3. 385 00:20:33,040 --> 00:20:38,454 Jy kan net die invoer van SQLite 3 en voer SQL navrae direk, 386 00:20:38,454 --> 00:20:40,870 maar ek weet nie van julle nie, maar ek het regtig nie wil, net, 387 00:20:40,870 --> 00:20:42,750 uitskryf SQL navrae. 388 00:20:42,750 --> 00:20:45,350 Dit is geneig om werklik lank en ingewikkeld. 389 00:20:45,350 --> 00:20:49,180 >> En so, iets wat Ek hou daarvan om te gebruik, is wat is 390 00:20:49,180 --> 00:20:53,610 bekend as 'n ORM, wat 'n voorwerp-relational mapping. 391 00:20:53,610 --> 00:20:56,890 En die punt van 'n voorwerp-relational mapping, 392 00:20:56,890 --> 00:21:00,100 is dat daar twee verskillende maniere waarop jy kan dink oor databasisse. 393 00:21:00,100 --> 00:21:03,240 >> So het die voorbeeld wat Professor Malan gewoonlik 394 00:21:03,240 --> 00:21:07,660 gebruik in die klas, is die Excel-tabel, waar jy het hierdie rye en hierdie kolomme, 395 00:21:07,660 --> 00:21:10,210 en dit is regtig nuttig vir hoe dit verteenwoordig in SQL 396 00:21:10,210 --> 00:21:13,170 en hoe jy met dit nie, maar 'n ander manier dat dit eintlik 397 00:21:13,170 --> 00:21:16,390 nuttig om soms daaroor dink, is in terme van klasse en objekte. 398 00:21:16,390 --> 00:21:20,420 >> So in plaas van denke van elke tabel as ' 399 00:21:20,420 --> 00:21:23,040 hierdie ry het dat sekere inligting, kan jy eintlik 400 00:21:23,040 --> 00:21:26,100 dink aan dit as elke tafel is 'n klas, 401 00:21:26,100 --> 00:21:29,810 en dan elke geval van die klas het sekere eienskappe. 402 00:21:29,810 --> 00:21:35,110 So, in hierdie voorbeeld, die gevalle van die klas is die rye in die tabel, 403 00:21:35,110 --> 00:21:37,490 en dan elke eiendom sou 'n kolom in die tabel. 404 00:21:37,490 --> 00:21:40,840 >> So, die ORM dat ek graag gebruik word snuiter genoem. 405 00:21:40,840 --> 00:21:43,520 Dit is regtig klein, soort van soos Fies. 406 00:21:43,520 --> 00:21:46,760 Ek dink dat hulle gaan goed saam, maar daar is 'n baie ander Orms 407 00:21:46,760 --> 00:21:47,730 wat jy kan gebruik. 408 00:21:47,730 --> 00:21:52,180 'N Meer gewilde een is bekend as SQLAlchemy, 409 00:21:52,180 --> 00:21:56,050 en ek kan nie onthou hoekom ek oorspronklik gekies snuiter oor SQLAlchemy, 410 00:21:56,050 --> 00:21:58,311 of ek sal jou hoekom ek sê dink dit is die beste een, 411 00:21:58,311 --> 00:22:01,060 maar ons is net gaan om dit te gebruik een, want ek weet hoe om dit te gebruik. 412 00:22:01,060 --> 00:22:04,760 >> So, een vraag is, hoekom moet jy die moeite met 'n ORM, 413 00:22:04,760 --> 00:22:07,552 in plaas van net direk skryf SQL navrae? 414 00:22:07,552 --> 00:22:09,760 En ek dink die beste geval, is dat jy eintlik nie 415 00:22:09,760 --> 00:22:11,356 moet SQL navrae te skryf. 416 00:22:11,356 --> 00:22:14,480 Dit is baie makliker, want ek sal jou wys, om dinge te doen soos seleksie, plasing, 417 00:22:14,480 --> 00:22:16,157 skrap, veral die skep van tabelle. 418 00:22:16,157 --> 00:22:17,990 Dit is baie makliker om skryf 'n klas struktuur, 419 00:22:17,990 --> 00:22:22,250 as wat dit is om die struktuur 'n Skep Table stelling nie, maar een ding 420 00:22:22,250 --> 00:22:25,710 om bewus te wees van, is dat die ORM sal probeer om sy beste 421 00:22:25,710 --> 00:22:28,640 om uit te vind wat die mees doeltreffende SQL navraag sou wees, 422 00:22:28,640 --> 00:22:30,110 maar soms is dit kry dit verkeerd. 423 00:22:30,110 --> 00:22:32,660 >> En veral as jy ' werk met 'n groot databasis, 424 00:22:32,660 --> 00:22:35,557 kan jy sien dat 'n navraag wat moet vinnig hardloop, 425 00:22:35,557 --> 00:22:36,640 is eintlik meer neem. 426 00:22:36,640 --> 00:22:40,164 En as jy kyk onder die enjinkap hoe die ORM is die interpretasie wat in SQL, 427 00:22:40,164 --> 00:22:42,080 dit dalk iets te doen regtig belaglik, 428 00:22:42,080 --> 00:22:44,371 net omdat dit soort van beduie jou bedoelings verkeerd. 429 00:22:44,371 --> 00:22:48,080 En daar tye waar gewees Ek moes dit ignoreer, en net 430 00:22:48,080 --> 00:22:52,429 voer my eie SQL navrae, net want dit is die ontleding van 'n vreemde manier. 431 00:22:52,429 --> 00:22:54,220 So, daar is 'n oorhoofse, net in die pad 432 00:22:54,220 --> 00:22:58,680 dat dit stel jou state af in SQL. 433 00:22:58,680 --> 00:23:06,200 >> So, laat ons kyk super vinnig op 'n eenvoudige voorbeeld van 'n data model 434 00:23:06,200 --> 00:23:07,350 wat jy kan gebruik. 435 00:23:07,350 --> 00:23:11,880 So, dit is Python kode, en so die eerste ding wat jy wil doen, is uit 436 00:23:11,880 --> 00:23:12,950 snuiter invoer *. 437 00:23:12,950 --> 00:23:15,850 So, in teenstelling met Fies, waar jy al hierdie individuele modules, 438 00:23:15,850 --> 00:23:18,125 en jy wil Fies invoer, en skryf 'n Sjabloon, en 'n paar ander 439 00:23:18,125 --> 00:23:20,690 dat ons sal later sien, van snuiter, jy kan net alles in te voer, 440 00:23:20,690 --> 00:23:22,290 want dit is 'n mooi klein biblioteek. 441 00:23:22,290 --> 00:23:26,490 >> So, die eerste ding wat jy wil doen, is eintlik die skep van hierdie databasis voorwerp. 442 00:23:26,490 --> 00:23:31,212 So, jy het db = SqliteDatabase, en dan die naam van jou databasis. 443 00:23:31,212 --> 00:23:33,170 En dit sal eintlik skep 'n databasis voorwerp 444 00:23:33,170 --> 00:23:36,230 wat jy kan interaksie met, met snuiter. 445 00:23:36,230 --> 00:23:40,570 >> En dan het ons die werklike model wat ons wil skep. 446 00:23:40,570 --> 00:23:42,470 So die tafel wil ons te skep. 447 00:23:42,470 --> 00:23:47,270 So, binne snuiter, elke klas het sy eie tafel in jou databasis. 448 00:23:47,270 --> 00:23:52,800 So, al die klasse erwe van die basis model, 449 00:23:52,800 --> 00:23:55,960 en die hoofstad M model is iets wat omskryf in snuiter. 450 00:23:55,960 --> 00:24:02,162 >> So, al jou modelle moet beërwe as hul hoogste superklas, 451 00:24:02,162 --> 00:24:04,620 hulle moet erf uit die model, maar wat is regtig cool, 452 00:24:04,620 --> 00:24:07,610 is dat jy eintlik kan jou modelle erwe van mekaar. 453 00:24:07,610 --> 00:24:10,530 En 'n baie van die tyd, jou data modelle nie noodwendig 454 00:24:10,530 --> 00:24:13,754 maak 'n mooi erfenis hiërargie, maar keer waar hulle te doen, dit is regtig mooi, 455 00:24:13,754 --> 00:24:15,920 omdat jy die model inherent van mekaar. 456 00:24:15,920 --> 00:24:19,710 >> So, ons hierdie klas gedefinieer 'n student, 'n model wat erf, 457 00:24:19,710 --> 00:24:21,170 en dit het drie eienskappe. 458 00:24:21,170 --> 00:24:24,080 Dit het 'n ID, wat 'n PrimaryKeyField, wat 459 00:24:24,080 --> 00:24:26,920 is iets wat verskaf deur snuiter, naam is 'n CharField, 460 00:24:26,920 --> 00:24:28,490 en 'n graad is 'n IntegerField. 461 00:24:28,490 --> 00:24:32,260 So dit kan of mag wees nie hoe CS50 eintlik slaan al 462 00:24:32,260 --> 00:24:33,650 grade van die studente se. 463 00:24:33,650 --> 00:24:36,060 Dit is nie, maar dit is hoe ek dit sou doen. 464 00:24:36,060 --> 00:24:37,920 >> En dan is dit binne hierdie klas, en dit 465 00:24:37,920 --> 00:24:41,620 is iets wat jy kan doen met Python, kan jy geneste klasse het. 466 00:24:41,620 --> 00:24:43,920 En dit is iets wat nodig is deur die snuiter. 467 00:24:43,920 --> 00:24:47,250 So, hierdie klas Meta, jy het om te bepaal dat die databasis is 468 00:24:47,250 --> 00:24:49,830 gelyk aan die voorwerp wat ons hierbo geskep. 469 00:24:49,830 --> 00:24:54,339 En dit sê wat lêer is hierdie tabel eintlik gaan word vervat in. 470 00:24:54,339 --> 00:24:57,130 So dit is iets wat jy om te doen binne almal van jou modelle. 471 00:24:57,130 --> 00:24:59,380 Jy moet net spesifiseer Binne hierdie Meta klas 472 00:24:59,380 --> 00:25:01,400 dat databasis is gelyk aan db. 473 00:25:01,400 --> 00:25:03,940 So, wat ek gewoonlik doen, as ek 'n klomp van verskillende modelle, 474 00:25:03,940 --> 00:25:05,910 is dat ek een basis model, wat ek gewoonlik 475 00:25:05,910 --> 00:25:08,839 net noem "basis-model" wat die Meta klas, 476 00:25:08,839 --> 00:25:10,380 en dit stel die databasis gelyk aan db. 477 00:25:10,380 --> 00:25:13,710 En dan is almal van my daaropvolgende modelle sal erf wat basis klas. 478 00:25:13,710 --> 00:25:16,760 En dan het ek nie hoef te bekommer oor die opstel van die Meta klas. 479 00:25:16,760 --> 00:25:21,490 >> Dus, wanneer dit werklik kry saamgestel af in 'n SQL-stelling, 480 00:25:21,490 --> 00:25:24,875 dit lyk soos hierdie nare ding af hier, "Skep tabel student ID heelgetal, 481 00:25:24,875 --> 00:25:26,020 "Wat ook al. 482 00:25:26,020 --> 00:25:30,002 >> En ek dink dit is korter, hierdie SQL navraag reg hier, 483 00:25:30,002 --> 00:25:32,960 maar as jy kyk na hierdie klas hier jy kan sien presies wat aangaan. 484 00:25:32,960 --> 00:25:36,116 Jy kan wat vorme van velde te sien daar is, wat hulle genoem word, 485 00:25:36,116 --> 00:25:38,115 en so, dink ek dat kyk na hierdie Python kode 486 00:25:38,115 --> 00:25:43,340 is 'n baie meer leesbare as probeer om hierdie SQL navraag te skryf. 487 00:25:43,340 --> 00:25:45,990 >> Dus, ten einde te eintlik gebruik die databasis, 488 00:25:45,990 --> 00:25:48,470 ons het om aan te sluit om dit binne Python. 489 00:25:48,470 --> 00:25:52,770 So, ek skryf gewoonlik 'n funksie genoem initialize_db dat twee dinge doen. 490 00:25:52,770 --> 00:25:54,880 Dit neem in die databasis voorwerp db en dit 491 00:25:54,880 --> 00:25:58,360 verbind om dit, wat net maak up artikel na die databasis. 492 00:25:58,360 --> 00:26:00,860 As jy net loop al webwerf op jou plaaslike rekenaar, 493 00:26:00,860 --> 00:26:04,320 dit is nie 'n super groot deal te bekommer oor 'n verbinding en ontkoppel, 494 00:26:04,320 --> 00:26:06,885 maar as jy ' dit op 'n webwerf, jy 495 00:26:06,885 --> 00:26:10,010 wil seker maak dat wanneer 'n gebruiker verbind om dit, wanneer hulle uit te sluit 496 00:26:10,010 --> 00:26:12,270 die webwerf, hulle ontkoppel sodat jy nie 'n klomp van die mense verbonde nie 497 00:26:12,270 --> 00:26:14,480 aan jou databasis in 'n keer. 498 00:26:14,480 --> 00:26:16,370 >> En dan, wanneer jy toegang tot die databasis, 499 00:26:16,370 --> 00:26:20,832 jy wil om te bel db.create_tables, en noem die modelle vir wat jy wil 500 00:26:20,832 --> 00:26:21,540 om tabelle te skep. 501 00:26:21,540 --> 00:26:23,950 So hier, ek wil net skep dit vir hierdie student. 502 00:26:23,950 --> 00:26:28,070 En dan, wat belangrik is, is om spesifiseer veilige = True mees tyd. 503 00:26:28,070 --> 00:26:30,380 So, wat hierdie stelling sal doen, is dat dit 504 00:26:30,380 --> 00:26:33,580 skep tafels vir die student model, maar slegs 505 00:26:33,580 --> 00:26:36,109 as dit tafel het nie reeds geskep. 506 00:26:36,109 --> 00:26:37,400 Dit is wat die veilige spesifiseer. 507 00:26:37,400 --> 00:26:39,150 So dit sal nie oorskryf jou bestaande tafel, 508 00:26:39,150 --> 00:26:41,525 dit sal net 'n nuwe tabel indien daar nie een is daar. 509 00:26:41,525 --> 00:26:45,090 So, kan jy net ' die tafels keer met behulp van SQL. 510 00:26:45,090 --> 00:26:49,410 En dan dat databasis sitting daar, en dan koppel aan elke keer, 511 00:26:49,410 --> 00:26:52,450 maar dit is gewoonlik net mooi sit in hierdie create_tables oproep, 512 00:26:52,450 --> 00:26:55,550 sodat, as jy ooit verwyder jou databasis wanneer jy jou web hardloop 513 00:26:55,550 --> 00:26:57,960 app weer, sal dit te herskep. 514 00:26:57,960 --> 00:27:00,730 >> So, maak net seker dat 'n veilige gespesifiseer True te wees, 515 00:27:00,730 --> 00:27:03,580 of sal jy jou data net vind om oók deurloop elke keer. 516 00:27:03,580 --> 00:27:06,380 En dan kan jy net bel initialize_db om vas te stel 517 00:27:06,380 --> 00:27:09,820 'n verband, en die skep tafels, indien nodig. 518 00:27:09,820 --> 00:27:13,150 >> So, die mees algemene ding dat jy sal wil hê om te doen, 519 00:27:13,150 --> 00:27:15,920 of een van die mees algemene dinge, is om werklik te voeg dinge 520 00:27:15,920 --> 00:27:17,170 in jou databasis. 521 00:27:17,170 --> 00:27:19,430 En so, eerder as om 'n insetsel skryf IN 522 00:27:19,430 --> 00:27:21,990 stelling met al die waardes aangedui, 523 00:27:21,990 --> 00:27:24,650 jy kan eintlik noem funksie op die student klas. 524 00:27:24,650 --> 00:27:28,200 So, wanneer jy 'n klas te skep dat erf van model, 525 00:27:28,200 --> 00:27:30,200 dit het hierdie metode te skep. 526 00:27:30,200 --> 00:27:33,870 >> So, jy klas name.create te doen, en jy het die parameters spesifiseer 527 00:27:33,870 --> 00:27:35,260 wat jy wil om te slaag in. 528 00:27:35,260 --> 00:27:39,200 So, as ek wil 'n paar studente by te voeg ons CS50 graad boek byvoorbeeld 529 00:27:39,200 --> 00:27:41,820 Ek sal in Dawid het, wat 'n baie goeie graad, het hy 'n 95. 530 00:27:41,820 --> 00:27:45,100 En ek, wat is dit nie te doen so goed in CS50, ek het 'n 50. 531 00:27:45,100 --> 00:27:47,600 En so, die lekker ding van wat dit skep funksie doen, 532 00:27:47,600 --> 00:27:53,040 is dat dit gee die geval, of die ry, dat dit geskep binne die tafel, 533 00:27:53,040 --> 00:27:55,750 en so dan in 'n winkel wat jy veranderlike, en later werk met dit. 534 00:27:55,750 --> 00:27:58,830 Jy kan rond te verander, wat Ek sal 'n voorbeeld van wys. 535 00:27:58,830 --> 00:28:03,050 >> Let daarop dat ek nie het die ID spesifiseer, 536 00:28:03,050 --> 00:28:09,340 want sedert dit die PrimaryKeyField, sal dit outomaties 537 00:28:09,340 --> 00:28:10,930 inkrementeer dit as jy nie spesifiseer nie. 538 00:28:10,930 --> 00:28:12,250 En, in werklikheid, het jy waarskynlik moet nie spesifiseer nie, 539 00:28:12,250 --> 00:28:14,810 omdat jy dalk per ongeluk afranselen iemand anders se ID. 540 00:28:14,810 --> 00:28:16,830 En wat jy wil maak seker dat dit is uniek. 541 00:28:16,830 --> 00:28:20,662 >> So, eintlik, die mees algemene ding wat jy wil doen, 542 00:28:20,662 --> 00:28:22,620 is waarskynlik Kies uit van die databasis sodra jy 543 00:28:22,620 --> 00:28:24,078 het 'n baie inligting daar. 544 00:28:24,078 --> 00:28:27,360 En so, as jy wil alles te kry, so die ekwivalent van die kies ster 545 00:28:27,360 --> 00:28:30,940 van studente verklaring, is dit sou net student.select. 546 00:28:30,940 --> 00:28:34,380 En dat jy sal terug te gee 'n verskeidenheid met al die student voorwerpe in dit 547 00:28:34,380 --> 00:28:35,770 dat jy Itereer oor wat jy wil. 548 00:28:35,770 --> 00:28:37,019 Jy kan dinge kry uit dit. 549 00:28:37,019 --> 00:28:39,310 En die meeste van die tyd, het jy nie net wil kies om te doen, 550 00:28:39,310 --> 00:28:40,935 jy eintlik iets wil spesifiseer. 551 00:28:40,935 --> 00:28:44,580 En so, kan jy ketting Saam maak hierdie funksie oproepe, 552 00:28:44,580 --> 00:28:48,830 soos hoe jy sou ketting saam die stellings in SQL. 553 00:28:48,830 --> 00:28:53,002 Sodat jy kan student.select doen (). Waar in hierdie voorbeeld. 554 00:28:53,002 --> 00:28:54,710 En dan, jy kan spesifiseer die voorwaardes, 555 00:28:54,710 --> 00:28:57,880 net die gebruik van die normale Python Boolse om dinge te kyk. 556 00:28:57,880 --> 00:29:02,110 >> So, in hierdie geval, jy wil beperk wat jy kies om, 557 00:29:02,110 --> 00:29:06,790 waar student.grade is gelyk aan 50, en student.name is gelyk aan Esra, 558 00:29:06,790 --> 00:29:09,130 sodat sal net kry my uit dit uit. 559 00:29:09,130 --> 00:29:11,340 En sien, die een baie subtiele ding hier is 560 00:29:11,340 --> 00:29:15,570 dat, as jy wil spesifiseer 'n en / en of 'n of / of, 561 00:29:15,570 --> 00:29:19,840 in Python, sou jy gewoonlik gebruik, Ek dink die woord "en" eintlik, 562 00:29:19,840 --> 00:29:23,351 maar hier die enkele ampersand gebruik, wat is gewoonlik 'n bis operateur, 563 00:29:23,351 --> 00:29:25,600 maar in hierdie spesiale geval, net die manier waarop snuiter dit doen, 564 00:29:25,600 --> 00:29:27,660 jy die enkele gebruik ampersand spesifiseer "en". 565 00:29:27,660 --> 00:29:29,451 Dit is iets wat Ek kry deurmekaar 'n baie, 566 00:29:29,451 --> 00:29:32,530 maar dit beteken nie opkom dat baie in die praktyk. 567 00:29:32,530 --> 00:29:36,350 >> En dan, wanneer jy al die studente uit die databasis, 568 00:29:36,350 --> 00:29:39,420 Sodra jy dit gedoen wat jy kies is en jou dra of wat ook al, 569 00:29:39,420 --> 00:29:42,334 jy kan 'n foreach lus te gebruik, net soos normaal in Python, 570 00:29:42,334 --> 00:29:44,500 met enige soort van Iterator of met enige soort van verskeidenheid. 571 00:29:44,500 --> 00:29:46,333 Sodat jy kan doen, want s in student.select (). whe 572 00:29:46,333 --> 00:29:52,930 re (Student.grade <75), en dit sal dus Itereer oor elke student in die tabel 573 00:29:52,930 --> 00:29:56,260 wie graad is minder as 75, wat in hierdie geval, is nog net vir my. 574 00:29:56,260 --> 00:29:59,218 En dan kan jy iets doen binne wat lus, soos stuur vir my 'n e- 575 00:29:59,218 --> 00:30:01,680 en sê vir my om werklik draai in my Probleem Sets. 576 00:30:01,680 --> 00:30:04,550 >> So, 'n ander ding wat jy kan te doen, is dit is regtig maklik 577 00:30:04,550 --> 00:30:06,460 rye in die tabel 'werk. 578 00:30:06,460 --> 00:30:08,720 So, onthou hier terug, jou wanneer ek ingevoeg, 579 00:30:08,720 --> 00:30:11,440 Ek het die waarde wat teruggekeer met student.create, 580 00:30:11,440 --> 00:30:14,920 en ek opgedra dit genoem Esra. 581 00:30:14,920 --> 00:30:18,995 En so is, kan jy die verander waardes binne daardie geval, 582 00:30:18,995 --> 00:30:20,870 net soos jy sou 'n normale klas in Python. 583 00:30:20,870 --> 00:30:25,060 >> So jy kan stel ezra.grade = 95 en wat sal die plaaslike kopie te werk, 584 00:30:25,060 --> 00:30:28,380 maar as jy eintlik wil pleeg dat verandering databasis, 585 00:30:28,380 --> 00:30:31,410 jy het om te ezra.save noem, sodat jy die metode genoem .save 586 00:30:31,410 --> 00:30:32,650 op die instansie. 587 00:30:32,650 --> 00:30:38,085 >> En so nou het ek suksesvol verander my eie graad binne die databasis. 588 00:30:38,085 --> 00:30:41,210 So, laat ons sê dat ek gevang verander my graad binne die databasis. 589 00:30:41,210 --> 00:30:44,126 Professor Malan is waarskynlik gaan om te wil my uit die klas verwyder, 590 00:30:44,126 --> 00:30:48,630 en so kan jy die .delete noem byvoorbeeld metode net op daardie ding. 591 00:30:48,630 --> 00:30:51,674 >> Dus, as jy wil gaan terug in die loop hier, 592 00:30:51,674 --> 00:30:53,465 en eintlik, in plaas van e-pos te stuur al 593 00:30:53,465 --> 00:30:56,577 van die studente wie se graad is minder as 75, wat jy wou om dit te skrap, 594 00:30:56,577 --> 00:30:58,660 in hierdie lus wat jy kan noem s.delete byvoorbeeld. 595 00:30:58,660 --> 00:31:04,180 596 00:31:04,180 --> 00:31:07,780 En die laaste ding wat jy wil doen, is wanneer jy 'n verband te vestig, 597 00:31:07,780 --> 00:31:10,350 en jy klaar is met jou werk, jy wil om te bel db.close, 598 00:31:10,350 --> 00:31:13,190 waar db is dat databasis beswaar dat ons voorheen gehad het. 599 00:31:13,190 --> 00:31:18,290 En jy wil seker maak dat alles raak gesluit uit. 600 00:31:18,290 --> 00:31:18,790 >> Koel. 601 00:31:18,790 --> 00:31:22,410 So nou, ek het 'n voorbeeld aansoek. 602 00:31:22,410 --> 00:31:26,880 Ek het soort van vooraf alles gemaak net sodat daar nie enige lewende kodering sal wees 603 00:31:26,880 --> 00:31:30,220 foute, maar ons kan loop deur dit en sien hoe jy Fies sou sit 604 00:31:30,220 --> 00:31:33,685 en snuiter saam en maak 'n eenvoudige app. 605 00:31:33,685 --> 00:31:38,680 Ek noem dit CS50 rant, en dit is soort van 'n eenvoudige blog platform. 606 00:31:38,680 --> 00:31:41,150 >> So, in die eerste, ek sal dit hardloop en wys hoe dit lyk, 607 00:31:41,150 --> 00:31:42,890 en dan kan ons meer kyk na die kode. 608 00:31:42,890 --> 00:32:00,470 609 00:32:00,470 --> 00:32:02,830 Goed, so laat ons net hierdie hardloop. 610 00:32:02,830 --> 00:32:14,040 611 00:32:14,040 --> 00:32:17,250 Cool, ek sal hierdie maak 'n bietjie kleiner. 612 00:32:17,250 --> 00:32:20,000 Dit is nie baie mooi, net omdat Ek het nie 'n baie CSS maak, 613 00:32:20,000 --> 00:32:23,255 maar wat dit doen, is, het dit hierdie databasis van blog boodskappe, 614 00:32:23,255 --> 00:32:25,630 en dit gaan deur al hulle, en dit sal hulle vertoon 615 00:32:25,630 --> 00:32:28,170 op die bladsy in volgorde van die mees onlangse. 616 00:32:28,170 --> 00:32:30,920 En so dit is net 'n paar poste dat ek in die databasis gered het. 617 00:32:30,920 --> 00:32:35,680 >> So as ons wil 'n nuwe te skep pos, kan ons gaan na Voeg 'n Nuwe Post, 618 00:32:35,680 --> 00:32:42,720 en ons kan die titel van die voer post, so iets soos, CS50 seminaar. 619 00:32:42,720 --> 00:32:45,360 620 00:32:45,360 --> 00:32:46,735 Sjoe, regtig geniet die seminaar. 621 00:32:46,735 --> 00:32:51,070 622 00:32:51,070 --> 00:32:52,270 >> Koel. 623 00:32:52,270 --> 00:32:56,060 Dan druk jy post, en dit sal lei jou terug na die tuisblad 624 00:32:56,060 --> 00:33:00,039 en dan sal jy sien dat die nuutste post bygevoeg is. 625 00:33:00,039 --> 00:33:01,580 En ons het nog al die kinders daar. 626 00:33:01,580 --> 00:33:08,080 So nou, laat ons stap vir stap deur al die kode en sien hoe dit geïmplementeer word. 627 00:33:08,080 --> 00:33:11,995 >> So, ek dink die eerste ding wat ons laat 'n blik op, is eintlik die modelle. 628 00:33:11,995 --> 00:33:14,120 Daar is baie van die tyd, toe jy ontwerp iets 629 00:33:14,120 --> 00:33:17,036 jy wil eerstens oor hoe om te dink jy gaan om jou data te verteenwoordig, 630 00:33:17,036 --> 00:33:22,915 en dan ontwerp dinge rondom dat sodat alles sin maak. 631 00:33:22,915 --> 00:33:25,290 En dit is eintlik hoe ek het dit toe ek besig was om hierdie, 632 00:33:25,290 --> 00:33:28,030 Ek het gaan sit en gedink het, wat wil ek in 'n post. 633 00:33:28,030 --> 00:33:32,130 >> So, hier, ons het dieselfde struktuur dat ek vroeër noem, 634 00:33:32,130 --> 00:33:33,755 waar ons db = Sqldatabase ('posts.db). 635 00:33:33,755 --> 00:33:37,840 636 00:33:37,840 --> 00:33:40,980 In werklikheid, waarskynlik jy nie wil hê hard-kode in databasisse jou naam. 637 00:33:40,980 --> 00:33:43,730 Dit moet waarskynlik 'n parameter wees dit is iewers gestoor, miskien 638 00:33:43,730 --> 00:33:45,940 in 'n config lêer, maar in 'n klein voorbeeld soos hierdie, 639 00:33:45,940 --> 00:33:48,310 Dit is goed om hard kode wat in. 640 00:33:48,310 --> 00:33:53,510 >> So nou, ons het hierdie Post klas, wat erf van die basis model. 641 00:33:53,510 --> 00:33:56,930 En dit het, weer, die ID = PrimaryKeyField. 642 00:33:56,930 --> 00:34:02,250 Eintlik, as jy nie spesifiseer, as ek eintlik ontslae geraak het van hierdie, 643 00:34:02,250 --> 00:34:07,152 dan snuiter ons sorg vir outomaties skep dat ID-veld, 644 00:34:07,152 --> 00:34:09,360 en dit sal outomaties maak dit 'n PrimaryKey, wat 645 00:34:09,360 --> 00:34:12,485 Ek dink is regtig mooi, want gewoonlik, dit is iets wat jy wil hê, 646 00:34:12,485 --> 00:34:16,239 maar ek wil dit in spesifiek gestel, net sodat ek onthou dat dit is daar. 647 00:34:16,239 --> 00:34:19,480 Maar as jy nie spesifiseer dat, wat sal daar outomaties. 648 00:34:19,480 --> 00:34:22,198 >> So dan, ek het 'n datum wat is 'n DateTimeField, en al 649 00:34:22,198 --> 00:34:24,864 hierdie verskillende velde, as jy kyk na die snuiter dokumentasie, 650 00:34:24,864 --> 00:34:28,920 dit gee jou 'n lys van die verskillende tipes velde wat jy kan gebruik. 651 00:34:28,920 --> 00:34:34,440 Vir die grootste deel, is dit analoog na wat jy in SQL sou sien. 652 00:34:34,440 --> 00:34:37,699 So is daar 'n CharField, 'n VarCharFields, TextFields, 653 00:34:37,699 --> 00:34:40,550 wat vir baie lank tekste, soos 'n blog post 654 00:34:40,550 --> 00:34:44,460 potensieel, DateTimeFields, DoubleFields, FloatFields, 655 00:34:44,460 --> 00:34:46,100 alle dinge soos dat. 656 00:34:46,100 --> 00:34:51,570 >> En jy kan slaag in ander argumente om dit wat ek nie hier spesifiseer. 657 00:34:51,570 --> 00:34:55,719 Sê byvoorbeeld jy nie wil toelaat twee poste aan dieselfde titel het, 658 00:34:55,719 --> 00:34:59,672 jy kan spesifiseer iets soos unieke = True, 659 00:34:59,672 --> 00:35:02,880 en dit is net 'n ekstra parameter om die stuk grond wat wanneer dit stel dit af 660 00:35:02,880 --> 00:35:06,865 in die SQL, sal dit spesifiseer dat dit moet wees uniek. 661 00:35:06,865 --> 00:35:09,740 Jy kan ook iets soos spesifiseer nie van nul en al die ander dinge 662 00:35:09,740 --> 00:35:11,750 jy gewoonlik doen in SQL. 663 00:35:11,750 --> 00:35:16,020 So, dit is 'n redelik eenvoudige model wat die datum het. 664 00:35:16,020 --> 00:35:19,460 Let hier, binne die DateTimeField, Ek gespesifiseerde wat die standaard is. 665 00:35:19,460 --> 00:35:22,560 Ek gespesifiseerde dit moet wees datetime.datetime.now, 666 00:35:22,560 --> 00:35:24,920 as gevolg van die manier waarop Dit kry geëvalueer, 667 00:35:24,920 --> 00:35:28,750 dit eintlik evalueer die datetime.now wanneer 668 00:35:28,750 --> 00:35:32,110 dit word opgeneem in die databasis. 669 00:35:32,110 --> 00:35:34,760 >> Ek dink dat, sou ek dubbel check dit, 670 00:35:34,760 --> 00:35:38,222 maar as jy iets soos dit gedoen het, dan dit sou eintlik evalueer wat eens, 671 00:35:38,222 --> 00:35:40,180 en dan sal die Datum tyd sou altyd dieselfde wees. 672 00:35:40,180 --> 00:35:44,240 So, net as jy iets doen met datetimes, dubbel check 673 00:35:44,240 --> 00:35:47,080 dat dit die evaluering toe eintlik kry ingevoeg, of anders 674 00:35:47,080 --> 00:35:48,780 jy dalk verwar word. 675 00:35:48,780 --> 00:35:51,221 >> Die titel is net 'n CharField, wat daar 676 00:35:51,221 --> 00:35:53,970 meer argumente wat jy kan slaag presies te spesifiseer hoe lank jy 677 00:35:53,970 --> 00:35:56,170 dit wil hê nie, maar hier, dit het nie regtig saak nie. 678 00:35:56,170 --> 00:35:58,687 En teks gaan wees Die teks van die hele post, 679 00:35:58,687 --> 00:36:01,020 en wat gaan om 'n wees Tekstveld net omdat jy wil 680 00:36:01,020 --> 00:36:03,370 toelaat dat dit 'n redelik lang string wees. 681 00:36:03,370 --> 00:36:05,970 >> Dan het ons hierdie Meta subklas wat net 682 00:36:05,970 --> 00:36:11,250 bepaal dat ons wil die databasis waar dit werklik tot in geopen 683 00:36:11,250 --> 00:36:14,267 die db voorwerp wat ons het hier te wees. 684 00:36:14,267 --> 00:36:16,350 En die laaste ding wat ons het hier, is net hierdie funksie 685 00:36:16,350 --> 00:36:18,120 dat ons gaan om gebruik van ons belangrikste app 686 00:36:18,120 --> 00:36:23,970 om die databasis te koppel aan inisialiseer dit, en dan na die Post tabel te skep. 687 00:36:23,970 --> 00:36:26,880 >> Nou, laat ons kyk na die belangrikste app self. 688 00:36:26,880 --> 00:36:30,800 So hierdie een is nogal 'n bietjie langer as die kinders 689 00:36:30,800 --> 00:36:34,840 dat ons gesien het nie, maar hopelik nie te sleg nie. 690 00:36:34,840 --> 00:36:37,140 So, laat my uit te brei dit uit. 691 00:36:37,140 --> 00:36:38,370 Okay. 692 00:36:38,370 --> 00:36:42,070 >> So, kennisgewing en die top Ek ingevoer 'n hele klomp van die ander dinge 693 00:36:42,070 --> 00:36:44,129 van Fies dat ons nie regtig gesien nie. 694 00:36:44,129 --> 00:36:46,670 En hopelik kan ons deurgaan elkeen van hierdie een vir een 695 00:36:46,670 --> 00:36:49,420 en praat 'n bietjie meer oor hulle gesorteer deur voorbeeld. 696 00:36:49,420 --> 00:36:51,380 So, ons het die fles, en die render_template, 697 00:36:51,380 --> 00:36:54,370 wat ons gesien het nie, hierdie versoek voorwerp, 698 00:36:54,370 --> 00:37:00,400 wat sal kom wanneer ons kyk na hoe die vorm wat ek eintlik is wat 699 00:37:00,400 --> 00:37:01,170 werk. 700 00:37:01,170 --> 00:37:04,850 Herlei, wat kan jy lei terug van die Nuwe Post 701 00:37:04,850 --> 00:37:11,710 terug na die oorspronklike tuisblad, en dan URL, iets wat waarmee jy 702 00:37:11,710 --> 00:37:15,550 uit te vind waar die webwerf 'n spesifieke bladsy is. 703 00:37:15,550 --> 00:37:17,810 >> So dan, die volgende ding wat ek doen, is ek invoer 704 00:37:17,810 --> 00:37:21,550 al die inligting van die Models lêers wat het ons net kyk na. 705 00:37:21,550 --> 00:37:23,140 En, ja. 706 00:37:23,140 --> 00:37:28,720 >> So, iets anders wat kom nuwe wanneer jy met, 707 00:37:28,720 --> 00:37:31,850 veral databasisse, is dat jy kan spesifiseer 708 00:37:31,850 --> 00:37:35,110 'n funksie wat genoem voordat kry elke versoek, en funksie wat kry 709 00:37:35,110 --> 00:37:39,690 genoem na elke versoek die gebruik van hierdie funksie versierder app.before versoek. 710 00:37:39,690 --> 00:37:42,324 >> En so sal dit kry uitgevoer waar dit funksie is. 711 00:37:42,324 --> 00:37:44,240 Dit hoef nie te wees genoem voordat versoek 712 00:37:44,240 --> 00:37:46,281 maar gewoonlik dit is iets sinvol om dit te noem. 713 00:37:46,281 --> 00:37:48,580 714 00:37:48,580 --> 00:37:51,650 Jy kan ook al funksie spesifiseer jy wil om daar te kom genoem, 715 00:37:51,650 --> 00:37:56,330 so ek gespesifiseerde hierdie initialize_db funksie wat ons gehad het terug in die Models 716 00:37:56,330 --> 00:38:02,390 lêer, so voor elke versoek wat jy wil hê na konnekteer na die databasis. 717 00:38:02,390 --> 00:38:04,560 >> Daar is twee verskillende maniere waarop jy dit kan doen. 718 00:38:04,560 --> 00:38:10,830 Jy kanapp te doen., I glo dit is after_request. 719 00:38:10,830 --> 00:38:13,800 En die verskil tussen after_request en teardown_request, 720 00:38:13,800 --> 00:38:17,590 is dat after_request slegs sal gebeur indien die versoek was eintlik geldig is. 721 00:38:17,590 --> 00:38:20,440 En so nie, slegs indien die versoek was suksesvol, 722 00:38:20,440 --> 00:38:22,490 as daar niks verkeerd geloop het, maar teardown_request 723 00:38:22,490 --> 00:38:26,300 gebeur in die geval van 'n suksesvolle versoek of in die geval van 'n fout. 724 00:38:26,300 --> 00:38:28,252 >> So, gewoonlik, jy wil om teardown_request gebruik, 725 00:38:28,252 --> 00:38:30,460 tensy jy wil doen iets, veral verskillende 726 00:38:30,460 --> 00:38:31,470 in die geval van 'n fout. 727 00:38:31,470 --> 00:38:35,122 Maar net vir die sluiting van die databasis, of dit slaag of indien dit misluk, 728 00:38:35,122 --> 00:38:37,080 ons doen wat jy wil om te ontkoppel uit die databasis. 729 00:38:37,080 --> 00:38:41,240 So dit genoem word, db.close op die db voorwerp. 730 00:38:41,240 --> 00:38:43,740 >> Let daarop dat die teardown_request neem in 'n uitsondering nie. 731 00:38:43,740 --> 00:38:46,781 Sodat jy kan kyk of daar was eintlik 'n fout wanneer dit toemaak, 732 00:38:46,781 --> 00:38:49,390 maar hier, hopelik, is daar is nie 'n hele klomp van foute, 733 00:38:49,390 --> 00:38:52,720 so ons is net soort van ignoreer dit. 734 00:38:52,720 --> 00:38:55,990 >> Goed, en die res van dit is nie te sleg nie. 735 00:38:55,990 --> 00:39:02,240 So, wanneer ons gaan na die tuisblad, Ons gelewer hierdie home.html Sjabloon 736 00:39:02,240 --> 00:39:03,490 wat sal oopmaak. 737 00:39:03,490 --> 00:39:06,240 Die pas is in post gelyk aan, en wat dit 738 00:39:06,240 --> 00:39:10,260 doen is, onthou ons het hierdie post model, so ons kies al die poste, 739 00:39:10,260 --> 00:39:13,890 en dan nog 'n ding wat jy kan doen, kan jy die WHERE klousule spesifiseer, 740 00:39:13,890 --> 00:39:16,910 kan jy 'n spesifiseer bestel deur, en so het ons neem 741 00:39:16,910 --> 00:39:18,820 al die poste wat kry gekies, en dan 742 00:39:18,820 --> 00:39:22,590 Ons bestel hulle deur die post.date.descending. 743 00:39:22,590 --> 00:39:25,030 En dit sal spesifiseer wanneer hulle eintlik kom uit, 744 00:39:25,030 --> 00:39:29,250 die mees onlangse een sal heel eerste een wees. 745 00:39:29,250 --> 00:39:31,420 >> En dan, slaag ons dat in die home.html sjabloon, 746 00:39:31,420 --> 00:39:34,240 so laat ons eintlik oop dat Sjabloon regtig vinnig, 747 00:39:34,240 --> 00:39:36,760 en neem 'n blik op hoe dit werk. 748 00:39:36,760 --> 00:39:42,130 En dit is nie 'n groot HTML, maar Hopelik kan ons fokus op die Python. 749 00:39:42,130 --> 00:39:46,960 >> So is daar 'n skakel na die New Voeg Post, en so hierdie spesifiseer die roete 750 00:39:46,960 --> 00:39:51,580 binne die Fies dat ons definieer, wat is reg hier. 751 00:39:51,580 --> 00:39:56,310 Dit is die nuwe post roete en ons spesifiseer dat hier. 752 00:39:56,310 --> 00:40:00,450 En so dit is 'n skakel wat dan gaan om daardie roete binne die Fies bediener. 753 00:40:00,450 --> 00:40:03,820 >> Die meer interessante ding is dit vir lus hier. 754 00:40:03,820 --> 00:40:07,685 So spesifiseer ons dat dit post parameter wat 755 00:40:07,685 --> 00:40:09,560 geslaag in die render_template funksie, 756 00:40:09,560 --> 00:40:13,550 vir elke pos in die post se voorwerp wat kry geslaag. 757 00:40:13,550 --> 00:40:16,600 Ons wil uit te druk die post titel, in H1, 758 00:40:16,600 --> 00:40:21,930 en dan hieronder, ons wil uit te druk die post teks binne 'n paragraaf. 759 00:40:21,930 --> 00:40:25,710 >> En hier, kan ons eintlik noem 'n Python funksie, 760 00:40:25,710 --> 00:40:35,130 sodat ons kan strftime noem, ST-RF-time, en jy kan slaag in die formaat string 761 00:40:35,130 --> 00:40:37,064 wat jy wil om die data in te druk. 762 00:40:37,064 --> 00:40:39,980 So dit is redelik goed dat jy kan hierdie Python funksie eintlik noem 763 00:40:39,980 --> 00:40:41,090 van binne hier. 764 00:40:41,090 --> 00:40:44,370 Jy hoef nie na die uitleg te doen op die kontroles kant, want regtig, 765 00:40:44,370 --> 00:40:47,770 opmaak die datum is iets wat jy wil om te gaan binne die View. 766 00:40:47,770 --> 00:40:51,480 >> En al hierdie persent dinge is nie super belangrik. 767 00:40:51,480 --> 00:40:55,270 As jy kyk op die dokumentasie vir die strftime funksie in Python, 768 00:40:55,270 --> 00:40:57,040 dit bepaal al hierdie dinge, maar dit is 769 00:40:57,040 --> 00:40:59,190 hoe, wanneer ons soek op hier die tuisblad, 770 00:40:59,190 --> 00:41:04,440 dit formate hierdie met 'n mooi datum en dit spesifiseer AM of PM, 771 00:41:04,440 --> 00:41:09,410 maar normaalweg, as ons het dit nie hier nie, 772 00:41:09,410 --> 00:41:14,024 jy sal waarskynlik 'n paar vullis te kry datum wat nie baie goed gelyk het nie. 773 00:41:14,024 --> 00:41:15,940 En dan spesifiseer ons post.text, en ek kon 774 00:41:15,940 --> 00:41:19,460 'n paar van gestel lyn breek hier, net 775 00:41:19,460 --> 00:41:21,820 sommige spasies tussen elke post sit. 776 00:41:21,820 --> 00:41:26,270 >> So, ek dink die belangrikste ding in hierdie voorbeeld, 777 00:41:26,270 --> 00:41:28,697 is dat jy dit kan gebruik vir lus. 778 00:41:28,697 --> 00:41:30,780 En dit is analoog aan dinge wat jy kan doen in PHP. 779 00:41:30,780 --> 00:41:32,905 Jy kan deur middel van Itereer, alles kry geslaag, 780 00:41:32,905 --> 00:41:36,719 en so, in plaas van om te doen kopie / plak, kopie / plak al die HTML, 781 00:41:36,719 --> 00:41:40,010 jy moet net om dit te skryf keer, en dan jy kan Itereer oor al die poste. 782 00:41:40,010 --> 00:41:41,510 >> En dit is iets algemeen dat jy wil 783 00:41:41,510 --> 00:41:44,510 om te doen, wanneer jy 'n klomp data, is dat vir alles wat in jou data, 784 00:41:44,510 --> 00:41:48,370 jy wil 'n soortgelyke ding te doen. 785 00:41:48,370 --> 00:41:51,690 En dan, net onthou dat wanneer jy wil uitdruklik uit te druk iets 786 00:41:51,690 --> 00:41:54,780 in die HTML, jy gebruik die dubbele draadjies hier 787 00:41:54,780 --> 00:41:57,820 maar dan wanneer jy wil om te spesifiseer enige inligting oor 'n toestand, 788 00:41:57,820 --> 00:42:02,430 of oor 'n lus vir die, jy gebruik die persent bracket. 789 00:42:02,430 --> 00:42:08,730 >> So, gaan terug na die Python kode, sodat verduidelik 790 00:42:08,730 --> 00:42:12,242 wat gebeur in die hoof roete, toe ons daar gaan 791 00:42:12,242 --> 00:42:14,450 dit gee net al die poste, maar dan is die vraag 792 00:42:14,450 --> 00:42:17,440 is, hoe kan ons eintlik kry poste in die databasis, wat 793 00:42:17,440 --> 00:42:18,970 is 'n bietjie meer interessant. 794 00:42:18,970 --> 00:42:23,960 >> So, wanneer jy op die New Post skakel, wat ons hier sien, 795 00:42:23,960 --> 00:42:26,000 dit aansture jy aan hierdie vorm. 796 00:42:26,000 --> 00:42:29,580 En dit is net 'n eenvoudige oproep na die render_template funksie, wat dan 797 00:42:29,580 --> 00:42:32,110 gaan in die nuwe pos in HTML vorm. 798 00:42:32,110 --> 00:42:36,212 So laat ons neem 'n blik op dit. 799 00:42:36,212 --> 00:42:37,420 So hierdie een is redelik eenvoudig. 800 00:42:37,420 --> 00:42:45,110 Dit het 'n eenvoudige HTML-vorm, wat sal kyk 'n bietjie bekend, 801 00:42:45,110 --> 00:42:47,380 gebaseer op die vorms in CS50 Finansies. 802 00:42:47,380 --> 00:42:49,940 En so het ons hier spesifiseer, die aksie. 803 00:42:49,940 --> 00:42:52,435 En hier, as jy werk met PHP, gewoonlik, is dit 804 00:42:52,435 --> 00:42:55,930 sou iets wees soos, create.PHP, maar hier 805 00:42:55,930 --> 00:42:59,960 ons eintlik spesifiseer 'n roete binne die Fies bediener. 806 00:42:59,960 --> 00:43:02,520 En so, hierdie roete ooreenstem die skep roete 807 00:43:02,520 --> 00:43:05,680 dat ons hier, wat ons sal in 'n tweede in te gaan. 808 00:43:05,680 --> 00:43:07,630 >> En so, spesifiseer ons dat dit is 'n post metode, 809 00:43:07,630 --> 00:43:09,820 want ons wil stuur hierdie vorm data, en gewoonlik 810 00:43:09,820 --> 00:43:12,945 wanneer jy data wil stuur 'n vorm, wil jy dalk 'n post versoek te gebruik, 811 00:43:12,945 --> 00:43:15,760 net sodat jy nie eindig met hierdie groot, lomp URL. 812 00:43:15,760 --> 00:43:18,970 Maar jy kan ook 'n GET-versoek te gebruik, en slaag dit saam met veranderlike routing, 813 00:43:18,970 --> 00:43:21,170 maar vir die vorm, dit is lekker 'n pos versoek hier. 814 00:43:21,170 --> 00:43:24,620 En so dan, net soos jy sou doen met HTML en PHP, 815 00:43:24,620 --> 00:43:28,420 jy kan hierdie teks insette spesifiseer, en jy kan die naam van hulle spesifiseer, 816 00:43:28,420 --> 00:43:33,490 en dit is die naam wat kry sal verby in die versoek voorwerp binne Fies. 817 00:43:33,490 --> 00:43:36,960 >> En dan het ons 'n Stuur knoppie wat Post gesê. 818 00:43:36,960 --> 00:43:40,760 En hier, Post is die naam van die knoppie, want dit is 'n blog post, 819 00:43:40,760 --> 00:43:42,700 maar hier, post is die versoek metode. 820 00:43:42,700 --> 00:43:47,060 So dit is dieselfde woord maar eintlik onverwante. 821 00:43:47,060 --> 00:43:48,460 Ja 822 00:43:48,460 --> 00:43:54,800 >> Terug te gaan na die Python-kode, wanneer ons het die skep metode, 823 00:43:54,800 --> 00:43:57,702 sien hier dat jy kan eintlik spesifiseer binne die roete 824 00:43:57,702 --> 00:44:00,650 die versoek metodes wat jy wil om te aanvaar, 825 00:44:00,650 --> 00:44:04,770 en so hier, ek spesifiseer dat ek wil net 'n Post metode te aanvaar. 826 00:44:04,770 --> 00:44:09,800 So, as ek eintlik probeer om die bladsy te besoek direk, wat met behulp van 'n AOO-versoek 827 00:44:09,800 --> 00:44:11,700 dit sal vir my sê "Metode nie toegelaat nie." 828 00:44:11,700 --> 00:44:15,840 >> En so, jy het bladsye, soort van soos hierdie te skep bladsy, wat ek net 829 00:44:15,840 --> 00:44:20,192 regtig die gebruik as 'n manier vir die vorm te kry ingedien 830 00:44:20,192 --> 00:44:22,900 jy kan spesifiseer dat jy dit nie doen nie wil hê mense moet wees om daar te gaan in staat 831 00:44:22,900 --> 00:44:25,650 direk via 'n AOO-versoek of as jy nie wil hê, 832 00:44:25,650 --> 00:44:28,580 vir een of ander rede, 'n Post versoek jy kan net spesifiseer KRY hier 833 00:44:28,580 --> 00:44:32,720 maar in hierdie voorbeeld, het ons net wil hê dat die Post versoek om uit te gaan. 834 00:44:32,720 --> 00:44:38,700 >> Dus, wanneer create_post genoem word, wanneer Ons besoek wat via die Post versoek 835 00:44:38,700 --> 00:44:43,600 wanneer jy gaan na 'n spesifieke roete, daar is hierdie versoek voorwerp, 836 00:44:43,600 --> 00:44:46,640 en ons het om die invoer versoeke op die heel boonste, 837 00:44:46,640 --> 00:44:49,640 maar daar is hierdie versoek voorwerp wat kry geslaag, 838 00:44:49,640 --> 00:44:53,210 en jy kan die vorm data toegang, wat sal outomaties kry gevul 839 00:44:53,210 --> 00:44:55,070 wanneer jy 'n versoek van 'n vorm te stuur. 840 00:44:55,070 --> 00:44:56,990 >> En dan, wat ek dink is regtig cool, is 841 00:44:56,990 --> 00:45:02,840 dat die vorm voorwerp te kry geslaag in, is net 'n Python woordeboek wat 842 00:45:02,840 --> 00:45:10,560 bevat, as jy so hier access--, laat my trek die HTML langs dit, net 843 00:45:10,560 --> 00:45:17,670 sodat jy kan wat as 'n verwysing, ja, so 844 00:45:17,670 --> 00:45:21,060 die name wat ons hier spesifiseer vir die verskillende velde, so 845 00:45:21,060 --> 00:45:23,900 die titel en die teks, is ons gebruik dan net diegene hier 846 00:45:23,900 --> 00:45:27,110 as indekse in die vorm van data. 847 00:45:27,110 --> 00:45:28,950 So dit is super gerieflik. 848 00:45:28,950 --> 00:45:33,320 >> So dan post.create noem ons, wat sal skep en outomaties voeg 849 00:45:33,320 --> 00:45:36,850 hierdie nuwe post voorwerp in die databasis. 850 00:45:36,850 --> 00:45:40,690 En ek dink dit skep funksie hier is 'n baie cool voorbeeld van hoe 851 00:45:40,690 --> 00:45:44,900 kragtige fles en werk met hierdie, want as jy iets besig was 852 00:45:44,900 --> 00:45:48,660 in PHP, moet jy dalk ' doen 'n baie van die validering, 853 00:45:48,660 --> 00:45:51,730 jy sal moet dan 'n databasis konneksie te vestig, 854 00:45:51,730 --> 00:45:55,210 jy sal moet dan die SQL navraag uit te voer, 855 00:45:55,210 --> 00:45:59,550 maar hier het ons net hierdie mooi post.create, wat ons kan dan net 856 00:45:59,550 --> 00:46:01,520 kry die inligting uit van die versoek voorwerp, 857 00:46:01,520 --> 00:46:05,370 en dit slaag dan in 'n nuwe Post dat ons skep. 858 00:46:05,370 --> 00:46:07,850 >> En dan, die heel laaste ding wat ons wil doen, 859 00:46:07,850 --> 00:46:09,630 is om die lei gebruiker terug na die huis. 860 00:46:09,630 --> 00:46:13,020 En so het ons dit gebruik Fles lei funksie. 861 00:46:13,020 --> 00:46:17,770 En iets wat ons nie gesien het nie voor, was hierdie URL funksie. 862 00:46:17,770 --> 00:46:21,970 So die URL vir funksie kan jy slaag in werklikheid die naam 863 00:46:21,970 --> 00:46:26,090 van 'n funksie in jou Python kode, eerder as die spesifieke roete 864 00:46:26,090 --> 00:46:26,720 dat dit op. 865 00:46:26,720 --> 00:46:32,107 >> So ek kan net so maklik het herlei 'n gebruiker te streep, 866 00:46:32,107 --> 00:46:37,050 wat dit sou stuur terug by die huis nie, maar die gebruik van die URL vir funksie is mooi, 867 00:46:37,050 --> 00:46:39,990 want as jy die verander plek waar dinge, 868 00:46:39,990 --> 00:46:44,080 so laat ons sê dat ek die huis te wees by / huis plaas, 869 00:46:44,080 --> 00:46:47,040 dit sou nog steeds dan terug / huis, want eintlik gaan en kyk op 870 00:46:47,040 --> 00:46:50,770 die naam van die funksie, en dit sal gee jou die URL terug vir wat. 871 00:46:50,770 --> 00:46:52,490 >> So, soort van op die aanname dat jy 872 00:46:52,490 --> 00:46:55,489 meer geneig om waar dinge verander is as die name van die funksies. 873 00:46:55,489 --> 00:46:58,840 Jy kan dit regtig gebruik mooi URL vir funksie. 874 00:46:58,840 --> 00:47:02,470 En een ding om bewus te wees van dit is 'n bietjie lastig, 875 00:47:02,470 --> 00:47:05,750 is dat jy dink jy kan net noem herlei op die URL vir, 876 00:47:05,750 --> 00:47:10,600 maar eintlik al die roetes 'n soort van teks en HTML terugkeer, 877 00:47:10,600 --> 00:47:14,360 sodat jy eintlik moet die aanstuur oproep terugkeer. 878 00:47:14,360 --> 00:47:18,379 Andersins, sal jy iets kry ongeldig oor nie terugkeer 'n string, 879 00:47:18,379 --> 00:47:21,420 want al hierdie het om terug te keer die HTML jy eintlik wil lewer. 880 00:47:21,420 --> 00:47:26,980 >> En so, wanneer jy die aanstuur noem, dit aansture jy na die bladsy, 881 00:47:26,980 --> 00:47:30,270 maar dit eintlik gee die HTML wat jy nodig het om dit te aanstuur voer. 882 00:47:30,270 --> 00:47:34,430 883 00:47:34,430 --> 00:47:37,110 Gaan terug na die tuisblad. 884 00:47:37,110 --> 00:47:39,200 So ons het hierdie twee verskillende menings. 885 00:47:39,200 --> 00:47:40,132 Ons het die huis sien. 886 00:47:40,132 --> 00:47:41,590 Of, ek dink ek moet sê templates. 887 00:47:41,590 --> 00:47:44,190 Ons het hierdie twee templates, die huis sjabloon wat 888 00:47:44,190 --> 00:47:48,500 vertoon al ons poste en dan het ons hierdie advertensie ding, 889 00:47:48,500 --> 00:47:52,970 en wanneer jy die post klik, gaan dit om 'n nuwe roete binne die Fies, 890 00:47:52,970 --> 00:47:55,920 maar dat die roete nie noodwendig het 'n ooreenstemmende sjabloon. 891 00:47:55,920 --> 00:47:59,290 892 00:47:59,290 --> 00:48:01,560 Jy hoef nie om te sien enigiets, maar jy kan steeds 893 00:48:01,560 --> 00:48:04,090 het hierdie werk gaan agter die skerms. 894 00:48:04,090 --> 00:48:07,450 En dan moet jy kry getrek terug na die tuisblad. 895 00:48:07,450 --> 00:48:12,230 En beslis, dit is maklik om te werk in sommige mooier CSS in die sjabloon 896 00:48:12,230 --> 00:48:15,580 en maak hierdie lyk baie mooier, maar almal van die belangrikste logika 897 00:48:15,580 --> 00:48:18,590 is daar in die Python. 898 00:48:18,590 --> 00:48:20,020 >> Enige vrae oor daardie voorbeeld? 899 00:48:20,020 --> 00:48:22,760 Ek weet daar is 'n baie verskillende dinge gaan daar, 900 00:48:22,760 --> 00:48:25,341 'n baie van die dinge wat ons nie gesien het nie voor, maar soos enige iets. 901 00:48:25,341 --> 00:48:25,840 Ja. 902 00:48:25,840 --> 00:48:28,346 >> Publiek 1: Het jy iets te doen spesiaal vir die data wat skrop 903 00:48:28,346 --> 00:48:29,600 kom uit die vorm? 904 00:48:29,600 --> 00:48:31,109 Ek het opgemerk jy net gesê "te skep," 905 00:48:31,109 --> 00:48:33,900 ESRA ZIGMOND: Ja, so dit is Eintlik is dit 'n baie goeie punt. 906 00:48:33,900 --> 00:48:36,350 So die vraag is, het jy nodig om te kyk en seker te maak 907 00:48:36,350 --> 00:48:39,190 dat die data geldig is, en doen enige soort van skrop 908 00:48:39,190 --> 00:48:41,840 om seker te maak dat dit geldig is, want as jy hier kan sien, 909 00:48:41,840 --> 00:48:42,660 Ek is nie om dit te doen. 910 00:48:42,660 --> 00:48:48,140 So laat ons sien wat gebeur As ek 'n boodskap iets leeg. 911 00:48:48,140 --> 00:48:51,190 Dus, sal dit eintlik net 'n leeg post en in die Datum tyd te vul. 912 00:48:51,190 --> 00:48:55,990 >> So in werklikheid, sou jy waarskynlik iets wil doen, soos, 913 00:48:55,990 --> 00:49:04,749 Miskien spesifiseer as titel is gelyk aan die leë string, dan dit nie doen nie. 914 00:49:04,749 --> 00:49:07,290 Of net doen as die titel is nie gelyk aan die leë string. 915 00:49:07,290 --> 00:49:10,330 So is dit nie eintlik outomaties sorg dat skrop 916 00:49:10,330 --> 00:49:12,820 vir jou, sodat jy nog steeds nodig om dit te doen. 917 00:49:12,820 --> 00:49:14,330 Ja, goeie vraag. 918 00:49:14,330 --> 00:49:18,497 >> Publiek 2: Is dit skrop vir opvolger inspuiting? 919 00:49:18,497 --> 00:49:19,890 Weet jy? 920 00:49:19,890 --> 00:49:22,830 >> ESRA ZIGMOND: Hopelik snuiter doen dit. 921 00:49:22,830 --> 00:49:25,830 Ek dink dit sal beslis 'n mooi slegte biblioteek as dit nie doen nie. 922 00:49:25,830 --> 00:49:29,511 923 00:49:29,511 --> 00:49:32,690 Ek weet nie presies. 924 00:49:32,690 --> 00:49:34,820 Ek wil hê om te kyk na die navraag dat dit gegenereer. 925 00:49:34,820 --> 00:49:38,980 Ek dink dat as ek in 'n getikte blog post dat die soort van kyk 926 00:49:38,980 --> 00:49:46,370 soos 'n SQL-inspuiting aanval, iets soos hierdie, indien dit 927 00:49:46,370 --> 00:49:49,370 is soos 'n wagwoord veld of iets, jy dalk iets soos dit te doen. 928 00:49:49,370 --> 00:49:53,410 >> Ek dink dit sal nog steeds kry letterlik gepos, 929 00:49:53,410 --> 00:49:59,200 maar ek dink dat snuiter doen nie 'n soort van skrop van die data 930 00:49:59,200 --> 00:50:01,680 voordat dit eintlik voer nie. 931 00:50:01,680 --> 00:50:04,510 >> Publiek 1: Dit is teks veld ontwerp om gewone teks te neem, reg? 932 00:50:04,510 --> 00:50:05,710 >> ESRA ZIGMOND: Ja, dit is. 933 00:50:05,710 --> 00:50:06,465 Ja. 934 00:50:06,465 --> 00:50:09,590 So ek dink dat al die, so dit is korrekte gedrag, wat sal dit doen, 935 00:50:09,590 --> 00:50:12,170 maar ek dink dat snuiter hopelik nie te doen 936 00:50:12,170 --> 00:50:13,780 'n soort van beskerming op hulle einde. 937 00:50:13,780 --> 00:50:16,090 En as jy wil doodseker dat daar 938 00:50:16,090 --> 00:50:19,530 is maniere wanneer jy 'n navraag te genereer. 939 00:50:19,530 --> 00:50:22,622 sodat jy nie hoef te direk uit te voer nie. 940 00:50:22,622 --> 00:50:24,330 Ek wil 'n te neem kyk na dokumentasie, 941 00:50:24,330 --> 00:50:27,930 maar jy kan eintlik sien die SQL dat dit genereer, 942 00:50:27,930 --> 00:50:30,840 en neem 'n blik op wat, en maak seker dat dit die ontsnapping dinge. 943 00:50:30,840 --> 00:50:33,700 >> Nog 'n rede waarom jy dalk wil om te kyk na die SQL 944 00:50:33,700 --> 00:50:37,920 dat snuiter is uitdruk, is as dinge lyk regtig stadig gaan, 945 00:50:37,920 --> 00:50:41,090 jy kan 'n blik te neem en te sien wat dit is eintlik, want dit is soms 946 00:50:41,090 --> 00:50:44,670 maklik om per ongeluk voeg in die manier waarop jy skryf dit, 947 00:50:44,670 --> 00:50:47,880 jy kan dit per ongeluk het kies die hele databasis eerste, 948 00:50:47,880 --> 00:50:50,230 en dan doen 'n soort operasie op dat, wanneer jy regtig 949 00:50:50,230 --> 00:50:51,320 bedoel om 'n subset kies. 950 00:50:51,320 --> 00:50:53,560 >> En so, as dinge nie nogal reg gaan, 951 00:50:53,560 --> 00:50:57,300 dit is goed om 'n blik op die versoek te neem dit is eintlik om gegenereer. 952 00:50:57,300 --> 00:50:57,800 Ja. 953 00:50:57,800 --> 00:51:02,100 >> Publiek 2: Wanneer jy die eerste keer begin, jy sit in die poort as 5000. 954 00:51:02,100 --> 00:51:02,904 >> ESRA ZIGMOND: Ja. 955 00:51:02,904 --> 00:51:06,070 Publiek 2: Is die standaard met snuiter, of is dit iets wat jy kan verander? 956 00:51:06,070 --> 00:51:10,870 ESRA ZIGMOND: Ja, so die hawe is standaard met Fies. 957 00:51:10,870 --> 00:51:13,061 As jy dit uit te voer sonder niks spesifiseer, 958 00:51:13,061 --> 00:51:14,310 dit sal outomaties doen. 959 00:51:14,310 --> 00:51:16,060 Ek glo, ek wil hê dubbel check dit, 960 00:51:16,060 --> 00:51:19,130 maar jy kan spesifiseer dat in die app.run, Ek dink jy kan iets soos te doen, 961 00:51:19,130 --> 00:51:19,629 hawe = 8080. 962 00:51:19,629 --> 00:51:22,375 963 00:51:22,375 --> 00:51:23,750 Kom ons gee dat 'n probeer ware vinnig. 964 00:51:23,750 --> 00:51:29,100 965 00:51:29,100 --> 00:51:32,230 Ja, so jy kan net spesifiseer hawe = 8080, en dit sal daar hardloop, 966 00:51:32,230 --> 00:51:36,130 wat ek dink, as jy wou om dit te doen op die IO, het ek dit nie probeer nie, 967 00:51:36,130 --> 00:51:38,527 maar ek dink dat as jy hardloop dit op poort 8080, 968 00:51:38,527 --> 00:51:40,360 jy waarskynlik wil in staat wees om toegang tot die bediener, 969 00:51:40,360 --> 00:51:41,870 net soos jy was vir die webwerf. 970 00:51:41,870 --> 00:51:44,390 >> Ja, maar dit is maklik om dit te verander as jy 971 00:51:44,390 --> 00:51:48,540 enige soort van soos port-ekspedisie dinge wat jy hoef te doen. 972 00:51:48,540 --> 00:51:50,410 >> Enige ander vrae? 973 00:51:50,410 --> 00:51:50,916 Ja? 974 00:51:50,916 --> 00:51:53,416 Publiek 1: So, sien ek in jou modelle wat, soos jy genoem het, 975 00:51:53,416 --> 00:51:55,647 jy het die spesifiseer databasis vir elke voorwerp. 976 00:51:55,647 --> 00:51:58,105 Het jy gebeur om te weet, doen wat maak dit regtig maklik as jy 977 00:51:58,105 --> 00:52:03,210 het baie van sQLite databasisse wat jy wil gebruik vir 'n enkele web app, 978 00:52:03,210 --> 00:52:07,210 dat jy net kan spesifiseer 'n klomp van verskillende mense in jou model? 979 00:52:07,210 --> 00:52:11,620 >> ESRA ZIGMOND: Ja, laat my oop te maak ware vinnig. 980 00:52:11,620 --> 00:52:17,570 So, jy sê, as jy wil hê 'n klomp van verskillende iets, miskien 981 00:52:17,570 --> 00:52:22,670 wil en die studente, vir 'n paar Daarom, so iets? 982 00:52:22,670 --> 00:52:26,870 Ja, so ek dink dat jy nog, elke model 983 00:52:26,870 --> 00:52:30,652 sou hê om nog net 'n databasis aan hom opgedra, 984 00:52:30,652 --> 00:52:32,610 maar as jy wil hê verskillende modelle wat 985 00:52:32,610 --> 00:52:35,818 het verskillende databasis voorwerpe opgedra om dit, kan jy beslis dit doen. 986 00:52:35,818 --> 00:52:43,070 So, as ek 'n nuwe, iets soos hierdie, 987 00:52:43,070 --> 00:52:47,000 en nou is dit 'n student wat lyk vreemd soos 'n blog post, 988 00:52:47,000 --> 00:52:49,390 Ek kon spesifiseer dat die databasis is gelyk aan hier db_2. 989 00:52:49,390 --> 00:52:51,390 So, ek dink dit is die belangrikste manier wat jy kan doen. 990 00:52:51,390 --> 00:52:54,560 991 00:52:54,560 --> 00:52:56,200 >> Koel. 992 00:52:56,200 --> 00:52:58,410 Enige ander vrae? 993 00:52:58,410 --> 00:53:02,170 >> So net om klaar 'n bietjie bietjie, hier is 'n paar hulpbronne, 994 00:53:02,170 --> 00:53:06,030 en hierdie skyfies sal aanlyn gepos word sodat jy kan eintlik kry om hierdie skakels. 995 00:53:06,030 --> 00:53:08,500 Die beste hulpbronne is regtig die dokumentasie vir Fies 996 00:53:08,500 --> 00:53:09,930 en snuiter hulself. 997 00:53:09,930 --> 00:53:12,940 Hulle is baie goed geskryf, dink ek. 998 00:53:12,940 --> 00:53:18,180 So, die fles webwerf is hier, en hulle het 'n vinnig start handleiding wat 999 00:53:18,180 --> 00:53:20,710 sal loop deur soortgelyke dinge wat ek het, deur, 1000 00:53:20,710 --> 00:53:23,560 maar as jy wil enige soort van hersiening van die dinge wat ek oor, 1001 00:53:23,560 --> 00:53:26,200 of jy gedink het dat ek verduidelik iets in 'n verwarrende manier, 1002 00:53:26,200 --> 00:53:28,390 hulle sal soortgelyke voorbeelde daar te hê. 1003 00:53:28,390 --> 00:53:31,570 >> Snuiter het dokumentasie, en hulle het 'n vinnig start handleiding 1004 00:53:31,570 --> 00:53:34,650 wat gaan oor die belangrikste parameters wat jy graag wil gebruik. 1005 00:53:34,650 --> 00:53:38,900 So, die dinge wat ek het gepraat oor met die unieke en spesifiseer standaard, 1006 00:53:38,900 --> 00:53:42,710 die verskillende vorme van velde wat jy kan gebruik, diegene sou daar wees nie. 1007 00:53:42,710 --> 00:53:44,690 >> Ook, as jy ' vrae oor snuiter, 1008 00:53:44,690 --> 00:53:47,530 en jy hulle te plaas op StackOverflow, die ou wat snuiter eintlik 1009 00:53:47,530 --> 00:53:49,500 gaan op en beantwoord die soms. 1010 00:53:49,500 --> 00:53:53,200 As jy 'n vraag, hopelik Hy sal in staat wees om dit te beantwoord, 1011 00:53:53,200 --> 00:53:54,867 want hy het die hele ding. 1012 00:53:54,867 --> 00:53:56,700 Ek dink dit is alles Ek wou dek. 1013 00:53:56,700 --> 00:53:58,930 Dankie vir uit te kom. 1014 00:53:58,930 --> 00:54:02,688