1 00:00:02,994 --> 00:00:04,990 [SKAN MŪZIKA] 2 00:01:12,920 --> 00:01:15,980 DEIVIDS MEILANS: Labi, šis ir CS50, un šī jau ir devītā nedēļa, kas 3 00:01:15,980 --> 00:01:19,040 ir mūsu priekšpēdējā. 4 00:01:19,040 --> 00:01:21,245 Patiešām, šī patiešām ir pēdējā nedēļa, kurā jūs šajā nodarbībā 5 00:01:21,245 --> 00:01:23,450 mācīsities programmēt. 6 00:01:23,450 --> 00:01:26,383 Bet patiesi, šī nedēļa patiešām ir domāta kā pedagoģiskā kulminācija 7 00:01:26,383 --> 00:01:29,316 visām šīm dažādajām valodām, kuras mēs esam aplūkojuši — visus šos 8 00:01:29,316 --> 00:01:32,250 dažādos paņēmienus, visas šīs sintakses. 9 00:01:32,250 --> 00:01:35,246 Tā, ka CS50 beigās tikai dažu nedēļu laikā jūs patiešām jūtat, ka 10 00:01:35,246 --> 00:01:38,243 neapmeklējāt C nodarbības un Python, bet vispārīgāk jūs apmeklējāt 11 00:01:38,243 --> 00:01:41,240 programmēšanas kursu. 12 00:01:41,240 --> 00:01:44,060 Jo patiešām mēs jau zinām, ka apmēram puse no jums turpinās studēt 13 00:01:44,060 --> 00:01:46,880 datorzinātnes, bet puse no jums to nedarīs. 14 00:01:46,880 --> 00:01:50,203 Un patiešām visiem jūsu programmēšanas darbiem teorētiski būs pamats 15 00:01:50,203 --> 00:01:53,527 tajā, ko mēs esam darījuši šo pēdējo nedēļu laikā. 16 00:01:53,527 --> 00:01:56,555 Bet šeit tiešām būs atkarīgs no jums, vai iemācīties kādu jaunu 17 00:01:56,555 --> 00:01:59,583 izdomātu valodu, kad tā iznāks, vai sekot kādai jaunai tendencei, kad 18 00:01:59,583 --> 00:02:02,611 kāda valoda aptumšo tās, kuras mēs esam izmantojuši kā populārākas, 19 00:02:02,611 --> 00:02:05,640 jo tās ir piemērotākas problēmām, kuras vēlaties atrisināt. 20 00:02:05,640 --> 00:02:08,345 Un tāpēc šodien patiešām ir runa par tik daudzu pēdējo nedēļu 21 00:02:08,345 --> 00:02:11,050 sintezēšanu, taču to darot tīmekļa programmēšanas kontekstā, kas gan 22 00:02:11,050 --> 00:02:13,755 par labu, gan par sliktu mūsdienās ir ļoti modē gan mūsu 23 00:02:13,755 --> 00:02:16,460 klēpjdatoros, gan tālruņos. 24 00:02:16,460 --> 00:02:19,063 Un patiešām valodas, kuras apskatījām pēdējo nedēļu laikā, tiek 25 00:02:19,063 --> 00:02:21,666 izmantotas ne tikai vietņu veidošanai, bet arī pilnvērtīgu 26 00:02:21,666 --> 00:02:24,270 lietojumprogrammu, lietotņu veikalu un tamlīdzīgu lietu veidošanai. 27 00:02:24,270 --> 00:02:27,350 Tātad šī patiešām būs šo pēdējo nedēļu kulminācija. 28 00:02:27,350 --> 00:02:29,726 Patiešām, mēs pat runāsim par dažiem pazīstamiem jēdzieniem, 29 00:02:29,726 --> 00:02:32,103 piemēram, iepirkumu groziem, kad atrodaties vietnē Amazon, un par šīm 30 00:02:32,103 --> 00:02:34,480 lietām, ko sauc par sīkfailiem, kad apmeklējat vietnes. 31 00:02:34,480 --> 00:02:37,145 Visas šīs tēmas arī tiks izmantotas, un jūs sapratīsit, ko tas viss 32 00:02:37,145 --> 00:02:39,810 nozīmē no paša sākuma. 33 00:02:39,810 --> 00:02:41,220 Tātad, kā mēs šeit nokļuvām? 34 00:02:41,220 --> 00:02:44,110 Pagājušajā nedēļā mēs galvenokārt koncentrējāmies uz HTML un CSS, kas 35 00:02:44,110 --> 00:02:47,000 nav programmēšanas valodas. 36 00:02:47,000 --> 00:02:49,390 Tie ir tikai par estētiku, datu strukturēšanu, datu prezentēšanu un 37 00:02:49,390 --> 00:02:51,780 tā tālāk. 38 00:02:51,780 --> 00:02:54,190 Un mēs apkalpojām tīmekļa lapas, kuras mēs rakstījām, izmantojot šo 39 00:02:54,190 --> 00:02:56,600 programmu HTTP server. 40 00:02:56,600 --> 00:02:59,365 Šī ir tikai viena no šādām programmām — ir desmitiem, simtiem dažādu 41 00:02:59,365 --> 00:03:02,130 tīmekļa serveru, kurus varat izmantot. 42 00:03:02,130 --> 00:03:05,140 Tas ir ļoti vienkāršs, ko mēs iepriekš instalējām jūsu codespace VS 43 00:03:05,140 --> 00:03:08,150 code, lai jūs varētu vienkārši rādīt tīmekļa lapas. 44 00:03:08,150 --> 00:03:11,200 Tomēr arī pagājušās nedēļas beigās mēs piedāvājām JavaScript — 45 00:03:11,200 --> 00:03:14,250 pilnvērtīgu programmēšanas valodu, kuru varat izmantot, lai uzlabotu 46 00:03:14,250 --> 00:03:17,300 lietotāja pieredzi. 47 00:03:17,300 --> 00:03:20,405 Lai padarītu lietas dinamiskākas un interaktīvākas, faktiski palaižot 48 00:03:20,405 --> 00:03:23,510 kodu lietotāja pārlūkprogrammā — viņa Mac datorā, datorā, tālrunī — 49 00:03:23,510 --> 00:03:26,615 pretstatā servera pusei, kurā līdz šim ir bijis raktīts viss mūsu 50 00:03:26,615 --> 00:03:29,720 kods, C un Python. 51 00:03:29,720 --> 00:03:32,450 Tātad jūs rakstāt kodu serverī, jūs rādāt kodu no servera, bet tagad, 52 00:03:32,450 --> 00:03:35,180 izmantojot HTML, CSS un JavaScript, tas tiek izpildīts 53 00:03:35,180 --> 00:03:37,910 pārlūkprogrammā. 54 00:03:37,910 --> 00:03:40,950 Taču šodien mēs kļūsim par vienu pēdējo Python-- vai līdzīgu valodu 55 00:03:40,950 --> 00:03:43,990 funkciju, ko varat arī izmantot serverī, lai automātiski, dinamiski 56 00:03:43,990 --> 00:03:47,030 ģenerētu. 57 00:03:47,030 --> 00:03:51,860 HTML, JavaScript, CSS, ko vēlaties, lai lietotājs saņemtu. 58 00:03:51,860 --> 00:03:55,920 Jums nav jākodē viss, kā tas ir jādara, veidojot savu mājas lapu. 59 00:03:55,920 --> 00:03:57,525 Nu, pieņemsim apsvērsim, kādi daži no celtniecības blokiem bija 60 00:03:57,525 --> 00:03:59,130 pagājušajā nedēļā. 61 00:03:59,130 --> 00:04:02,020 Tātad šeit ir URL paraugs, un šeit slīpsvītra ir noklusējuma lapa 62 00:04:02,020 --> 00:04:04,910 jebkurā tīmekļa serverī. 63 00:04:04,910 --> 00:04:06,695 Tas var būt index.html, tas var būt kaut kas cits, tā ir tikai 64 00:04:06,695 --> 00:04:08,480 pieņemtā prakse. 65 00:04:08,480 --> 00:04:10,850 Bet tas attiecas uz to, kas patiesībā ir noklusējuma iestatījums. 66 00:04:10,850 --> 00:04:13,467 Protams, varat apmeklēt jebkurā pārlūkprogrammā, piemēram, URL, kas 67 00:04:13,467 --> 00:04:16,085 beidzas ar file.html vai kaut ko citu punkts HTML-- , un tas burtiski 68 00:04:16,085 --> 00:04:18,702 nozīmē, ka jūsu pārlūkprogramma vēlas, lai šis fails būtu šajā 69 00:04:18,702 --> 00:04:21,320 serverī. 70 00:04:21,320 --> 00:04:23,730 Vai, protams, mēs redzējām, ka tā var būt mape. 71 00:04:23,730 --> 00:04:27,306 Un šīs mapes iekšpusē, iespējams, ir kāds noklusējuma faila 72 00:04:27,306 --> 00:04:30,883 nosaukums, piemēram, index.html, vai arī varat būt precīzāks, 73 00:04:30,883 --> 00:04:34,460 piemēram, folder/file.html, un vispārīgi mēs tos saucām par ceļiem. 74 00:04:34,460 --> 00:04:37,615 Un patiešām ceļš ir tikai atrašanās vieta jūsu Mac datorā, datorā vai 75 00:04:37,615 --> 00:04:40,770 serverī, kurā atrodas kāda informācija. 76 00:04:40,770 --> 00:04:43,300 Bet šodien mēs to pārdēvēsim tikai, lai izmantotu citu izplatītu 77 00:04:43,300 --> 00:04:45,830 terminoloģiju, taču tie patiesībā ir tikai sinonīmi. 78 00:04:45,830 --> 00:04:49,470 Šodien mēs runāsim par tām pašām lietām kā maršrutiem, jo šodien mēs 79 00:04:49,470 --> 00:04:53,110 galu galā aizstāsim HTTP serveri, kas tikai apkalpo statisku saturu, 80 00:04:53,110 --> 00:04:56,750 ko jūs visi rakstāt ar savu tīmekļa serveri. 81 00:04:56,750 --> 00:05:01,175 Tātad tagad jūs kontrolēsit, ko serveris dara, atbildot uz lietotāja 82 00:05:01,175 --> 00:05:05,600 pieprasījumu, lai jūs varētu atbildēt interaktīvi un dinamiski. 83 00:05:05,600 --> 00:05:08,030 Bet mēs joprojām redzēsim šādas metodes. 84 00:05:08,030 --> 00:05:11,267 Tie bija mūsu tā sauktie HTTP parametri. 85 00:05:11,267 --> 00:05:13,850 Tie ir viss, kas URL ir aiz jautājuma zīmes. 86 00:05:13,850 --> 00:05:15,870 Un tas var būt atslēga = vērtība. 87 00:05:15,870 --> 00:05:17,030 Piemērs bija, kāds? 88 00:05:17,030 --> 00:05:20,000 Kad mēs spēlējāmies ar Google, kas bija atslēga un kāda bija vērtība, 89 00:05:20,000 --> 00:05:22,970 ko es pirmo reizi izmēģināju? 90 00:05:22,970 --> 00:05:24,020 Ir kāda atmiņas? 91 00:05:26,550 --> 00:05:30,420 Es meklēju kaķus, un tāpēc atslēga, ko es atradu, bija cue, jo tieši 92 00:05:30,420 --> 00:05:34,290 to Lerijs un Sergejs, kuri pirms gadiem izveidoja Google, nolēma, kā 93 00:05:34,290 --> 00:05:38,160 nosaukumu piešķirt HTML tekstlodziņam, kurā ierakstāt savu vaicājumu. 94 00:05:38,160 --> 00:05:41,294 Un, ja es ierakstu CAT kā cat, tā vērtība Google vietrādī URL nonāks 95 00:05:41,294 --> 00:05:44,428 kā jautājuma zīme, cat = vērtība. 96 00:05:44,428 --> 00:05:46,454 Un es minēju, ka bieži vien vēlaties nosūtīt divus dažādus ievades 97 00:05:46,454 --> 00:05:48,480 datus serverim. 98 00:05:48,480 --> 00:05:51,438 Un tāpēc es iesaku jums vienkārši sekot konjunkcijas zīmēm. 99 00:05:51,438 --> 00:05:53,800 Un & atdala šos atslēgu - vērtību pārus. 100 00:05:53,800 --> 00:05:55,804 Bet atkal šī ir tā pati sasodītā paradigma, kas iepriekš, un mēs to 101 00:05:55,804 --> 00:05:57,808 esam redzējuši tik daudzas reizes, vai ne? 102 00:05:57,808 --> 00:06:00,030 Atslēgu - vērtību pāri vārdnīcās Python valodā. 103 00:06:00,030 --> 00:06:03,690 Mēs esam redzējuši HTML atribūtus un to vērtības. 104 00:06:03,690 --> 00:06:06,480 Mēs esam redzējuši CSS rekvizītus un to vērtības. 105 00:06:06,480 --> 00:06:09,270 Tas viss ir viens un tas pats, kaut ko sasaistīt ar kaut ko citu. 106 00:06:09,270 --> 00:06:12,590 Lai gan šķiet, ka katrai valodai, katram cilvēkam ir sava dzimtā 107 00:06:12,590 --> 00:06:15,910 valoda, tā patiešām ir viena un tā pati ideja. 108 00:06:15,910 --> 00:06:19,440 Šo kaut kā saistīšanu ar kaut ko citu mēs turpināsim redzēt. 109 00:06:19,440 --> 00:06:23,085 Un, lai būtu konkrēti, HTTP teksta rindiņas, kas atradās šajās 110 00:06:23,085 --> 00:06:26,730 virtuālajās aploksnēs, tā teikt. 111 00:06:26,730 --> 00:06:30,022 Ja es patiešām izvēlētos — mēģinot Google meklēt kaut ko līdzīgu 112 00:06:30,022 --> 00:06:33,315 kaķiem, atcerieties, ka šis bija ziņojums, ko mana pārlūkprogramma 113 00:06:33,315 --> 00:06:36,607 nosūtīja uz serveri, lai liktu Google meklēt nevis suņus, bet šajā 114 00:06:36,607 --> 00:06:39,900 gadījumā kaķus. 115 00:06:39,900 --> 00:06:42,360 Ko HTTP serveris ir darījis mūsu labā? 116 00:06:42,360 --> 00:06:46,635 Nu, tas tikai ir rādijis HTML failus, CSS failus, varbūt dažus JS vai 117 00:06:46,635 --> 00:06:50,910 JavaScript failus, taču tas ir ignorējis HTTP parametrus. 118 00:06:50,910 --> 00:06:53,430 Tāpat kā HTTP serveris nepieņem lietotāja ievadi. 119 00:06:53,430 --> 00:06:53,970 Kāpēc? 120 00:06:53,970 --> 00:06:55,270 Nu ko tas ar to darīs? 121 00:06:55,270 --> 00:06:57,876 Tā kā jūs jau uzrakstījāt HTML, jūs jau rakstījāt CSS, tāpat kā nav 122 00:06:57,876 --> 00:07:00,483 jāpieņem nekādi lēmumi, kamēr mēs neieviesīsim serverī pareizu 123 00:07:00,483 --> 00:07:03,090 programmēšanas valodu. 124 00:07:03,090 --> 00:07:06,528 Un tāpēc mēs tagad atteiksimies no šīs vienkāršās HTTP servera 125 00:07:06,528 --> 00:07:09,966 programmas un iepazīstināsim jūs ar jūsu serveri, kas veiks 126 00:07:09,966 --> 00:07:13,404 parsēšanu, proti, šo atslēgu - vērtību pāru izvilkšanu, lai jums un 127 00:07:13,404 --> 00:07:16,842 man nevajadzētu pēkšņi rakstīt Python kodu, kas analizē šīs lietas, 128 00:07:16,842 --> 00:07:20,280 izdomā, kuras lapas pieprasīja atslēgu vērtību pārus. 129 00:07:20,280 --> 00:07:22,530 To visu mēs joprojām saņemsim bez maksas, vienkārši izmantojot 130 00:07:22,530 --> 00:07:24,780 pareizo sistēmu. 131 00:07:24,780 --> 00:07:27,480 Un tāpēc šodien mēs atkārtoti apskatām Python, kuru tagad kaut kādā 132 00:07:27,480 --> 00:07:30,180 veidā esam izmantojuši pēdējo nedēļu laikā. 133 00:07:30,180 --> 00:07:32,235 Un patiešām tā ir sava veida līme, kas ļauj mums savienot daļas no 134 00:07:32,235 --> 00:07:34,290 mūsu pašu loģikas. 135 00:07:34,290 --> 00:07:36,737 Mēs to redzējām ar SQL, tagad mēs to redzēsim ar HTML, CSS un pat 136 00:07:36,737 --> 00:07:39,185 JavaScript, ja vēlamies. 137 00:07:39,185 --> 00:07:41,147 Un mēs šodien redzēsim arī citu valodu, ne programmēšanas valodu, ko 138 00:07:41,147 --> 00:07:43,110 sauc par Jinja. 139 00:07:43,110 --> 00:07:46,335 Un tā būs izplatīta paradigma reālajā pasaulē, kurā dažādas valodas, 140 00:07:46,335 --> 00:07:49,560 dažādas bibliotēkas, dažādi ietvari bieži aizņemas viens no otra vai 141 00:07:49,560 --> 00:07:52,785 izmanto tehnoloģijas, kuras kāds cits uzrakstījis, lai nebūtu 142 00:07:52,785 --> 00:07:56,010 jāizgudro ritenis no jauna. 143 00:07:56,010 --> 00:07:57,870 Tātad Flask ir tikai satvars. 144 00:07:57,870 --> 00:08:00,630 Tā ir trešās puses bibliotēka, mūsdienās tā ir diezgan populāra, 145 00:08:00,630 --> 00:08:03,390 salīdzinoši vienkārša, tāpēc mēs to izmantojam CS50. 146 00:08:03,390 --> 00:08:07,010 Ja esat programmējis pirms CS50, Django ir vēl viens populārs satvars 147 00:08:07,010 --> 00:08:10,630 vai bibliotēka Python telpā, taču tas ir nedaudz sarežģītāks. 148 00:08:10,630 --> 00:08:11,790 Tāpēc mēs koncentrējamies uz Flask. 149 00:08:11,790 --> 00:08:14,640 Un Jinja, mēs redzēsim, nav programmēšanas valoda. 150 00:08:14,640 --> 00:08:18,470 Tā būs tikai zināma sintakse — par laimi pazīstama — ar figūriekavām, 151 00:08:18,470 --> 00:08:22,300 kas ļauj izmantot vietturus mūsu faktiskajās tīmekļa lapās. 152 00:08:22,300 --> 00:08:25,640 Tātad atkal jūs galu galā apspriedīsit, kur atrodas šo dažādo 153 00:08:25,640 --> 00:08:28,980 tehnoloģiju līnijas, taču šīs nav interesantas idejas. 154 00:08:28,980 --> 00:08:30,525 Interesantās idejas ir tās, kurām galvenā uzmanība tiks pievērsta 155 00:08:30,525 --> 00:08:32,070 kodā. 156 00:08:32,070 --> 00:08:36,127 Taču, sākot no šodienas, tā vietā, lai darbinātu HTTP serveri, lai 157 00:08:36,127 --> 00:08:40,185 rādītu statisku vietni, mēs liksim jums sākt burtiski palaist Flask 158 00:08:40,185 --> 00:08:44,242 space run termināļa logā, lai palaistu savu tīmekļa serveri, kas ir 159 00:08:44,242 --> 00:08:48,300 ieviests Python, izmantojot šo Flask satvaru. 160 00:08:48,300 --> 00:08:51,405 Tātad bootstrap bija bibliotēka, lai padarītu jūsu CSS un JavaScript 161 00:08:51,405 --> 00:08:54,510 skaistākus un interaktīvākus. 162 00:08:54,510 --> 00:08:58,305 Flask ir satvars vai bibliotēka, lai padarītu jūsu Python kodu vēl 163 00:08:58,305 --> 00:09:02,100 patīkamāku lietošanai, jo jūs aizņematies iespējas no kāda cita. 164 00:09:02,100 --> 00:09:04,150 Labi, kā mēs varam to darīt? 165 00:09:04,150 --> 00:09:07,312 Ja vēlaties rakstīt savu tīmekļa lietojumprogrammu, savu amazon.com, 166 00:09:07,312 --> 00:09:10,475 savu google.com programmā Python, izmantojot Flask, jums ir jābūt 167 00:09:10,475 --> 00:09:13,637 failam ar nosaukumu app.py pēc vienošanās, kurā ir viss jūsu Python 168 00:09:13,637 --> 00:09:16,800 kods. 169 00:09:16,800 --> 00:09:18,555 Un pēc tam mape ar nosaukumu templates, kur atrodas visas jūsu 170 00:09:18,555 --> 00:09:20,310 veidnes. 171 00:09:20,310 --> 00:09:23,050 Un pagaidām jūsu veidnes ir tikai jūsu HTML faili. 172 00:09:23,050 --> 00:09:25,800 Tātad, ja mēs tagad sāksim veidot interesantākas interaktīvas lietas, 173 00:09:25,800 --> 00:09:28,550 piemēram, google.com vai amazon.com, mums ir jāspēj izpildīt kodu 174 00:09:28,550 --> 00:09:31,300 serverī. 175 00:09:31,300 --> 00:09:32,550 Un tā ir pieņemts. 176 00:09:32,550 --> 00:09:34,650 Tas vairs nav obligāti indeksēts HTML, tās ir šīs divas lietas 177 00:09:34,650 --> 00:09:36,750 augstākajā līmenī. 178 00:09:36,750 --> 00:09:39,840 To sakot, mēs ātri redzēsim, ka pastāv dažas citas konvencijas. 179 00:09:39,840 --> 00:09:43,012 Un manos tiešsaistes piemēros un devītajā problēmu kopā jūs redzēsiet 180 00:09:43,012 --> 00:09:46,185 citu failu ar nosaukumu requirements.txt, kas ir tikai teksta fails, 181 00:09:46,185 --> 00:09:49,357 kas ļauj uzskaitīt visas trešās puses bibliotēkas, kuras jūsu 182 00:09:49,357 --> 00:09:52,530 lietojumprogramma varētu vēlēties izmantot. 183 00:09:52,530 --> 00:09:55,110 Tas ir pieņemts, lai serveris varētu automātiski instalēt lietas jūsu 184 00:09:55,110 --> 00:09:57,690 vietā, jums tas nav jādara manuāli. 185 00:09:57,690 --> 00:10:01,350 Un tad statiskais būs tas, kur burtiski nonāk jūsu statiskais saturs. 186 00:10:01,350 --> 00:10:04,695 Tātad, ja jums ir attēli savai tīmekļa lietojumprogrammai, ja jums ir 187 00:10:04,695 --> 00:10:08,040 JavaScript faili, CSS faili, kas parasti ir statiski. 188 00:10:08,040 --> 00:10:10,470 Tie ir tikai pieņēmumi, to visu var mainīt. 189 00:10:10,470 --> 00:10:12,820 Bet tas ir veids, kā rīkoties. 190 00:10:12,820 --> 00:10:14,890 Tāpēc mēs jūs iepazīstināsim ar noklusējuma iestatījumiem. 191 00:10:14,890 --> 00:10:16,660 Labi, ko tas nozīmē? 192 00:10:16,660 --> 00:10:19,586 Piemēram, kā es varētu ieviest savu tīmekļa lietojumprogrammu, 193 00:10:19,586 --> 00:10:22,513 izmantojot Python, kas kaut kādā veidā izspļauj ziņojumu, piemēram, 194 00:10:22,513 --> 00:10:25,440 hello, world? 195 00:10:25,440 --> 00:10:28,160 Labi, izrādās, tikai šis. 196 00:10:28,160 --> 00:10:31,810 Tagad mēs to atšķetināsim tikai pēc brīža, taču šis ir faila app.py 197 00:10:31,810 --> 00:10:35,460 parauga saturs, kas acīmredzot izmanto kādu bibliotēku-- piemēram, 198 00:10:35,460 --> 00:10:39,110 pazīstamu sintaksi no kaut kā, importē-- kaut ko citu. 199 00:10:39,110 --> 00:10:41,190 Mēs to esam redzējuši iepriekš ar CSV failiem un citām bibliotēkām — 200 00:10:41,190 --> 00:10:43,270 šī ir nedaudz jauna sintakse, bet pagaidām tā ir kopēšana - 201 00:10:43,270 --> 00:10:45,350 ielīmēšana. 202 00:10:45,350 --> 00:10:48,530 Šī noteikti ir jauna sintakse un dīvaina - ar @ zīmi. 203 00:10:48,530 --> 00:10:50,330 Bet šodien mēs to redzēsim atkal un atkal. 204 00:10:50,330 --> 00:10:52,075 Un sākotnēji tā ir tikai kopēšana un ielīmēšana, līdz jūs saprotat, 205 00:10:52,075 --> 00:10:53,820 ko tas dara jūsu labā. 206 00:10:53,820 --> 00:10:56,794 Bet šeit ir vismaz dažas pazīstamas lietas, piemēram, index.html 207 00:10:56,794 --> 00:10:59,768 joprojām būs ar mums, taču tas, kad un kā to parādīt lietotājam, būs 208 00:10:59,768 --> 00:11:02,742 atkarīgs no mums. 209 00:11:02,742 --> 00:11:03,950 Tātad padarīsim to reālāku. 210 00:11:03,950 --> 00:11:07,650 Ļaujiet man pāriet uz VS code šeit un ļaujiet man turpināt un 211 00:11:07,650 --> 00:11:11,350 izveidot — kā būtu, ja mēs to darītu Hello — ļaujiet man veikt mkdir 212 00:11:11,350 --> 00:11:15,050 Hello, lai izveidotu jaunu mapi ar nosaukumu Hello. 213 00:11:15,050 --> 00:11:17,975 Un es ieiešu tajā ar CD, lai visus šos failus izolētu vienā 214 00:11:17,975 --> 00:11:20,900 direktorijā, lai mums šodien būtu dažādas lietotnes un dažādas mapes. 215 00:11:20,900 --> 00:11:24,980 Un tagad es izpildīšu kodu-- darīsim šādi patiesībā. 216 00:11:24,980 --> 00:11:29,840 Izpildīsim mūsu mkdir templates.html — atvainojiet, ne templates.html. 217 00:11:29,840 --> 00:11:32,875 Ļaujiet man pārdēvēt to par templates, izmantojot komandu MV. 218 00:11:32,875 --> 00:11:34,312 Tam nav nekāda sakara ar tīmekļa programmēšanu, es pieļāvu drukas 219 00:11:34,312 --> 00:11:35,750 kļūdas. 220 00:11:35,750 --> 00:11:39,110 Tātad, ja es tagad ierakstu LS, man ir mape ar nosaukumu templates. 221 00:11:39,110 --> 00:11:41,750 Labi, izveidosim failu ar nosaukumu index.html, kas būs ļoti 222 00:11:41,750 --> 00:11:44,390 vienkāršs un diezgan lielā mērā kopēts un ielīmēts no pagājušās 223 00:11:44,390 --> 00:11:47,030 nedēļas. 224 00:11:47,030 --> 00:11:50,255 Ļaujiet man paslēpt savu termināļa logu un ļaujiet man ļoti ātri 225 00:11:50,255 --> 00:11:53,480 izveidot vienkāršu Hello, world lapu, izmantojot savu HTML tagu. 226 00:11:53,480 --> 00:11:59,060 Lang will = angļu, tad šajā iekšpusē man būs galvenes tags. 227 00:11:59,060 --> 00:12:01,220 Iekšpusē man būs virsraksta tags, un es vienkārši nosaukšu to par 228 00:12:01,220 --> 00:12:03,380 Hello. 229 00:12:03,380 --> 00:12:05,855 Tad man būs pamatdaļa, un es teikšu tikai kaut ko vienkāršu, 230 00:12:05,855 --> 00:12:08,330 piemēram, Hello, world. 231 00:12:08,330 --> 00:12:10,115 Lai tas būtu piemērots mobilajām ierīcēm, atcerieties, ka mēs 232 00:12:10,115 --> 00:12:11,900 pieskārāmies šiem metatagiem. 233 00:12:11,900 --> 00:12:14,460 Tātad, ja jūs pēc nodarbības spēlējaties ar savu mobilo ierīci, nevis 234 00:12:14,460 --> 00:12:17,020 klēpjdatoru, es izpildīšu name = atvērējpēdiņas, aizvērējpēdiņas 235 00:12:17,020 --> 00:12:19,580 “viewport”;. 236 00:12:19,580 --> 00:12:22,235 Viewport-- un tad content = un es to nekad neatceros, es burtiski to 237 00:12:22,235 --> 00:12:24,890 lasu no špikera. 238 00:12:24,890 --> 00:12:27,740 Sākotnējā skala = 1. 239 00:12:27,740 --> 00:12:29,930 Platums = ierīces platums. 240 00:12:29,930 --> 00:12:33,470 Un tie ir tikai šie maģiskie buramvārdi, kuri pārlūkprogrammai saka: 241 00:12:33,470 --> 00:12:37,010 pielāgojiet lietas atbilstoši ierīces izmēram. 242 00:12:37,010 --> 00:12:38,840 Tas nedaudz palielina fontu izmērus. 243 00:12:38,840 --> 00:12:41,090 Labi, tā es būtu darījis pagājušajā nedēļā. 244 00:12:41,090 --> 00:12:43,910 Un es būtu rādījis šo tīmekļa lapu, palaižot HTTP serveri tajā pašā 245 00:12:43,910 --> 00:12:46,730 direktorijā, un es redzētu šo HTML. 246 00:12:46,730 --> 00:12:49,978 Bet tagad sāksim nedaudz kontrolēt lietotāja pieredzi. 247 00:12:49,978 --> 00:12:51,770 Un pagaidām tas būs neiespaidīgi. 248 00:12:51,770 --> 00:12:53,700 Tas vienkārši vienmēr teiks Hello, world. 249 00:12:53,700 --> 00:12:56,410 Taču pēc brīža otrā versija nedaudz dinamiskāk pateiks Hello, David 250 00:12:56,410 --> 00:12:59,120 vai Hello, Carter. 251 00:12:59,120 --> 00:13:01,553 No turienes mēs ātri pāriesim uz tikai interesantākām 252 00:13:01,553 --> 00:13:03,986 lietojumprogrammām, kas beidzas ar tādām lietām kā sīkfaili, 253 00:13:03,986 --> 00:13:06,420 iepirkumu ratiņi un tamlīdzīgi. 254 00:13:06,420 --> 00:13:09,760 Tāpēc ļaujiet man atgriezties savā termināļa logā un, kā solīts, 255 00:13:09,760 --> 00:13:13,100 ļaujiet man izveidot citu failu ar nosaukumu app.py. 256 00:13:13,100 --> 00:13:15,861 Un šeit tagad man ir jāievieš tīmekļa serveris, kuru es izmantošu, 257 00:13:15,861 --> 00:13:18,622 izmantojot šo Flask satvaru. 258 00:13:18,622 --> 00:13:23,571 Pagaidām es tikai kopēšu - ielīmēšanu no tā, ko pirms brīža redzējām 259 00:13:23,571 --> 00:13:28,520 slaidā, no Flask bibliotēkas, kuru esam iepriekš ieinstalējuši jūsu 260 00:13:28,520 --> 00:13:33,470 vietā. Es importēšu funkciju, ko sauc par Flask, ar lielo burtu F. 261 00:13:27,530 --> 00:13:34,770 Tā ir nianse, bet tas ir svarīgi. 262 00:13:34,770 --> 00:13:38,425 Es arī importēšu dažas citas lietas — funkciju, ko sauc par render 263 00:13:38,425 --> 00:13:42,080 template, un vēl vienu mainīgo, ko sauc par request. 264 00:13:42,080 --> 00:13:44,938 Un vienīgais veids, kā es to zinu, ir tas, ka esmu to iepriekš 265 00:13:44,938 --> 00:13:47,797 mācījis, izlasījis dokumentāciju un sekojis apmācībai. 266 00:13:47,797 --> 00:13:49,338 Jūs to nezinātu, ja kāds jums neizstāstītu vai neizlasītu, kā to 267 00:13:49,338 --> 00:13:50,880 izdarīt. 268 00:13:50,880 --> 00:13:54,254 Bet tas nozīmē, ka šajā bibliotēkā ar nosaukumu Flask ir trīs 269 00:13:54,254 --> 00:13:57,628 lietas — funkcija ar nosaukumu Flask, ar lielo F, funkcija, ko sauc 270 00:13:57,628 --> 00:14:01,002 par render template, un tajā iebūvēts mainīgais — request. 271 00:14:01,002 --> 00:14:03,286 Un tie būs visi elementi, kas man ir nepieciešami, lai ieviestu savu 272 00:14:03,286 --> 00:14:05,570 tīmekļa serveri. 273 00:14:05,570 --> 00:14:09,927 Flask, kad vēlaties izveidot tīmekļa lietotni Python valodā, ir 274 00:14:09,927 --> 00:14:14,285 pieņemtsizveidot mainīgo, ko sauc par app, un pēc tam piešķirt tam 275 00:14:14,285 --> 00:14:18,642 šīs Flask funkcijas atgriešanas vērtību — ar lielo F — un ievadīt 276 00:14:18,642 --> 00:14:23,000 tajā __name__, kas ir dīvaini, bet mēs to esam redzējuši iepriekš. 277 00:14:23,000 --> 00:14:29,840 Pirms dažām nedēļām kāds atceras, kad un kāpēc mēs pieminam __name__? 278 00:14:29,840 --> 00:14:31,796 Jā? 279 00:14:31,796 --> 00:14:35,660 Auditorija: [NESAKLAUSĀMS] 280 00:14:35,660 --> 00:14:38,870 DEIVIDS MEILANS: Jā, ja mēs vēlējāmies pārbaudīt, vai faila nosaukums 281 00:14:38,870 --> 00:14:42,080 ir pats main, lai izvairītos no situācijas, kad, rakstot savu 282 00:14:42,080 --> 00:14:45,290 bibliotēkas kodu, jūs nevēlaties, lai jūsu kods tiktu izpildīts 283 00:14:45,290 --> 00:14:48,500 automātiski. 284 00:14:48,500 --> 00:14:51,320 Jūs vēlaties potenciāli izpildīt main funkciju. 285 00:14:51,320 --> 00:14:53,450 Un tas bija šīs problēmas risinājums. 286 00:14:53,450 --> 00:14:56,125 Šodienas vajadzībām tas ir tikai veids, kā jūs to darāt, __name__ 287 00:14:56,125 --> 00:14:58,800 attiecas uz pašreizējo failu. 288 00:14:58,800 --> 00:15:00,955 Un tāpēc šis ir tikai neliels triks, kas liek pārvērst šo failu par 289 00:15:00,955 --> 00:15:03,110 Flask lietojumprogrammu. 290 00:15:03,110 --> 00:15:06,950 Tas arī viss, un pagaidām ar šo rindiņu pietiek. 291 00:15:06,950 --> 00:15:08,760 Labi, ko es gribu darīt pēc tam? 292 00:15:08,760 --> 00:15:10,730 Tagad es esmu atbildīgs par tīmekļa serveri. 293 00:15:10,730 --> 00:15:13,630 Man ir jāieraksta kods, kas, pamatojoties uz pārlūkprogrammas 294 00:15:13,630 --> 00:15:16,530 pieprasījumu, nosaka, kādu failu vai failus es sūtīšu no servera uz 295 00:15:16,530 --> 00:15:19,430 pārlūkprogrammu. 296 00:15:19,430 --> 00:15:21,190 Pagājušajā nedēļā HTTP serveris to visu izdarīja mūsu vietā, 297 00:15:21,190 --> 00:15:22,950 pamatojoties tikai uz faila nosaukumu. 298 00:15:22,950 --> 00:15:25,730 Bet šodien es pārņemšu kontroli pār šo procesu. 299 00:15:25,730 --> 00:15:27,600 Un veids, kā es to daru, ir šāds. 300 00:15:27,600 --> 00:15:32,490 Es saku app.route ar dīvainā kārtā @ zīmi pirms tā. 301 00:15:32,490 --> 00:15:34,610 Python tas ir pazīstams kā dekorators. 302 00:15:34,610 --> 00:15:37,330 Un tā ir Python funkcija, nevis Flask, ko mēs vienkārši neieviesām 303 00:15:37,330 --> 00:15:40,050 iepriekšējās nedēļās, taču tā ir īpaša — tas ir ērts triks, lai 304 00:15:40,050 --> 00:15:42,770 paveiktu to, ko mēs gatavojamies darīt. 305 00:15:42,770 --> 00:15:46,500 Route, kuru vēlos definēt, ir atvērējpēdiņas, aizvērējpēdiņas 306 00:15:46,500 --> 00:15:50,230 “slash”, tas ir, šeit ir kods, kuru serverim jāizpilda ikreiz, kad 307 00:15:50,230 --> 00:15:53,960 lietotājs apmeklē vietnes noklusējuma lapu - /slash. 308 00:15:53,960 --> 00:15:55,940 Kādu kodu es vēlos, lai tie izpildītu? 309 00:15:55,940 --> 00:15:57,650 Es vēlos, lai viņi izpildītu funkciju. 310 00:15:57,650 --> 00:16:00,050 Tāpēc Python varu definēt funkciju. 311 00:16:00,050 --> 00:16:03,650 Es tehniski varu saukt šo lietu jebkā, kā vēlos - x, y, vai z. 312 00:16:03,650 --> 00:16:05,995 Taču, tā kā viņi piekļūst noklusējuma lapai, ko citādi sauc par 313 00:16:05,995 --> 00:16:08,341 vietnes indeksu, es vienkārši saprātīgāk nosaukšu šo funkciju 314 00:16:08,341 --> 00:16:10,687 indekss. 315 00:16:10,687 --> 00:16:13,558 Bet tikai konvencija, jūs varat to saukt par visu, ko vēlaties, bet 316 00:16:13,558 --> 00:16:16,430 x, y vai z, iespējams, ir slikta stilistiskā izvēle. 317 00:16:16,430 --> 00:16:18,690 Šajā gadījumā nav nepieciešami argumenti. 318 00:16:18,690 --> 00:16:23,940 Un vienīgais, ko šis kods — šī funkcija darīs, — pagaidām turpināsim 319 00:16:23,940 --> 00:16:29,190 un liksim tam atgriezt Hello, world atvērējpēdiņas, aizvērējpēdiņas. 320 00:16:29,190 --> 00:16:31,000 Un viss. 321 00:16:31,000 --> 00:16:33,830 Tagad ļaujiet man ieiet savā termināļa logā, ļaujiet man iet uz 322 00:16:33,830 --> 00:16:36,660 priekšu un palaist Flask tajā pašā direktorijā, kurā ir app.py, un 323 00:16:36,660 --> 00:16:39,490 nospiest taustiņu Enter. 324 00:16:39,490 --> 00:16:42,480 Es redzēšu kādu šifrētu izvadi, bet, kas ietvers manas koda vietas 325 00:16:42,480 --> 00:16:45,470 URL, un, ja es atvēršu šo URL pēc tam, kad virzīšu kursoru virs tā, 326 00:16:45,470 --> 00:16:48,460 es patiešām redzēšu Hello, world, kā jūs varētu cerēt. 327 00:16:48,460 --> 00:16:49,640 Bet ļaujiet man izdarīt šādi. 328 00:16:49,640 --> 00:16:51,962 Ļaujiet man turpināt un ar peles labo pogu noklikšķināt uz lapas un 329 00:16:51,962 --> 00:16:54,285 noklikšķināt uz Skatīt lapas avotu. Ja iepriekš neesat to izdarījis, 330 00:16:54,285 --> 00:16:56,607 tiek parādīts viss lapas HTML kods, lai cik skaists vai nekārtīgs tas 331 00:16:56,607 --> 00:16:58,930 būtu. 332 00:16:58,930 --> 00:17:01,509 Un tas arī viss, nav neviena HTML, ko es esmu izspļāvis, tikai 333 00:17:01,509 --> 00:17:04,089 atvērējpēdiņas, aizvērējpēdiņas “Hello, world”. 334 00:17:04,089 --> 00:17:06,554 Nu, ja es tiešām vēlos izspļaut pilnu tīmekļa lapu, kas šeit nav 335 00:17:06,554 --> 00:17:09,020 nekas nozīmīgs, jo kuram gan rūps? 336 00:17:09,020 --> 00:17:10,400 Jebkurā gadījumā tas ir tikai teksts. 337 00:17:10,400 --> 00:17:14,510 Bet, ja es vēlos izspļaut visu failu, ļaujiet man izdarīt šādi. 338 00:17:14,510 --> 00:17:18,110 Būtībā es vēlos atgriezt index.html saturu, kurā ir visi man vēlamie 339 00:17:18,110 --> 00:17:21,710 tagi — mobilajām ierīcēm piemērotas lietas un tas viss. 340 00:17:21,710 --> 00:17:25,540 Es nevaru vienkārši atgriezt index.html, bet es varu atgriezt šo. 341 00:17:25,540 --> 00:17:30,190 Render template, atvērējpēdiņas, aizvērējpēdiņas, “index.html”. 342 00:17:30,190 --> 00:17:33,430 Un saskaņā ar Flask dokumentāciju šī render template funkcija parasti 343 00:17:33,430 --> 00:17:36,670 atradīs šo failu manā veidņu mapē. 344 00:17:36,670 --> 00:17:39,743 Tas to atvērs un pēc tam visu izspļaus pārlūkprogrammā, lai es varētu 345 00:17:39,743 --> 00:17:42,816 glabāt visu savu HTML vienuviet un visu savu Python kodu šajā vienā 346 00:17:42,816 --> 00:17:45,890 vietā. 347 00:17:45,890 --> 00:17:48,456 Tāpēc tagad, ja es atgriezīšos savā pārlūkprogrammā un atkārtoti 348 00:17:48,456 --> 00:17:51,023 ielādēšu, es nedomāju, ka tiešām pamanīšu atšķirību, jo galu galā tas 349 00:17:51,023 --> 00:17:53,590 ir viens un tas pats teksts. 350 00:17:53,590 --> 00:17:57,510 Bet, ja es tagad skatos lapas avotu, ievērojiet, ka ir viss HTML, kas 351 00:17:57,510 --> 00:18:01,430 tikko tika nosūtīts pārlūkprogrammai. 352 00:18:01,430 --> 00:18:05,245 Tas ir tikai tāpēc, ka mums ir veidojošie bloki — puzles gabali, tā 353 00:18:05,245 --> 00:18:09,060 teikt— ar kuriem tagad glabāt visu mūsu HTML vienuviet — un, 354 00:18:09,060 --> 00:18:12,875 iespējams, CSS, JavaScript un tā tālāk, bet tad rādām ko gribam, lai 355 00:18:12,875 --> 00:18:16,690 gan es tikai akli izvadu index.html. 356 00:18:16,690 --> 00:18:19,773 Tātad, pirms mēs turpinām, uzdodiet visus jautājumus par to, kas, es 357 00:18:19,773 --> 00:18:22,856 vēlreiz apgalvoju, ir kā mana manuālā versija par to, ko HTTP 358 00:18:22,856 --> 00:18:25,940 serveris mūsu labā darīja automātiski pagājušajā nedēļā. 359 00:18:25,940 --> 00:18:28,110 Bet šādi jūs to darāt pats. 360 00:18:28,110 --> 00:18:30,620 Vai ir kādi jautājumi? 361 00:18:30,620 --> 00:18:33,695 Labi, padarīsim to interesantāku, ko mēs nevarētu izdarīt tikai ar 362 00:18:33,695 --> 00:18:36,770 HTTP serveri un HTML. 363 00:18:36,770 --> 00:18:39,750 Kāpēc gan mums to nedarīt? 364 00:18:39,750 --> 00:18:42,500 Ļaujiet man apmeklēt to pašu URL, un es došos uz Tuvināt. 365 00:18:42,500 --> 00:18:44,525 Un jūsu URL atšķirsies no mana code space, taču šeit tas beigsies 366 00:18:44,525 --> 00:18:46,550 līdzīgi. 367 00:18:46,550 --> 00:18:51,560 Piemēram, es ievadīšu /?name=David. 368 00:18:51,560 --> 00:18:54,560 Vai q=cats, vai name=Carter — jebkurš atslēgas - vērtību pāris, kuru 369 00:18:54,560 --> 00:18:57,560 es vēlos. Es pievienošu aiz slīpsvītru un jautājuma zīmi, tādējādi 370 00:18:57,560 --> 00:19:00,560 nodrošinot lietotāja ievadi serverī. 371 00:19:00,560 --> 00:19:02,443 Lai gan lietotājam ļoti nedraudzīgā veidā. 372 00:19:02,443 --> 00:19:04,610 Neviens parasti to nedarīs savā pārlūkprogrammā. 373 00:19:04,610 --> 00:19:07,340 Enter — šeit nekas nemainās, ir tikai rakstīts Hello, world, bet vai 374 00:19:07,340 --> 00:19:10,070 nebūtu jauki, ja būtu rakstīts Hello, David? 375 00:19:10,070 --> 00:19:12,553 Vai līdzvērtīgi, ja es vēlreiz pietuvinātu šeit un nomainītu Deividu 376 00:19:12,553 --> 00:19:15,036 uz Kārteru un nospiestu taustiņu Enter, vai nebūtu jauki, ja tā vietā 377 00:19:15,036 --> 00:19:17,520 būtu rakstīts Hello, Carter? 378 00:19:17,520 --> 00:19:19,320 Tāpēc mums tur ir vajadzīgs zināms dinamisms. 379 00:19:19,320 --> 00:19:22,160 Un šeit tagad Python būs mūsu draugs. 380 00:19:22,160 --> 00:19:26,893 Ja vēlos piekļūt HTTP parametriem, ko lietotājs ir norādījis, 381 00:19:26,893 --> 00:19:31,626 izmantojot vietrādi URL — vai tas būtu q=cats vai name=David, es varu 382 00:19:31,626 --> 00:19:36,360 izmantot šo īpašo mainīgo, ko jau pirms - iepriekš importēju. 383 00:19:36,360 --> 00:19:40,090 Un es varu darīt šādi — ja ir HTTP parametrs ar nosaukumu name, kurā 384 00:19:40,090 --> 00:19:43,820 es izsaukšu request.args. 385 00:19:43,820 --> 00:19:47,585 Tad es iešu uz priekšu un izveidošu mainīgo ar nosaukumu name, un es 386 00:19:47,585 --> 00:19:51,350 iestatīšu to vienādu ar request.args, kvadrātiekavas, name. 387 00:19:51,350 --> 00:19:54,480 Citādi — ja šajā īpašajā mainīgajā, ko sauc par request.args, nav, 388 00:19:54,480 --> 00:19:57,610 atvērējpēdiņas, aizvērējpēdiņas, atslēgas “name”, es tikai pieņemšu, 389 00:19:57,610 --> 00:20:00,740 ka pēc noklusējuma lietotāja vārds ir world. 390 00:19:57,200 --> 00:20:01,800 Kas te tagad notiek? 391 00:20:01,800 --> 00:20:05,356 Izrādās, ka Flask nodrošina mums šo īpašo mainīgo, ko sauc par 392 00:20:05,356 --> 00:20:08,913 request.args, un tajā ir visi atslēgu - vērtību pāri, kas varētu būt 393 00:20:08,913 --> 00:20:12,470 ienākuši caur URL. 394 00:20:12,470 --> 00:20:15,815 Tātad, ja jums būtu jāuzmin, kāda veida a-- vai kāds datu tips ir 395 00:20:15,815 --> 00:20:19,160 request.args? 396 00:20:19,160 --> 00:20:21,410 Tas ir tā nosaukums, un te tas ir kontekstā. 397 00:20:21,410 --> 00:20:23,750 Devītā rinda varētu sniegt pavedienu. 398 00:20:23,750 --> 00:20:28,710 Kāds datu tips varētu būt request.args programmā Python? 399 00:20:28,710 --> 00:20:29,715 Jā. 400 00:20:29,715 --> 00:20:30,590 Auditorija: [NESAKLAUSĀMS] 401 00:20:30,590 --> 00:20:33,265 DEIVIDS MEILANS: Tas nebūs masīvs vai saraksts, jo tie vienmēr, katrā 402 00:20:33,265 --> 00:20:35,940 valodā, ko esam redzējuši, ir skaitliski indeksēti. 403 00:20:35,940 --> 00:20:38,580 Bet jūs esat tuvu. 404 00:20:38,580 --> 00:20:39,445 Kāds cits? 405 00:20:39,445 --> 00:20:40,320 Auditorija: [NESAKLAUSĀMS] 406 00:20:40,320 --> 00:20:41,612 DEIVIDS MEILANS: Tā ir vārdnīca. 407 00:20:41,612 --> 00:20:44,532 Tātad vārdnīca sintaktiski ir līdzīga Python sarakstam, taču ciparu 408 00:20:44,532 --> 00:20:47,452 indeksu, piemēram, 0 1 2, vietā varat burtiski izmantot virknes, 409 00:20:47,452 --> 00:20:50,373 piemēram, atvērējpēdiņas, aizvērējpēdiņas, "name" . 410 00:20:50,373 --> 00:20:52,540 Tagad tie ir mazliet baltie meli, tā ir vārdnīca. 411 00:20:52,540 --> 00:20:55,210 Bet tā ir Flask īpašā vārdnīcas versija. 412 00:20:55,210 --> 00:20:56,983 Bet sintakse, ar kuras palīdzību jūs varat tai piekļūt, ir tieši tāda 413 00:20:56,983 --> 00:20:58,757 pati. 414 00:20:58,757 --> 00:21:00,090 Un es patiesībā - tā ir drukas kļūda. 415 00:21:00,090 --> 00:21:01,780 Es negribēju tur minēt names. 416 00:21:01,780 --> 00:21:03,970 Es gribēju teikt vārdu vienskaitlī, bet citādi es domāju, ka kods ir 417 00:21:03,970 --> 00:21:06,160 pareizs. 418 00:21:06,160 --> 00:21:10,010 Tas astotajā rindā pārbaudīs, vai failā request.args ir atslēga ar 419 00:21:10,010 --> 00:21:13,860 nosaukumu name, un, ja tā, tā iestatīs to vienādu ar šo vērtību. 420 00:21:13,860 --> 00:21:15,900 Pretējā gadījumā tas būs pēc noklusējuma world. 421 00:21:15,900 --> 00:21:18,540 Es to nedarīju apzināti. 422 00:21:18,540 --> 00:21:23,130 Es pievienoju šo, if else, un nedarīju šādi, kāpēc? 423 00:21:23,130 --> 00:21:26,715 Kāda kļūda var notikt, ja es vienkārši akli satveru vārdu? 424 00:21:26,715 --> 00:21:30,645 Auditorija: [NESAKLAUSĀMS] 425 00:21:30,645 --> 00:21:31,520 DEIVIDS MEILANS: Tieši tā. 426 00:21:31,520 --> 00:21:35,090 Ja URL beigās nebūtu nekā tāda, kas būtu formā - ?name=kāds, tad 427 00:21:35,090 --> 00:21:38,660 vārda atslēgas nebūtu. 428 00:21:38,660 --> 00:21:41,313 Un tas bija dažas nedēļas atpakaļ, taču tas radītu vienu no 429 00:21:41,313 --> 00:21:43,966 kaitinošajām atslēgaskļūdām, kad saņemat izsekošanas rezultātus, jo 430 00:21:43,966 --> 00:21:46,620 esat kļūdījies, jo izmantojāt neeksistējošu virkni. 431 00:21:46,620 --> 00:21:48,975 Tāpēc es vienkārši proaktīvi cenšos izvairīties no šīs situācijas, 432 00:21:48,975 --> 00:21:51,330 tāpat kā pirms pāris nedēļām. 433 00:21:51,330 --> 00:21:55,210 Tāpēc, lai gan tas ir daudz runīgāks, tas ir tikai daudz 434 00:21:55,210 --> 00:21:59,090 aizsargājošāks, lai es nejauši neiekļūtu vārdnīcā, kurā nav atslēgas. 435 00:21:59,090 --> 00:22:00,620 Bet mēs redzēsim, kā mēs varam padarīt to īsāku, lai tas nebūtu 436 00:22:00,620 --> 00:22:02,150 četras rindiņas garš, bet gan vienu. 437 00:22:02,150 --> 00:22:04,290 Bet es domāju, ka tagad es varu izdarīt šādi. 438 00:22:04,290 --> 00:22:08,200 Vai nebūtu jauki, ja tagad manā index.html failā — kurš atcerieties, 439 00:22:08,200 --> 00:22:12,110 ir manā veidņu mapē — vai nebūtu jauki, ja es varētu, piemēram, šeit 440 00:22:12,110 --> 00:22:16,020 izveidot ekvivalentu C formātā, piemēram persona S? 441 00:22:16,020 --> 00:22:19,160 Vai Python, kaut kas līdzīgs šim vārdam. 442 00:22:19,160 --> 00:22:22,445 Tas ir tuvu, un tas ir tikai tāpēc, ka daži dažādi cilvēki izgudro 443 00:22:22,445 --> 00:22:25,730 dažādas valodas, izgudro dažādus satvarus. 444 00:22:25,730 --> 00:22:30,635 Programmā Flask šī sintakse ir, lai faktiski darītu, ak, divas 445 00:22:30,635 --> 00:22:35,540 figūriekavas un pēc tam mainīgā nosaukums tajās. 446 00:22:35,540 --> 00:22:36,470 Kāpēc? 447 00:22:36,470 --> 00:22:39,726 Iespējams, kāds ir izdomājis, kādas ir izredzes, ka normāls cilvēks 448 00:22:39,726 --> 00:22:42,983 kādreiz izmantos divas figūriekavas, vienu vietā? 449 00:22:42,983 --> 00:22:45,576 Tātad tas, iespējams, samazina iespējamību, ka cilvēki patiešām vēlas 450 00:22:45,576 --> 00:22:48,170 izvadīt, burtiski, šādas figūriekavas. 451 00:22:48,170 --> 00:22:51,605 Tātad pēc būtības tas ir līdzīgs Python f virknēm, pēc būtības ir 452 00:22:51,605 --> 00:22:55,040 līdzīgs C personai S, pēc būtības tas ir līdzīgs SQL jautājuma zīmēm. 453 00:22:55,040 --> 00:22:59,120 Tā pati ideja, nedaudz atšķirīga sintakse, un tā ir Jinja. 454 00:22:59,120 --> 00:23:02,720 Tātad tas nav programmēšanas kods pats par sevi, tā ir tikai veidne. 455 00:23:02,720 --> 00:23:05,270 Un patiešām tāpēc šo mapi sauc veidnes. 456 00:23:05,270 --> 00:23:08,173 Tas ir kā uzmetums tam, ko es vēlos, lai tiktu izspļauts lietotājam, 457 00:23:08,173 --> 00:23:11,076 taču man ir tādi vietturi kā šis mainīgais, ko es vēlos pievienot šai 458 00:23:11,076 --> 00:23:13,980 vērtībai. 459 00:23:13,980 --> 00:23:16,610 Bet ar to vien nepietiek. 460 00:23:16,610 --> 00:23:19,685 Skatieties, kas notiek, ja es atgriežos citā pārlūkprogrammā un 461 00:23:19,685 --> 00:23:22,760 atkārtoti ielādēšu lapu pēc tam, kad esmu mainījis lietas šeit. 462 00:23:22,760 --> 00:23:24,420 Atkal ievadīsim name=David. 463 00:23:24,420 --> 00:23:28,970 Enter--aiz Hello, komats nekas netiek izvadīts. 464 00:23:28,970 --> 00:23:33,198 Tātad šķiet, ka vārda mainīgais vēl neeksistē. 465 00:23:33,198 --> 00:23:36,154 Un tieši tāpēc, ja es skatos lapas avotu, jūs varat redzēt, kas tika 466 00:23:36,154 --> 00:23:39,110 nosūtīts pārlūkprogrammai, kaut kas nav kārtībā ar manu vietturi. 467 00:23:39,110 --> 00:23:43,010 Bet man ir tikai nedaudz jāprecizē, ko es gribu, kur nosūtīt. 468 00:23:43,010 --> 00:23:46,012 Tātad izrādās, ka render template funkcijai nav nepieciešams tikai 469 00:23:46,012 --> 00:23:49,015 viens arguments — tās veidnes nosaukums, kuru vēlaties izspļaut--, 470 00:23:49,015 --> 00:23:52,017 bet pēc tam, izmantojot komatus, ir nepieciešami visi vietturi, kurus 471 00:23:52,017 --> 00:23:55,020 vēlaties pievienot. 472 00:23:55,020 --> 00:24:00,606 Piemēram, ja vēlaties, lai vietturis būtu šis-- burtiski, placeholder 473 00:24:00,606 --> 00:24:06,193 šajās figūriekavās, varat norādīt kā otro render template argumentu - 474 00:24:06,193 --> 00:24:11,780 arguments ar nosaukumu placeholder ir vienāds ar jebkuru vārdu. 475 00:24:11,780 --> 00:24:15,350 Tātad vārds (name) ir mainīgais iepriekšējās rindiņās, paceholder ir 476 00:24:15,350 --> 00:24:18,920 mana burtiskā viettura nosaukums figūriekavās, tāpēc tagad, ja es 477 00:24:18,920 --> 00:24:22,490 atgriežos savā pārlūkprogrammā un atkārtoti ielādēju to ar joprojām 478 00:24:22,490 --> 00:24:26,060 atvērējpēdiņas, aizvērējpēdiņas-- ar joprojām ?name=David manā URL, 479 00:24:26,060 --> 00:24:29,630 tagad es tiešām redzu Hello, David. 480 00:24:29,630 --> 00:24:32,330 Un, ja es šeit pietuvinu un ļaujiet man pārcelties uz šejieni. 481 00:24:32,330 --> 00:24:34,700 Ļaujiet man ierakstīt Carter un nospiest Enter — tagad tā vietā es 482 00:24:34,700 --> 00:24:37,070 redzu Hello, Carter. 483 00:24:37,070 --> 00:24:40,190 Tagad ir nedaudz lieki vietturi saukt par “placeholder”, it īpaši, ja 484 00:24:40,190 --> 00:24:43,310 vēlaties, lai tie būtu divi vai trīs. 485 00:24:43,310 --> 00:24:45,300 Tātad jūs faktiski varat to saukt par visu, ko vēlaties. 486 00:24:45,300 --> 00:24:48,633 Un es to nomainīšu atpakaļ uz name, kas ir nedaudz vienkāršāk. 487 00:24:48,633 --> 00:24:50,771 Vienīgais dīvainais ir tas, ka tagad jūs redzēsit, ka rakstāt kodu 488 00:24:50,771 --> 00:24:52,910 šādi. 489 00:24:52,910 --> 00:24:56,210 Un tas ir pareizi, un tā ir norma, tas tikai izskatās dīvaini. 490 00:24:56,210 --> 00:24:59,343 Taču vienība, kas atrodas pa kreisi no vienādības zīmes, ir 491 00:24:59,343 --> 00:25:02,476 vietturis, ko izmantojat veidnē, labajā pusē var būt jebkura vēlamā 492 00:25:02,476 --> 00:25:05,610 vērtība, tostarp mainīgais. 493 00:25:05,610 --> 00:25:08,590 Tāpēc, lai gan es tos nosaucu tieši tāpat-- kas, jāatzīst, izskatās 494 00:25:08,590 --> 00:25:11,570 muļķīgi--, cilvēki mēdz darīt tā. 495 00:25:11,570 --> 00:25:13,520 Tikai tāpēc, ka tas ir vienkāršāk nekā cita vārda, piemēram, 496 00:25:13,520 --> 00:25:15,470 vietturis, ieviešana. 497 00:25:15,470 --> 00:25:20,140 Vai tagad ir jautājumi par šo? 498 00:25:20,140 --> 00:25:22,710 Vai ir kādi jautājumi par šiem vietturiem? 499 00:25:22,710 --> 00:25:23,280 Nē? 500 00:25:23,280 --> 00:25:26,085 Labi, nedaudz saīssināsim to un paskatīsimies, vai mēs nevaram 501 00:25:26,085 --> 00:25:28,890 panākt, lai viss būtu vēl dinamiskāks. 502 00:25:28,890 --> 00:25:31,795 Ļaujiet man tagad piedāvāt izvades vietā-- tā vietā, lai izmantotu šo 503 00:25:31,795 --> 00:25:34,700 nosacījumu, kas radīja ļoti vienkāršu ideju, ļoti detalizētu ar 504 00:25:34,700 --> 00:25:37,605 četrām dažādām rindiņām, bet izrādās, ka ir vieglāks veids, kā to 505 00:25:37,605 --> 00:25:40,510 izdarīt. 506 00:25:40,510 --> 00:25:44,670 Jūs joprojām varat izveidot mainīgo ar nosaukumu name, un jūs varat 507 00:25:44,670 --> 00:25:48,830 iestatīt to vienādu ar request.args, taču tā vietā, lai tikai akli 508 00:25:48,830 --> 00:25:52,990 indeksētu šajā vārdnīcā, izrādās, ka request.args ir iekļauta 509 00:25:52,990 --> 00:25:57,150 funkcija, ko sauc arī par GET. 510 00:25:57,150 --> 00:26:01,930 Varat nodot tai argumentu, kas norāda, kādu vērtību vēlaties iegūt. 511 00:26:01,930 --> 00:26:05,776 Un pēc noklusējuma, ja šajā vārdnīcā nav atslēgas name, šī funkcija 512 00:26:05,776 --> 00:26:09,623 neradīs atslēgas kļūdu, tā vienkārši atgriezīs none, NONE, īpašo 513 00:26:09,623 --> 00:26:13,470 mainīgo — īpašo Python vērtību. 514 00:26:13,470 --> 00:26:15,480 Tādējādi tiek novērsta kļūda jūsu kodā, bet tiek apvienotas četras 515 00:26:15,480 --> 00:26:17,490 rindiņas vienā. 516 00:26:17,490 --> 00:26:20,390 Bet vēl jaukāk, ja lasāt dokumentāciju, funkcija GET var iegūt arī 517 00:26:20,390 --> 00:26:23,290 konkrētu noklusējuma vērtību. 518 00:26:23,290 --> 00:26:25,790 Tātad, ja nevēlaties, lai ekrānā none būtu redzams, piemēram, Hello, 519 00:26:25,790 --> 00:26:28,290 tukšums vai... es domāju, arī tas būtu dīvaini. 520 00:26:28,290 --> 00:26:30,875 Varat vienkārši ievadīt noklusējuma vērtību atbilstoši šīs funkcijas 521 00:26:30,875 --> 00:26:33,460 dokumentācijai, piemēram, world. 522 00:26:33,460 --> 00:26:36,160 Tagad mēs esam pārgājuši no četrām rindiņām uz tikai vienu. 523 00:26:36,160 --> 00:26:37,590 Tātad, iespējams, tas ir labāk izstrādāts. 524 00:26:37,590 --> 00:26:41,330 Un, ja es tagad atgriezīšos pārlūkprogrammā ar Carter iekš URL un 525 00:26:41,330 --> 00:26:45,070 nospiežu pārlādēt, notiks tas pats, taču mēs pamanīsim šo. 526 00:26:45,070 --> 00:26:48,925 Pieņemsim, ka es pilnībā atbrīvojos no name parametra un nospiežu 527 00:26:48,925 --> 00:26:52,780 taustiņu Enter, tagad tas pāriet uz noklusējuma vērtību — world. 528 00:26:52,780 --> 00:26:57,430 Tāpēc tas ir tikai nedaudz labāk izstrādāts, nekā to darot otrā veidā. 529 00:26:57,430 --> 00:27:00,300 Labi, ja mēs uzlabosim lietas par vēl vienu pakāpi. 530 00:27:00,300 --> 00:27:03,540 Un kā būtu, ja mēs ieviestu vairākus maršrutus? 531 00:27:03,540 --> 00:27:06,420 Un patiesībā, iespējams, ieviešot formu. 532 00:27:06,420 --> 00:27:10,515 Jo atkal neviens normāls cilvēks neapmeklēs URL un nepievienos 533 00:27:10,515 --> 00:27:14,610 jautājuma zīmi un savu vārdu, pārlūkprogrammas nedarbojas tā. 534 00:27:14,610 --> 00:27:16,275 Tā darbojas pārlūkprogrammas, bet ne, kā cilvēki mijiedarbojas ar 535 00:27:16,275 --> 00:27:17,940 pārlūkprogrammām. 536 00:27:17,940 --> 00:27:20,320 Jūs un es parasti tā vietā izmantojam formu. 537 00:27:20,320 --> 00:27:23,935 Tagad lietas var kļūt nedaudz interesantākas, veidojot savu tīmekļa 538 00:27:23,935 --> 00:27:27,550 lietojumprogrammu, jo varbūt mēs varētu darīt kaut ko līdzīgu šim. 539 00:27:27,550 --> 00:27:29,740 Ļaujiet man aiziet un atkal tālināt. 540 00:27:29,740 --> 00:27:32,930 Ļaujiet man atgriezties pie sava koda šeit, pārvietot to un tagad 541 00:27:32,930 --> 00:27:36,120 koncentrēties uz failu index.html. 542 00:27:36,120 --> 00:27:39,020 Šī viettura vietā mēs dotu sev tādu formu,ar kādu esam mazliet 543 00:27:39,020 --> 00:27:41,920 spēlējušies pagātnē, neatkarīgi no tā, vai tas ir Google vai kaut kam 544 00:27:41,920 --> 00:27:44,820 citam. 545 00:27:44,820 --> 00:27:47,400 Un lietosim šo formu. 546 00:27:47,400 --> 00:27:50,160 Un šīs formas iekšpusē būs ievade. 547 00:27:50,160 --> 00:27:53,160 Un šīs ievades nosaukums būs, atvērējpēdiņas, aizvērējpēdiņas, “name”. 548 00:27:53,160 --> 00:27:54,480 Tā arī tas ir mulsinoši. 549 00:27:54,480 --> 00:27:58,780 Bet ievadei ir vārda atribūti, bet šis ir personas vārds. 550 00:27:58,780 --> 00:28:00,580 Tāpēc es šeit saku name=name. 551 00:28:00,580 --> 00:28:03,120 Tātad tikai nekārtīga semantikas pasaule. 552 00:28:03,120 --> 00:28:05,295 Un ļaujiet man iet uz priekšu un padarīt to par tekstlodziņu pēc 553 00:28:05,295 --> 00:28:07,470 noklusējuma. 554 00:28:03,120 --> 00:28:07,440 Un tad ļaujiet man piešķirt sev pogu, kuras noklusējuma veids būs 555 00:28:07,440 --> 00:28:11,760 iesniegt. 556 00:28:11,760 --> 00:28:14,740 Un, piemēram, šīs pogas nosaukums būs sveicināt (greet). 557 00:28:14,740 --> 00:28:16,745 Tātad, paskatīsimies, kas šeit notiek, bet ļaujiet man mainīt app.py, 558 00:28:16,745 --> 00:28:18,750 lai tas būtu vienkāršāks. 559 00:28:18,750 --> 00:28:22,110 Es tagad neievadu nevienu vietturi, un es pat no tā atbrīvošos. 560 00:28:22,110 --> 00:28:25,120 Vienkāršības labad es tikai attīšu uz pirmo šīs versijas versiju. 561 00:28:25,120 --> 00:28:28,990 Tagad mainīsim URL, lai atbrīvotos no Carterun manis. 562 00:28:28,990 --> 00:28:31,490 Tāpēc mēs vienkārši dodamies uz un nospiežam taustiņu Enter, un tagad 563 00:28:31,490 --> 00:28:33,990 mums atkal ir ļoti vienkārša forma. 564 00:28:33,990 --> 00:28:35,940 Labi, tā nav īpaši lietotājam draudzīga, taču mēs varam veikt dažus 565 00:28:35,940 --> 00:28:37,890 jaukus uzlabojumus. 566 00:28:37,890 --> 00:28:40,750 Piemēram, mēs varam izslēgt automātisko pabeigšanu, it īpaši, ja es 567 00:28:40,750 --> 00:28:43,610 vēlos rakstīt David un Carter manuāli un nevēlos, lai tas pabeidz 568 00:28:43,610 --> 00:28:46,470 manu domu nodarbības laikā. 569 00:28:46,470 --> 00:28:49,670 Mēs varam veikt automātisko fokusu, kas pēc noklusējuma liek kursoram 570 00:28:49,670 --> 00:28:52,870 mirgot, kas ir jauki, jo tad cilvēkam ar to nav jānodarbojas. 571 00:28:52,870 --> 00:28:55,170 Un tad mums pat var būt viettura atribūts. 572 00:28:55,170 --> 00:28:59,320 Placeholder=name, lai tas būtu kā šīs lietas iebūvētās instrukcijas. 573 00:28:59,320 --> 00:29:01,866 Un tagad, ja es atgriežos uz otru cilni, nekas vēl nav mainījies, jo 574 00:29:01,866 --> 00:29:04,413 man ir vēlreiz jālejupielādē HTML, atkārtoti jāielādē — labi, tagad 575 00:29:04,413 --> 00:29:06,960 tas ir nedaudz lietotājam draudzīgāks. 576 00:29:06,960 --> 00:29:08,580 Uz tā ir rakstīts name gaiši pelēkā krāsā. 577 00:29:08,580 --> 00:29:11,410 Kursors mirgo, un es esmu gatavs darboties. 578 00:29:11,410 --> 00:29:16,300 Taču šī veidlapa vēl nav pievienota nekur, tāpēc darīsim šādi. 579 00:29:16,300 --> 00:29:19,925 Pieņemsim, piemēram, ka šīs formas darbība nebūs līdzīga vietnei 580 00:29:19,925 --> 00:29:23,550 google.com, ko mēs iepriekšējo reizi darījām ar kaķiem. 581 00:29:23,550 --> 00:29:28,440 Tagad es būšu gan šīs vietnes priekšgals, gan aizmugure. 582 00:29:28,440 --> 00:29:31,740 Priekšgals ir tas, ko cilvēks redz — tīmekļa lapa, grafika, formas. 583 00:29:31,740 --> 00:29:34,670 Aizmugure ir tā, ko cilvēks parasti neredz — Python kods, SQL kods, 584 00:29:34,670 --> 00:29:37,600 pats serveris. 585 00:29:37,600 --> 00:29:43,300 Bet tagad es kontrolēju abas pieredzes puses, HTML un arī maršrutus. 586 00:29:43,300 --> 00:29:45,876 Tāpēc vienkārši ierosināsim mums izdomāt savu maršrutu un tā vietā, 587 00:29:45,876 --> 00:29:48,453 lai to nosauktu par /search, kā to dara Google, nosauksim to par 588 00:29:48,453 --> 00:29:51,030 /greet. 589 00:29:51,030 --> 00:29:53,655 Un ļaujiet man norādīt, ka metode, ko šī forma izmantos, kas tehniski 590 00:29:53,655 --> 00:29:56,280 ir noklusējuma metode, būs get. 591 00:29:56,280 --> 00:29:59,385 Un mulsinoši get ar mazajiem burtiem, lai gan pie aploksnes tēmas mēs 592 00:29:59,385 --> 00:30:02,490 runājam par to praktiski, patiesībā tie ir lielie burti. 593 00:30:02,490 --> 00:30:04,320 Atkal, kreisā roka nerunāja ar labo roku, kad šīs lietas tika 594 00:30:04,320 --> 00:30:06,150 izlemtas. 595 00:30:06,150 --> 00:30:10,395 Labi, tāpēc viss, ko esmu paveicis, ir izveidojis tīmekļa formu, kas 596 00:30:10,395 --> 00:30:14,640 maršrutam ar nosaukumu /greet nosūtīs jebkuru tekstlodziņa vērtību. 597 00:30:14,640 --> 00:30:18,133 Pēc noklusējuma, tā kā nav HTTP vai HTTPS, vai domēna nosaukuma, 598 00:30:18,133 --> 00:30:21,626 /greet tiks pieņemts, ka tas nav google.com, bet gan mana servera 599 00:30:21,626 --> 00:30:25,120 URL. 600 00:30:25,120 --> 00:30:27,280 Tātad, vienalga kāds ir mans code space URL, tas būs netiešais 601 00:30:27,280 --> 00:30:29,440 prefikss. 602 00:30:29,440 --> 00:30:31,940 Šis /greet ir tikai maršruts. 603 00:30:31,940 --> 00:30:36,280 Tātad tagad atgriezīsimies pie VS code app.py faila. 604 00:30:36,280 --> 00:30:39,010 Kā man tagad to savienot kopā? 605 00:30:39,010 --> 00:30:41,620 Es domāju, ka mums der izmantot index.html. 606 00:30:41,620 --> 00:30:44,440 Ja index.html dzīves mērķis ir tikai izspļaut šo formu, mēs esam 607 00:30:44,440 --> 00:30:47,260 pabeiguši darbu ar vienu no maniem maršrutiem. 608 00:30:47,260 --> 00:30:51,805 Bet, ja es vēlos iegūt otru maršrutu — greet—, kas faktiski izvada 609 00:30:51,805 --> 00:30:56,350 kādu sveicienu lietotājam, sagatavosim arī šo veidni. 610 00:30:56,350 --> 00:30:58,990 Ļaujiet man turpināt un izcelt visu šo HTML. 611 00:30:58,990 --> 00:31:02,935 Ļaujiet man atgriezties savā termināļa logā un savā Hello direktorijā 612 00:31:02,935 --> 00:31:06,880 un pēc tam savā veidņu direktorijā. 613 00:31:06,880 --> 00:31:09,520 Un ļaujiet man izveidot citu veidni ar nosaukumu greet. 614 00:31:09,520 --> 00:31:12,580 HTML, kura dzīves mērķis būs nevis parādīt formu, bet gan sveikt 615 00:31:12,580 --> 00:31:15,640 lietotāju ar Hello, tāds un tāds. 616 00:31:15,640 --> 00:31:19,370 Tāpēc šajā failā es ielīmēšu visu to pašu HTML, bet es atbrīvošos no 617 00:31:19,370 --> 00:31:23,100 formas un būtībā atgriezīšos pie mūsu iepriekšējās versijas — Hello, 618 00:31:23,100 --> 00:31:26,830 komats-- un pēc tam izmantošu Jinja sintakses vārdu. 619 00:31:26,830 --> 00:31:30,220 Tātad viena veidne-- index.html-- ir paredzēta formai. 620 00:31:30,220 --> 00:31:32,185 Otrā veidne tagad ir paredzēta sveicienam - Hello, komats, tāds un 621 00:31:32,185 --> 00:31:34,150 tāds. 622 00:31:34,150 --> 00:31:37,600 Bet citādi šie faili, ievērojiet, ir gandrīz vienādi, izņemot vienam 623 00:31:37,600 --> 00:31:41,050 ir forma, bet vienam ir tikai Hello. 624 00:31:41,050 --> 00:31:43,310 Tagad pabeigsim to vietnē app.py. 625 00:31:43,310 --> 00:31:45,717 Ļaujiet man iet uz leju pēc pāris tukšām rindiņām stilistiski, 626 00:31:45,717 --> 00:31:48,125 ļaujiet man veikt app.route, atvērējpēdiņas, 627 00:31:48,125 --> 00:31:50,532 aizvērējpēdiņas,”/greet”-- bet es varētu saukt šo maršrutu kā vien 628 00:31:50,532 --> 00:31:52,940 vēlos. 629 00:31:52,940 --> 00:31:54,760 Es tikai izmantoju loģisku darbības vārdu. 630 00:31:54,760 --> 00:31:56,380 Tad definēsim citu funkciju. 631 00:31:56,380 --> 00:31:58,930 Es varētu saukt funkciju jebkā, kā vēlos, X, Y vai Z. 632 00:31:58,930 --> 00:32:01,120 Es to nosaukšu saprātīgāk par greet. 633 00:32:01,120 --> 00:32:02,260 Nekādu argumentu. 634 00:32:02,260 --> 00:32:05,020 Un tad tagad ir kods, kurā es vēlos renderēt veidni. 635 00:32:05,020 --> 00:32:08,335 Tāpēc es ievadui - return, render, template, greet. 636 00:32:08,335 --> 00:32:09,760 HTML. 637 00:32:09,760 --> 00:32:13,390 Bet man ir jādara vēl viena lieta. 638 00:32:13,390 --> 00:32:16,075 Ko vēl es vēlos darīt, ja vēlos, lai greet.html būtu piekļuve cilvēka 639 00:32:16,075 --> 00:32:18,760 vārdam? 640 00:32:18,760 --> 00:32:21,250 Atkārtojumam. 641 00:32:21,250 --> 00:32:23,500 Es domāju, ka mēs to jau atrisinājām, bet es to izdzēsu. 642 00:32:23,500 --> 00:32:26,930 Bet kas man ir jāpievieno? 643 00:32:26,930 --> 00:32:27,845 Jā. 644 00:32:27,845 --> 00:32:28,720 Auditorija: [NESAKLAUSĀMS] 645 00:32:28,720 --> 00:32:31,540 DEIVIDS MEILANS: Jā, tāpēc man kaut kā bija jāiekļauj vietturis. 646 00:32:31,540 --> 00:32:33,412 Tāpēc es to varu izdarīt vairākos dažādos veidos. 647 00:32:33,412 --> 00:32:35,620 Šoreiz es to paturēšu nedaudz elegantāku. 648 00:32:35,620 --> 00:32:38,970 Es vienkārši ievietošu tur savu vārda — argumentu — un iestatīšu to 649 00:32:38,970 --> 00:32:42,320 vienādu ar request.args.GET, atvērējpēdiņas, aizvērējpēdiņas, “name”, 650 00:32:42,320 --> 00:32:45,670 “world”. 651 00:32:45,670 --> 00:32:47,880 Pirms tam es izmantoju atsevišķu mainīgo, bet es to izmantoju tikai 652 00:32:47,880 --> 00:32:50,090 vienā vietā, tāpēc tas nav absolūti nepieciešams. 653 00:32:50,090 --> 00:32:52,830 Tāpēc arī tas ir labi, bet, ja tas kļūst nedaudz par daudz, 654 00:32:52,830 --> 00:32:55,570 ievērojiet, ka es varu arī izdarīt šādi. 655 00:32:55,570 --> 00:33:00,100 Es varu izveidot faktisko mainīgo ar nosaukumu name, un tad es varu 656 00:33:00,100 --> 00:33:04,630 nodot argumentu ar nosaukumu name ar vērtību, kas ir šis mainīgais. 657 00:33:04,630 --> 00:33:06,790 Bet atkal kāda jēga šeit ir? 658 00:33:06,790 --> 00:33:08,530 Tas bija kaut kā skaistāks vienā rindā. 659 00:33:08,530 --> 00:33:10,617 Tātad tās ir tieši tās pašas lietas, es tikai cenšos šeit lietas 660 00:33:10,617 --> 00:33:12,705 padarīt vēl kompaktākas. 661 00:33:12,705 --> 00:33:14,080 Labi, kas tikko notika? 662 00:33:14,080 --> 00:33:17,470 Ja es atgriezīšos savā formā, šī joprojām ir index.html. 663 00:33:17,470 --> 00:33:19,390 Ja es to ielādēju, nekas nav mainījies. 664 00:33:19,390 --> 00:33:22,510 Ja es ierakstu savu vārdu šajā formā-- ņemiet vērā vēlreiz, URL, kurā 665 00:33:22,510 --> 00:33:25,630 pašlaik atrodos-- šis pārlūks Chrome slēpj lietas, tehniski/pēc 666 00:33:25,630 --> 00:33:28,750 noklusējuma, lai gan mūsdienās daudzas pārlūkprogrammas vienkārši 667 00:33:28,750 --> 00:33:31,870 slēpj nevajadzīgas rakstzīmes. 668 00:33:31,870 --> 00:33:35,370 Bet skatieties, kas notiek tagad, ja es ritināšu šeit un 669 00:33:35,370 --> 00:33:38,870 noklikšķināšu uz greet šajā jaunajā formā. 670 00:33:38,870 --> 00:33:39,580 Pamanījāt? 671 00:33:39,580 --> 00:33:45,760 Mans URL, mans maršruts ir mainīts uz /greet ?name=David. 672 00:33:45,760 --> 00:33:49,118 Un lapas augšdaļā pa kreisi ir rakstīts: Hello, David. 673 00:33:49,118 --> 00:33:51,339 Tātad tieši šādi darbojas vietne google.com, un tā mēs pēdējo reizi 674 00:33:51,339 --> 00:33:53,560 ieviesām HTML. 675 00:33:53,560 --> 00:33:57,235 Bet tā vietā, lai iesniegtu formu Google, izmantojot veidlapu, es to 676 00:33:57,235 --> 00:34:00,910 iesniedzu sev, mans paša maršruts. 677 00:34:00,910 --> 00:34:05,570 Tāpēc es ieviešu savu aizmuguri šai pašai priekšējai daļai. 678 00:34:05,570 --> 00:34:08,237 Labi, vēl ir kādi jautājumi? 679 00:34:08,237 --> 00:34:11,808 Protams, tas ir daudz mazāk interesants nekā Google, taču tagad mums 680 00:34:11,808 --> 00:34:15,380 ir visi vadi savienoti. 681 00:34:15,380 --> 00:34:17,929 Vai ir kādi jautājumi? 682 00:34:17,929 --> 00:34:19,429 Nē? 683 00:34:19,429 --> 00:34:22,489 Labi, ko mēs varam darīt, lai to padarītu vēl kompaktāku un ievērotu 684 00:34:22,489 --> 00:34:25,550 dažas konvencijas? 685 00:34:25,550 --> 00:34:30,179 Ļaujiet man ierosināt, ka šajā versijā mēs atrisinām vienu problēmu. 686 00:34:30,179 --> 00:34:34,151 Un pat tad, ja jūs nekad iepriekš neesat darījis šādas darbības, es 687 00:34:34,151 --> 00:34:38,124 uzdrošinos apgalvot, ka mums ir pietiekami daudz nedēļu CS50, kur, ja 688 00:34:38,124 --> 00:34:42,097 es vēlreiz parādīšu index.html un vēlreiz greet.HTML, iespējams, kāds 689 00:34:42,097 --> 00:34:46,070 uzskatīs, ka ir iespēja uzlabojumiem. 690 00:34:46,070 --> 00:34:49,999 Kāpēc šī tīmekļa lietotne-- lai gan tā ir ļoti vienkārša-- šobrīd ir 691 00:34:49,999 --> 00:34:53,929 neapšaubāmi slikti izstrādāta? 692 00:34:53,929 --> 00:34:59,750 Un atbilde ir kaut kur šajās divās veidnēs — index.html un greet.HTML. 693 00:34:59,750 --> 00:35:01,658 Auditorija: [NESAKLAUSĀMS] 694 00:35:01,658 --> 00:35:05,390 DEIVIDS MEILANS: Jā, tās ir gandrīz vienādas, izņemot pamatsaturu. 695 00:35:05,390 --> 00:35:07,640 Un tas nebija nekas liels, ir tikai divas lapas. 696 00:35:07,640 --> 00:35:09,380 Tātad, ko es kopēju, ielīmēju vienreiz? 697 00:35:09,380 --> 00:35:12,035 Bet iedomājieties tagad parastu vietni vai pat savas mājas lapas, 698 00:35:12,035 --> 00:35:14,690 kurās ir trīs, četras vai vairāk lapas. 699 00:35:14,690 --> 00:35:17,965 Es domāju, ka šobrīd jūs tikai kopējot un ielīmējat visu, godīgi 700 00:35:17,965 --> 00:35:21,240 sakot, kā jūs, iespējams, darījāt savā mājaslapā. 701 00:35:21,240 --> 00:35:21,740 Kāpēc? 702 00:35:21,740 --> 00:35:24,670 Jo, ja jums ir tikai HTML, iespējams, CSS un pat JavaScript, viss, ko 703 00:35:24,670 --> 00:35:27,600 varat darīt, ir kopēt ielīmēt, kopēt ielīmēt un vienkārši 704 00:35:27,600 --> 00:35:30,530 pārliecināties, ka jums ir tāda pati struktūra. 705 00:35:30,530 --> 00:35:32,910 Varbūt jums ir tas pats CSS fails, tas pats JavaScript fails, tās 706 00:35:32,910 --> 00:35:35,290 pašas trešo pušu bibliotēkas, taču tas padara to ļoti, ļoti 707 00:35:35,290 --> 00:35:37,670 kaitinošu, kā jūs, iespējams, jau sapratāt, vienkārši veikt izmaiņas, 708 00:35:37,670 --> 00:35:40,050 kas ietekmē visu. 709 00:35:40,050 --> 00:35:43,170 Tātad, vai nebūtu jauki ņemt vērā visu šo un visu šo un vienkārši 710 00:35:43,170 --> 00:35:46,290 ļaut pamatdaļai mainīties? 711 00:35:46,290 --> 00:35:48,840 Tātad arī šeit ir kaut kas tāds, ko mums ļauj darīt Flask un citi 712 00:35:48,840 --> 00:35:51,390 līdzvērtīgi satvari. 713 00:35:51,390 --> 00:35:55,398 Tas ļauj mums izveidot to, ko mēs parasti saucam par izkārtojumu. 714 00:35:55,398 --> 00:35:56,940 Tāpēc es iešu uz priekšu un darīšu šādi. 715 00:35:56,940 --> 00:36:00,620 Es pēdējo reizi kopēšu visu to pašu HTML. 716 00:36:00,620 --> 00:36:04,100 Es ieiešu savā termināļa logā un pēc vienošanās izveidošu failu ar 717 00:36:04,100 --> 00:36:07,580 nosaukumu layout.HTML. 718 00:36:07,580 --> 00:36:10,340 Tas patiešām būs sava veida uzmetums. 719 00:36:10,340 --> 00:36:15,633 Un layout.HTML es ielīmēšu visu to pašu kodu, bet es tagad izmantošu 720 00:36:15,633 --> 00:36:20,926 kādu Jinja sintaksi, lai norādītu, ka es nevēlos šeit pievienot tikai 721 00:36:20,926 --> 00:36:26,220 mainīgo, piemēram, name, lai faktiski pievienotu cita faila saturu. 722 00:36:26,220 --> 00:36:29,410 Tā vietā, lai izmantotu tikai figūriekavas, divas pa kreisi un pa 723 00:36:29,410 --> 00:36:32,600 labi, man ir jāizmanto nedaudz atšķirīga sintakse, lai teiktu, ka 724 00:36:32,600 --> 00:36:35,790 šeit vēlos veselu HTML bloku no kāda cita faila. 725 00:36:35,790 --> 00:36:39,296 Un veids, kā to izdarīt, lai gan sintakse ir nedaudz pārprotama, ir 726 00:36:39,296 --> 00:36:42,803 izmantot atvērtas figūriekavas, procentu zīmi, bloku, pēc tam nākamo 727 00:36:42,803 --> 00:36:46,310 vārdu varat saukt par visu, ko vēlaties. 728 00:36:46,310 --> 00:36:48,895 Tam vienkārši ir jābūt īpaša veida vietturim faktiskajam failam, 729 00:36:48,895 --> 00:36:51,480 nevis tikai mainīgajam. 730 00:36:51,480 --> 00:36:54,000 Es to saukšu par ķermeni tikai tāpēc, ka esmu ķermenī - pamatdaļā. 731 00:36:54,000 --> 00:36:56,670 Tāpēc es vēlos, lai vietturis būtu viss ķermenis. 732 00:36:56,670 --> 00:37:01,640 Un tad ārpus šī jūs vienā vārdā sakāt, bez atstarpes-- gala bloks. 733 00:37:01,640 --> 00:37:03,590 Tātad, godīgi sakot, tas izskatās stulbi. 734 00:37:03,590 --> 00:37:05,450 Un kāpēc mums ir vēl neglītāka sintakse? 735 00:37:05,450 --> 00:37:07,895 Atkal, tikai dažādi programmatūras izstrādātāji pasaulē katrs izvēlas 736 00:37:07,895 --> 00:37:10,340 savu sintaksi savām bibliotēkām. 737 00:37:10,340 --> 00:37:13,130 Tāpēc tās visas izskatās atšķirīgi, bet pēc būtības ir līdzīgas. 738 00:37:13,130 --> 00:37:15,410 Un jūs vienkārši pierodat redzēt atšķirīgo sintaksi. 739 00:37:15,410 --> 00:37:20,255 Tagad šis nav ne tuvu tik glīts kā mainīgo lielumu figūriekavas, taču 740 00:37:20,255 --> 00:37:25,100 šādi es varu teikt, ka šeit pievienojiet visa faila saturu. 741 00:37:25,100 --> 00:37:27,290 Un ko tas man tagad ļauj darīt? 742 00:37:27,290 --> 00:37:32,015 Tagad varu atgriezties savā index.html failā, kas šobrīd joprojām 743 00:37:32,015 --> 00:37:36,740 izskatās šādi, taču gandrīz viss ir kopēts un ielīmēts. 744 00:37:36,740 --> 00:37:39,670 Vienīgās interesantās un atšķirīgās līnijas ir šīs četras līnijas 745 00:37:39,670 --> 00:37:42,600 šeit, pamatdaļā. 746 00:37:42,600 --> 00:37:45,880 Tāpēc tagad es varu to izcelt un izgriezt, pēc tam izcelt visu pārējo 747 00:37:45,880 --> 00:37:49,160 un vienkārši izdzēst visu failu. 748 00:37:49,160 --> 00:38:02,030 [? %extends"layout.html"% ?] Un tad 749 00:38:02,030 --> 00:38:03,090 Noslēdzu savu domu ar % un aiztaisu figūriekavas. 750 00:38:03,090 --> 00:38:06,925 Tātad šī sintakse, kā jūs varētu tikai secināt, tagad saka: lūdzu, 751 00:38:06,925 --> 00:38:10,760 paplašiniet jebko, kas izskatās kā layout.HTML. 752 00:38:10,760 --> 00:38:12,890 Tas ir sākotnējais uzmetums, no kura es vēlos izveidot šo tīmekļa 753 00:38:12,890 --> 00:38:15,020 lapu. 754 00:38:15,020 --> 00:38:17,270 Un tagad arī sintakse ir nedaudz dīvaina, bet līdzīga, vismaz no 755 00:38:17,270 --> 00:38:19,520 iepriekšējiem. 756 00:38:19,520 --> 00:38:23,360 Tagad varu teikt, ka bloks-- pamatdaļas bloks, kuru es vēlos, lai jūs 757 00:38:23,360 --> 00:38:27,200 pievienotu šim izkārtojumam, būs viss starp šiem diviem tagiem, ko 758 00:38:27,200 --> 00:38:31,040 mēs jau redzējām iepriekš. 759 00:38:31,040 --> 00:38:35,150 Bet layout.HTML tie ir sava veida vietturi. 760 00:38:35,150 --> 00:38:40,530 Vietnē index.html tas ir tas, ko es pievienošu arī citiem vietturiem. 761 00:38:40,530 --> 00:38:42,822 Tāpēc es atvēlēšu sev papildu atstarpi. 762 00:38:42,822 --> 00:38:45,070 Es ielīmēšu tur esošo HTML. 763 00:38:45,070 --> 00:38:47,280 Ja es vēlos precizēt, kas notiek, es varu to izdarīt ar atkāpi, lai 764 00:38:47,280 --> 00:38:49,490 gan tam nav funkcionālas ietekmes. 765 00:38:49,490 --> 00:38:51,710 Bet tas tikai parāda, ka tāpat kā HTML varat atvērt Jinja tagu un 766 00:38:51,710 --> 00:38:53,930 aizvērt to. 767 00:38:53,930 --> 00:38:57,175 Bet šeit, Jinja, mums ir šis šeit-- hei, Python, šeit ir šīs lapas 768 00:38:57,175 --> 00:39:00,420 pamatdaļa. 769 00:39:00,420 --> 00:39:03,170 Hei Python, šeit beidzas šīs lapas pamatdaļa. 770 00:39:03,170 --> 00:39:06,340 Un visas šīs lietas ir jāpievieno šim galvenajam vecāku izkārtojumam, 771 00:39:06,340 --> 00:39:09,510 tāteikt. 772 00:39:09,510 --> 00:39:12,790 Jāatzīst, ka tik ļoti neglīts, bet tagad vismaz lietas kļūst mazāk 773 00:39:12,790 --> 00:39:16,070 liekas, jo es šeit darīšu tieši to pašu. 774 00:39:16,070 --> 00:39:18,710 greet.HTML tas izskatās šādi. 775 00:39:18,710 --> 00:39:22,145 Bet tagad es darīšu šādi — paplašina izkārtojumu.HTML arī, tāpat kā 776 00:39:22,145 --> 00:39:25,580 iepriekš. 777 00:39:25,580 --> 00:39:28,730 Pamatdaļa, kuru vēlos pievienot, būs viss, kas ietverts šajos šeit 778 00:39:28,730 --> 00:39:31,880 esošajos tagos. 779 00:39:31,880 --> 00:39:38,190 Un šī pamatdaļa vienkārši būs Hello, vārds figūriekavās, šādi.. 780 00:39:38,190 --> 00:39:40,910 Tātad atkal neglīti — sintakse ātri kļuva ļoti neglīta. 781 00:39:40,910 --> 00:39:43,437 Bet tagad tiek tikai sekots šiem modeļiem. 782 00:39:43,437 --> 00:39:45,020 Un mums ir divu veidu vietturi. 783 00:39:45,020 --> 00:39:49,835 Divas figūriekavas mainīgajiem, un tagad šāda veida sintakse ar 784 00:39:49,835 --> 00:39:54,650 procentu zīmēm un vienām figūriekavām faktisko failu saturam. 785 00:39:54,650 --> 00:39:57,704 Un tagad šajā pasaulē vai mājaslapas pasaulē, ja jūs izmantotu Flask 786 00:39:57,704 --> 00:40:00,758 un Python, lai izveidotu savu personīgo mājas lapu ar visām šīm 787 00:40:00,758 --> 00:40:03,812 dažādajām lapām, jūs, iespējams, izveidotu vienu galveno izkārtojumu 788 00:40:03,812 --> 00:40:06,866 ar visiem saviem skaistajiem logotipiem, krāsām un fontiem, kā arī 789 00:40:06,866 --> 00:40:09,920 to, kā vēlaties, lai vietne izskatītos. 790 00:40:09,920 --> 00:40:12,590 Un tad katra jūsu mazākā lapa tagad tiktu sadalīta tikai šajos 791 00:40:12,590 --> 00:40:15,260 mazākajos fragmentos. 792 00:40:15,260 --> 00:40:18,030 Un neatkarīgi no tā, vai tiek izmantota Python, Java, JavaScript vai 793 00:40:18,030 --> 00:40:20,800 arī citas valodas, visām dažādajām programmēšanas valodām ir 794 00:40:20,800 --> 00:40:23,570 populāras sistēmas, kas veic šādas darbības. 795 00:40:23,570 --> 00:40:26,735 Ideja visiem ir vienāda. 796 00:40:26,735 --> 00:40:28,110 Labi, paskatīsimies, vai tas darbojas. 797 00:40:28,110 --> 00:40:29,700 Atgriezīsimies pārlūkprogrammā. 798 00:40:29,700 --> 00:40:32,780 Ļaujiet man atgriezties savā /route. 799 00:40:32,780 --> 00:40:34,160 Te ir tāda pati forma. 800 00:40:34,160 --> 00:40:37,310 Ļaujiet man ierakstīt Davidun ierakstīt -- un noklikšķināt uz greet. 801 00:40:37,310 --> 00:40:40,233 Un tiešām es redzu Hello, David, es redzu, ka pārlūkprogramma 802 00:40:40,233 --> 00:40:43,156 automātiski pievienoja sveicienu vietrādim URL, kad es iesniedzu 803 00:40:43,156 --> 00:40:46,080 formu, kam sekoja atslēgu - vērtību pāri. 804 00:40:46,080 --> 00:40:50,055 Un, ja es skatos lapas avotu tāpat kā iepriekš, jūs redzēsit, ka jums 805 00:40:50,055 --> 00:40:54,030 ir viss izkārtojums ar pievienotu Hello, David. 806 00:40:54,030 --> 00:40:58,200 Tikmēr, ja es atgriezīšos formāun skatīšu šo lapas avotu, jūs 807 00:40:58,200 --> 00:41:02,370 redzēsit tieši tādu pašu izkārtojumu, bet ar pievienotu formas tagu. 808 00:41:02,370 --> 00:41:06,320 Un šeit jūs varat būt nedaudz mazāk izvēlīgs ar stilu. 809 00:41:06,320 --> 00:41:09,170 Labi, jā, tas nav tehniski ievilkts pamatdaļas iekšpusē. 810 00:41:09,170 --> 00:41:11,190 Bet tas bija attiecībā pret sākotnējo failu. 811 00:41:11,190 --> 00:41:13,690 Tāpēc šajā spēles brīdī jums nav jāuztraucas par to, ka izvadītais 812 00:41:13,690 --> 00:41:16,190 HTML izskatīsies ļoti skaists. 813 00:41:16,190 --> 00:41:18,310 Jūs vēlaties, lai jūsu pirmkods, ko cilvēki redz, būtu skaists, nevis 814 00:41:18,310 --> 00:41:20,430 pārlūkprogramma. 815 00:41:20,430 --> 00:41:23,000 Tas nav stilistisks jautājums. 816 00:41:23,000 --> 00:41:29,130 Labi, jautājumi par šīm iespējām Flask? 817 00:41:29,130 --> 00:41:31,830 Vai problēmām, kuras mēs tikko esam atrisinājuši un kāpēc? 818 00:41:31,830 --> 00:41:32,859 Jā. 819 00:41:32,859 --> 00:41:37,573 Auditorija: [NESAKLAUSĀMS] 820 00:41:37,573 --> 00:41:38,240 DEIVIDS MEILANS: Labi. 821 00:41:38,240 --> 00:41:43,270 Tātad, ja attiecīgie faili atrodas dažādās mapēs-- piemēram, ja es 822 00:41:43,270 --> 00:41:48,300 atgriežos savā index lapā, kurai ir forma, maršruti šeit ir pilnībā 823 00:41:48,300 --> 00:41:53,330 atkarīgi no faila app.py satura. 824 00:41:53,330 --> 00:41:58,650 Tīmekļa lietojumprogrammas ieviešanā vairs nav tāda mapes jēdziena. 825 00:41:58,650 --> 00:42:00,140 Tie ir vispārīgāki maršruti. 826 00:42:00,140 --> 00:42:03,383 Tomēr, un mēs to vēl neesam izdarījuši, varat ievietot savu statisko 827 00:42:03,383 --> 00:42:06,626 saturu-- savus attēlus, video failus, CSS failus– mapē, ko sauc 828 00:42:06,626 --> 00:42:09,870 static, un var būt apakšmapes, kurās tie atrodas. 829 00:42:09,870 --> 00:42:14,380 Un tas ietekmētu to, ko izmantojat kā avota atribūtus attēliem vai 830 00:42:14,380 --> 00:42:18,890 avota tagus videoklipiem, vai kādu no šīm lietām. 831 00:42:18,890 --> 00:42:22,730 Un galu galā mēs to redzēsim mājās-- nākamajā uzdevumā. 832 00:42:22,730 --> 00:42:24,900 Citi jautājumi par to, ko mēs tikko šeit esam paveikuši? 833 00:42:24,900 --> 00:42:25,400 Jā. 834 00:42:25,400 --> 00:42:27,170 Auditorija: [NESAKLAUSĀMS] 835 00:42:27,170 --> 00:42:30,700 DEIVIDS MEILANS: Labs jautājums, kā es varu nodrošināt, ka tīmekļa 836 00:42:30,700 --> 00:42:34,230 lietotne tiek startēta formā un pēc tam pāriet uz Hello lapu? 837 00:42:34,230 --> 00:42:38,113 Tātad neatkarīgi no tā, kāds ir noklusējuma indeksa maršruts, 838 00:42:38,113 --> 00:42:41,996 piemēram, nespecificētā slīpsvītra, tas tiks izvilkts, kad lietotājs 839 00:42:41,996 --> 00:42:45,880 apmeklēs domēna nosaukumu, kurā tiek mitināta jūsu vietne. 840 00:42:45,880 --> 00:42:49,406 Tātad, ja es atgriezīšos šeit pie app.py, jo mans /route ir 841 00:42:49,406 --> 00:42:52,933 paredzēts, lai atgrieztu index.html, tieši tāpēc šī atbilde tika 842 00:42:52,933 --> 00:42:56,460 atgriezta. 843 00:42:56,460 --> 00:42:57,720 Labs jautājums. 844 00:42:57,720 --> 00:43:00,797 Labi, tātad tālāk, tagad apsvērsim privātuma jautājumus. 845 00:43:00,797 --> 00:43:04,249 Un mēs pieskarsimies arī šim jautājumam, kad nonāksim pie tādām 846 00:43:04,249 --> 00:43:07,702 problēmām kā iepirkumu grozi un sīkfaili, ja es šeit pietuvināšu 847 00:43:07,702 --> 00:43:11,154 URL — lai gan pats URL ir nedaudz garš, neglīts un neskaidrs-- bet 848 00:43:11,154 --> 00:43:14,607 kad es ierakstu savu vārdu un nospiedžu greet, protams, mēs URL 849 00:43:14,607 --> 00:43:18,060 redzam name=David. 850 00:43:18,060 --> 00:43:22,010 Kādā ziņā tas varētu būt slikts dizains? 851 00:43:22,010 --> 00:43:25,010 Vai arī kāda veida tīmekļa lietotnēs jūs, iespējams, nevēlaties, lai 852 00:43:25,010 --> 00:43:28,010 vārds tiktu rādīts šādā URL? 853 00:43:28,010 --> 00:43:31,920 Jo tas ir tas, ko dara Google, un to dara mana lietotne. 854 00:43:31,920 --> 00:43:32,420 Jā. 855 00:43:32,420 --> 00:43:33,360 Auditorija: [NESAKLAUSĀMS] 856 00:43:33,360 --> 00:43:34,110 DEIVIDS MEILANS: Jā. 857 00:43:34,110 --> 00:43:37,030 Tātad, ja es piesakoties ar lietotājvārdu un paroli, es varētu 858 00:43:37,030 --> 00:43:39,950 iedomāties, ka tie tiek parādīti vietrādī URL aiz jautājuma zīmes, 859 00:43:39,950 --> 00:43:42,870 kur lietotājvārds=malan un parole=12345, bet tad viss, kas maniem 860 00:43:42,870 --> 00:43:45,790 ziņkārīgajiem brāļiem un māsām ir jādara - ir jāiet cauri manai 861 00:43:45,790 --> 00:43:48,710 pārlūkprogrammas vēsturei un bum, tie ir tieši tur, lai viņi varētu 862 00:43:48,710 --> 00:43:51,630 kopēt un ielīmēt. 863 00:43:51,630 --> 00:43:54,000 Tāpēc tas nešķiet īpaši droši. 864 00:43:54,000 --> 00:43:56,100 Vai arī, ja kāds iet jums garām kafejnīcā, viņš var vienkārši 865 00:43:56,100 --> 00:43:58,200 apskatīt jūsu URL, ja tas ir atklāts pārlūkprogrammā un arī viņš to 866 00:43:58,200 --> 00:44:00,300 redz. 867 00:44:00,300 --> 00:44:03,090 Tāpēc GET ne vienmēr ir labākais darbības vārds, lai gan tas ir 868 00:44:03,090 --> 00:44:05,880 noklusējuma formuiesniegšanas veids. 869 00:44:05,880 --> 00:44:09,048 Parasti, ja jums ir kaut kas kaut nedaudz sensitīvs vai kaut kas 870 00:44:09,048 --> 00:44:12,216 svarīgs— vai tā būtu parole, kredītkartes numurs, vai attēls vai 871 00:44:12,216 --> 00:44:15,384 videoklips, ko augšupielādējat pakalpojumā Instagram vai YouTube, vai 872 00:44:15,384 --> 00:44:18,552 jebkurā līdzīgā vietnē, piemēram, tā-- jūs nevēlaties, lai dati tiktu 873 00:44:18,552 --> 00:44:21,720 iekļauti URL. 874 00:44:21,720 --> 00:44:25,260 Un, par laimi, patiesībā ir vienkāršs veids, kā to novērst. 875 00:44:25,260 --> 00:44:29,040 Es varu atvērt savu formu, kas pašlaik ir index.html, un varu 876 00:44:29,040 --> 00:44:32,820 vienkārši mainīt metodi no GET uz post. 877 00:44:32,820 --> 00:44:36,240 Šeit ar mazajiem burtiem, bet darbības vārds virtuālajā aploksnē, par 878 00:44:36,240 --> 00:44:39,660 kuru mēs runājām pagājušajā nedēļā, pats par sevi būtu ar lielo Post. 879 00:44:39,660 --> 00:44:43,330 Tagad diemžēl skatieties, kas šeit notiek. 880 00:44:43,330 --> 00:44:46,176 Ļaujiet man pāriet uz savu sākotnējo formu, dodoties atpakaļ uz 881 00:44:46,176 --> 00:44:49,023 /route--, un es atkārtoti ielādēju lapu, lai pārliecinātos, ka saņemu 882 00:44:49,023 --> 00:44:51,870 pēdējo, jaunāko HTML. 883 00:44:51,870 --> 00:44:55,125 Un tikai, lai apstiprinātu šeit-- jā, ja es skatos avotu, metode 884 00:44:55,125 --> 00:44:58,380 tagad ir POST. 885 00:44:58,380 --> 00:45:01,410 Ļaujiet man tagad ierakstīt David un noklikšķiniet uz greet. 886 00:45:01,410 --> 00:45:03,210 Un iepriekš mēs redzējām Hello, David. 887 00:45:03,210 --> 00:45:05,680 Bet tagad es saņemu metode nav atļauta. 888 00:45:05,680 --> 00:45:09,200 Un tas ir nedaudz niansēti, taču cilnes nosaukumā ievērojiet, ka tā 889 00:45:09,200 --> 00:45:12,720 ir 405 kļūda, kas, iespējams, nav pazīstama. 890 00:45:12,720 --> 00:45:15,450 Gandrīz visi no mums ir redzējuši, ka 404 fails nav atrasts. 891 00:45:15,450 --> 00:45:19,530 Izrādās, 405, kas ir nedaudz noslēpumaināka, ir metode. 892 00:45:19,530 --> 00:45:21,490 HTTP darbības vārds nav atļauts. 893 00:45:21,490 --> 00:45:21,990 Kāpēc? 894 00:45:21,990 --> 00:45:24,600 Jo pēc noklusējuma mana app.py pašlaik atbalsta tikai GET pēc 895 00:45:24,600 --> 00:45:27,210 noklusējuma. 896 00:45:27,210 --> 00:45:28,910 Kā es varu atbalstīt POST? 897 00:45:28,910 --> 00:45:30,900 Man tikai vajag mazliet vairāk sintakses. 898 00:45:30,900 --> 00:45:33,520 Tāpēc ļaujiet man atgriezties pie VS Code šeit. 899 00:45:33,520 --> 00:45:35,460 Ļaujiet man tagad doties uz app.py. 900 00:45:35,460 --> 00:45:39,310 Un pēc formas maiņas man tikai jāinformē Flask, ka metode, kuru es 901 00:45:39,310 --> 00:45:43,160 vēlos izmantot šajā lieliskajā maršrutā, nedrīkst būt noklusējuma, 902 00:45:43,160 --> 00:45:47,010 kas ir tikai GET, es vēlos, lai tas izmanto šīs metodes. 903 00:45:47,010 --> 00:45:49,460 Un tam ir vajadzīgs otrs arguments, ko sauc par methods, kura vērtība 904 00:45:49,460 --> 00:45:51,910 ir saraksts, kura noklusējuma vērtība ir, atvērējpēdiņas, 905 00:45:51,910 --> 00:45:54,360 aizvērējpēdiņas, “GET”. 906 00:45:54,360 --> 00:45:57,100 Tātad tas ir noklusējuma iestatījums. 907 00:45:54,360 --> 00:45:57,100 Tas nav veicis nekādas izmaiņas. 908 00:45:57,100 --> 00:46:01,150 Bet, ja tā vietā vēlos atbalstīt POST, varu nepārprotami nodot 909 00:46:01,150 --> 00:46:05,200 sarakstu ar vienu virkni-- tā vietā POST. 910 00:46:05,200 --> 00:46:06,640 Un ko tas tagad nozīmē? 911 00:46:06,640 --> 00:46:10,326 Pagājušajā nedēļā mēs par to nerunājām sīkāk, taču šajā virtuālajā 912 00:46:10,326 --> 00:46:14,013 aploksnē parasti ir tāda rindiņa kā GET/search, queue=cats aiz 913 00:46:14,013 --> 00:46:17,700 jautājuma zīmes. 914 00:46:17,700 --> 00:46:20,737 Ja vēlaties paslēpt šāda veida informāciju privātuma labad vai tāpēc, 915 00:46:20,737 --> 00:46:23,775 ka vēlaties augšupielādēt attēlu, kuru vienkārši nav jēgas ievietot 916 00:46:23,775 --> 00:46:26,812 URL, būtībā stāsta daļa būtu tāda, ka dators skatās dziļāk iekšā 917 00:46:26,812 --> 00:46:29,850 virtuālajā aploksnē. 918 00:46:29,850 --> 00:46:32,670 Un viss, kas tiek iesniegts ar POST, atrodas zem HTTP galvenēm, tā 919 00:46:32,670 --> 00:46:35,490 kā, dziļāk šajā aploksnē. 920 00:46:35,490 --> 00:46:36,550 Tātad viņi joprojām ir tur. 921 00:46:36,550 --> 00:46:39,025 Lietotāja pārlūkprogrammā tie vienkārši nav skaidri redzami 922 00:46:39,025 --> 00:46:41,500 ziņkārīgām acīm. 923 00:46:41,500 --> 00:46:44,835 Tātad, vienkārši veicot šīs izmaiņas HTML, liekot pārlūkprogrammai 924 00:46:44,835 --> 00:46:48,170 iesniegt datus, izmantojot POST, un mainot app.py, lai norādītu 925 00:46:48,170 --> 00:46:51,505 maršrutu, lai sagaidītu datus, izmantojot POST, tagad varu 926 00:46:51,505 --> 00:46:54,840 atgriezties savā otrā cilnē. 927 00:46:54,840 --> 00:46:56,520 Ļaujiet man atgriezties sākotnējā lapā. 928 00:46:56,520 --> 00:46:59,460 Ļaujiet man atkārtoti ielādēt, lai man būtu jaunākais HTML. 929 00:46:59,460 --> 00:47:01,305 Un patiešām, skatiet lapas avotu, tas joprojām ir — jā, tas joprojām 930 00:47:01,305 --> 00:47:03,150 ir POST. 931 00:47:03,150 --> 00:47:05,580 Bet tagad, kad es ierakstu DAVID un noklikšķinu uz greet tagad, tas 932 00:47:05,580 --> 00:47:08,010 darbojas. 933 00:47:08,010 --> 00:47:11,760 Bet, bet, bet ievērojiet privātuma ietekmi — es esmu greet maršrutā, 934 00:47:11,760 --> 00:47:15,510 bet kur ir mans vārds? 935 00:47:15,510 --> 00:47:17,160 Tā patiesībā tur nav. 936 00:47:17,160 --> 00:47:19,680 Tas joprojām tika nosūtīts uz serveri, taču tas tagad nav iekļauts 937 00:47:19,680 --> 00:47:22,200 jūsu automātiskajā pabeigšanā vai vēsturē privātuma labad. 938 00:47:22,200 --> 00:47:26,630 Vai tagad ir jautājumi par POST? 939 00:47:26,630 --> 00:47:27,210 Jā. 940 00:47:27,210 --> 00:47:27,710 Nē? 941 00:47:27,710 --> 00:47:28,850 Tikai paknosijās. 942 00:47:28,850 --> 00:47:31,920 Labi, vai jūs, programmētājs, to redzat? 943 00:47:31,920 --> 00:47:34,980 Ļaujiet man parādīt dažas citas Chrome funkcijas — Chrome un Safari, 944 00:47:34,980 --> 00:47:38,040 kā arī citas pārlūkprogrammas. 945 00:47:38,040 --> 00:47:40,165 Es turpinu skatīt lapas avotu, kas tikai parāda read only jūsu HTML 946 00:47:40,165 --> 00:47:42,290 versiju. 947 00:47:42,290 --> 00:47:44,990 Taču atcerieties, ka pagājušajā reizē es faktiski noklikšķināju ar 948 00:47:44,990 --> 00:47:47,690 peles labo pogu un devos pārbaudīt vai apskatīju izstrādātāju rīkus. 949 00:47:47,690 --> 00:47:51,200 Un tas parādīs daudz labāku izstrādātāja rīku versiju. 950 00:47:51,200 --> 00:47:53,150 Un zem elementiem šeit jūs redzat visu. 951 00:47:53,150 --> 00:47:56,070 Un tas ir jauki un skaisti izdrukāts, tas ir hierarhisks, tas sakļauj 952 00:47:56,070 --> 00:47:58,990 lietas šajos noklikšķināmos trīsstūros, taču tas ir tieši tas pats. 953 00:47:58,990 --> 00:48:00,440 Tas ir tikai interaktīvāks. 954 00:48:00,440 --> 00:48:04,122 Bet ievērojiet, ko es varu darīt šodien, ja es šeit atveru cilni 955 00:48:04,122 --> 00:48:07,805 Network un ļaujiet man nedaudz attālināt, ļaujiet man turpināt un 956 00:48:07,805 --> 00:48:11,487 atkārtoti ielādēt formu šeit un vēlreiz ierakstīt David un 957 00:48:11,487 --> 00:48:15,170 noklikšķināt uz greet. 958 00:48:15,170 --> 00:48:18,970 Ņemiet vērā, ka tagad Chrome izstrādātāju rīku cilnē Network redzu 959 00:48:18,970 --> 00:48:22,770 dažas lietas, kā mēs redzējām iepriekš. 960 00:48:22,770 --> 00:48:25,460 Pirmkārt, es redzu, ka pieprasījuma metode ir POST. 961 00:48:25,460 --> 00:48:28,280 Otrkārt, es redzu, ka serveris automātiski, man nerakstot nekādu 962 00:48:28,280 --> 00:48:31,100 kodu, atgriež 200, kad viss ir veiksmīgi. 963 00:48:31,100 --> 00:48:35,300 Bet es varu ritināt uz leju, uz leju, uz leju, uz leju, uz leju, un 964 00:48:35,300 --> 00:48:39,500 jūs to redzēsit pēc visiem šiem sīkfailiem-- vairāk par tiem vēlāk. 965 00:48:39,500 --> 00:48:43,201 Ja es noklikšķinu uz payload, otrā cilne blakus galvenēm, jūs kā 966 00:48:43,201 --> 00:48:46,903 izstrādātājs varat redzēt, kas faktiski tika nosūtīts serverim. 967 00:48:46,903 --> 00:48:47,570 Tik tiešām, šis. 968 00:48:47,570 --> 00:48:50,047 Tas būs ļoti noderīgs, piemēram, veicot devīto problēmu kopu, 969 00:48:50,047 --> 00:48:52,525 iespējams, jūsu gala projektus, ja vēlaties redzēt, kas nonāk no 970 00:48:52,525 --> 00:48:55,002 pārlūkprogrammas uz serveri, jums ir pilnīga kontrole pār visu šo 971 00:48:55,002 --> 00:48:57,480 informāciju. 972 00:48:57,480 --> 00:49:00,090 Pat ja jūs izmantojat HTTPS, jo jūsu pārlūkprogramma un jūs, 973 00:49:00,090 --> 00:49:02,700 izstrādātājs to visu noteikti var redzēt. 974 00:49:02,700 --> 00:49:06,132 Tātad atkal, šie izstrādātāja rīki, lai gan ir daudz cilņu un pogu, 975 00:49:06,132 --> 00:49:09,565 kas jums, visticamāk, drīz vairs nebūs vajadzīgas, daži no tiem, 976 00:49:09,565 --> 00:49:12,997 piemēram, elements un network, un ar JavaScript konsoli būs ļoti 977 00:49:12,997 --> 00:49:16,430 noderīgi, sākt iepazīties ar tiem . 978 00:49:16,430 --> 00:49:24,980 Labi, vai jums ir jautājumi par šo POST ietekmi? 979 00:49:24,980 --> 00:49:28,170 Vispār kaut kas? 980 00:49:28,170 --> 00:49:28,950 Nē? 981 00:49:28,950 --> 00:49:31,355 Labi, kā būtu ar vienu pēdējo Hello piemēru, kas sasaista dažas no 982 00:49:31,355 --> 00:49:33,760 šīm lietām. 983 00:49:33,760 --> 00:49:37,072 Tagad mēs cenšamies padarīt lietas vēl kompaktākas, tikai sagaidot 984 00:49:37,072 --> 00:49:40,385 kaut ko līdzīgu 9. problēmu kopai vai patiešām sarežģītākām tīmekļa 985 00:49:40,385 --> 00:49:43,697 lietotnēm, kur jums varētu būt nevis divi, bet 20 vai pat vairāk 986 00:49:43,697 --> 00:49:47,010 dažādu maršrutu. 987 00:49:47,010 --> 00:49:51,100 Varētu būt ideāli samazināt kopējo maršrutu skaitu. 988 00:49:51,100 --> 00:49:52,860 Lai mēs nekļūtu pārāk pārslogoti. 989 00:49:52,860 --> 00:49:55,755 Un es uzdrošinos apgalvot, ka šie divi maršruti ir tik īsi, varbūt es 990 00:49:55,755 --> 00:49:58,650 varu tos apvienot vienā. 991 00:49:58,650 --> 00:50:01,230 Un varbūt es varu paturēt lietotāju tajā pašā URL, bet tikai tāpēc, 992 00:50:01,230 --> 00:50:03,810 lai sakārtotu lietas. 993 00:50:03,810 --> 00:50:06,390 Tāpēc ļaujiet man ierosināt darīt šādi. 994 00:50:06,390 --> 00:50:10,446 Ļaujiet man atbrīvoties no sava greet maršruta un ļaujiet man atvērt 995 00:50:10,446 --> 00:50:14,503 savu formu index.html un ļaujiet man turpināt, un šīs formas darbība 996 00:50:14,503 --> 00:50:18,560 joprojām ir slīpsvītra. 997 00:50:18,560 --> 00:50:22,350 Es vēlos, lai forma būtu redzama pie slīpsvītras, vietnes indeksa. 998 00:50:22,350 --> 00:50:25,295 Taču es arī vēlos, lai forma tiktu iesniegta pati par sevi kaut vai 999 00:50:25,295 --> 00:50:28,240 tāpēc, ka nevēlos ieviest citu maršrutu, piemēram, greet, kas galu 1000 00:50:28,240 --> 00:50:31,185 galā patiešām būs pārliecinošs, lai jums nebūtu viens maršruts visam, 1001 00:50:31,185 --> 00:50:34,130 ko vēlaties darīt savā vietnē. 1002 00:50:34,130 --> 00:50:36,640 Tātad tehniski tas ir arī noklusējuma iestatījums, un, ja es izlaistu 1003 00:50:36,640 --> 00:50:39,150 darbību, notiktu tieši tas pats. 1004 00:50:39,150 --> 00:50:41,475 Bet ļaujiet man attīt atpakaļ un doties uz app.py, lai redzētu, kā 1005 00:50:41,475 --> 00:50:43,800 mēs varam to panākt. 1006 00:50:43,800 --> 00:50:46,670 Nu, ja es vēlos, lai mans vienīgais un tagad vienīgais maršruts 1007 00:50:46,670 --> 00:50:49,540 atbalstītu abas metodes, es varu pateikt metodes = un pēc tam 1008 00:50:49,540 --> 00:50:52,410 sarakstu ar GET un POST jebkurā secībā, bet es saglabāšu tos 1009 00:50:52,410 --> 00:50:55,280 alfabētiskā secībā šādi. 1010 00:50:55,280 --> 00:50:58,810 Tagad Python saka: Hei, šim maršrutam ir jāapstrādā gan GET, gan POST 1011 00:50:58,810 --> 00:51:02,340 pieprasījumi vienā un tajā pašā vietā. 1012 00:51:02,340 --> 00:51:04,520 Tagad pievērsīsimies šai funkcijai. 1013 00:51:04,520 --> 00:51:07,850 Es gribu teikt kaut ko līdzvērtīgu šim — ja GET, tad es vēlos 1014 00:51:07,850 --> 00:51:11,180 atgriezt formu. 1015 00:51:11,180 --> 00:51:15,020 Citādi, ja POST, es vēlos atgriezt greet.HTML render template ar 1016 00:51:15,020 --> 00:51:18,860 lietotāja vārdu. 1017 00:51:18,860 --> 00:51:22,260 Bet tas vēl nav pilnīgs kods, bet es domāju, ka varu to izdarīt. 1018 00:51:22,260 --> 00:51:24,300 Es iešu uz priekšu un saglabāšu tālāk norādīto. 1019 00:51:24,300 --> 00:51:33,710 Es teikšu, ja request.method = = GET, tad tiešām atgriezt index.html. 1020 00:51:33,710 --> 00:51:37,160 L if request.method = = POST, dodieties uz priekšu un atgrieziet 1021 00:51:37,160 --> 00:51:40,610 greet.HTML. 1022 00:51:40,610 --> 00:51:44,120 Tomēr ar to nepietiek, jo es joprojām vēlos nodot šo vietturi. 1023 00:51:44,120 --> 00:51:47,250 Tāpēc ļaujiet man vēlreiz pievienot name=request.args.GET, 1024 00:51:47,250 --> 00:51:50,380 atvērējpēdiņas, aizvērējpēdiņas, “name” un pēc tam world noklusējuma 1025 00:51:50,380 --> 00:51:53,510 vērtību. 1026 00:51:53,510 --> 00:51:55,910 Ko tas tagad dara manā labā? 1027 00:51:55,910 --> 00:51:58,730 Ļaujiet man atgriezties pie savas citas cilnes šeit. 1028 00:51:58,730 --> 00:52:00,260 Ļaujiet man aizvērt izstrādātāju rīkus, atgriezties pie formas šeit, 1029 00:52:00,260 --> 00:52:01,790 ļaujiet man atkārtoti ielādēt, lai pārliecinātos, ka man ir 1030 00:52:01,790 --> 00:52:03,320 jaunākais. 1031 00:52:03,320 --> 00:52:05,750 Ļaujiet man apskatīt lapas avotu, lai pārliecinātos, ka man ir 1032 00:52:05,750 --> 00:52:08,180 jaunākais — un jā, man ir jaunākais, jo joprojām ir rakstīts POST. 1033 00:52:08,180 --> 00:52:09,810 Bet tagad ir rakstīts slīpsvītra. 1034 00:52:09,810 --> 00:52:11,300 Un paskatīsimies, kas tagad notiks. 1035 00:52:11,300 --> 00:52:14,040 Ja es ierakstu savu vārdu David, kas iepriekš tika iesniegts, 1036 00:52:14,040 --> 00:52:16,780 izmantojot POST, tāpēc es neredzēju nevienu vārdu vai tā vērtību 1037 00:52:16,780 --> 00:52:19,520 vietrādī URL, taču es nokļuvu /greet. 1038 00:52:19,520 --> 00:52:22,340 Bet, ja darbība tagad ir slīpsvītra, es noklikšķinu uz greet, 1039 00:52:22,340 --> 00:52:25,160 ievērojiet, ka tā joprojām darbojas. 1040 00:52:25,160 --> 00:52:27,695 Es redzu, Hello, world, lai gan tas īsti nedarbojās. 1041 00:52:27,695 --> 00:52:29,570 Tāpēc mēs pēc brīža atgriezīsimies pie šī jautājuma. 1042 00:52:29,570 --> 00:52:31,903 Taču ievērojiet, ka URL beidzas ar slīpsvītru. 1043 00:52:31,903 --> 00:52:36,481 Un atkal Chrome slēpj slīpsvītru, jo tas ir viss, kas tur ir, bet tas 1044 00:52:36,481 --> 00:52:41,060 nebeidzas ar name=David šajā gadījumā vai name=world. 1045 00:52:41,060 --> 00:52:43,160 Tagad ievērojiet arī to-- ja es atkārtoti ielādēšu, es saņemšu šo 1046 00:52:43,160 --> 00:52:45,260 brīdinājumu. 1047 00:52:45,260 --> 00:52:47,537 Vai vēlaties apstiprināt formas atkārtotu iesniegšanu? 1048 00:52:47,537 --> 00:52:50,120 Lapa, kuru meklējat, izmantoja jūsu ievadīto informāciju. 1049 00:52:50,120 --> 00:52:51,440 Atgriežoties šajā lapā, visas jūsu veiktās darbības var tikt 1050 00:52:51,440 --> 00:52:52,760 atkārtotas. 1051 00:52:52,760 --> 00:52:53,760 Vai vēlaties turpināt? 1052 00:52:53,760 --> 00:52:55,666 Iespējams, esat to redzējis vietnēs, kuras patiešām apmeklējāt, kur 1053 00:52:55,666 --> 00:52:57,572 nospiedāt atkārtotu ielādi un tika parādīts uzaicinājums-- uzgaidiet, 1054 00:52:57,572 --> 00:52:59,478 vai vēlaties to darīt? 1055 00:52:59,478 --> 00:53:02,720 Iespējams, ka esat saņēmis aicinājumu atkārtoti ielādēt, jo kāpēc? 1056 00:53:02,720 --> 00:53:06,500 Viss, ko jūs tikko izdarījāt, bija POST, nevis GET. 1057 00:53:06,500 --> 00:53:08,650 Un pēc vienošanās, papildus POST tiek izmantota privātuma nolūkos, 1058 00:53:08,650 --> 00:53:10,800 lai paslēptu jūsu lietotājvārdu, paroli, kredītkartes numuru vai 1059 00:53:10,800 --> 00:53:12,950 tamlīdzīgi. 1060 00:53:12,950 --> 00:53:15,787 POST tiek izmantots ne tikai lielāku failu, piemēram, attēlu vai 1061 00:53:15,787 --> 00:53:18,625 video, augšupielādei, bet arī parasti tiek izmantots, lai veiktu 1062 00:53:18,625 --> 00:53:21,462 izmaiņas serverī, pievienotu kaut ko iepirkumu grozam vai pievienotu 1063 00:53:21,462 --> 00:53:24,300 kaut ko datubāzei. 1064 00:53:24,300 --> 00:53:27,555 Savukārt GET, kā norāda nosaukums, ir tikai informācijas iegūšana, 1065 00:53:27,555 --> 00:53:30,810 nevis informācijas ievietošana vai sūtīšana. 1066 00:53:30,810 --> 00:53:33,580 Tātad pārlūkam Chrome ir jābūt nedaudz uzmanīgam, jo, ja tikko 1067 00:53:33,580 --> 00:53:36,350 izrakstījāties no vietnes Amazon un pēc tam nospiežat atkārtotu 1068 00:53:36,350 --> 00:53:39,120 ielādi, jūs nevēlaties nejauši iegādāties to pašu grāmatu vēlreiz, tā 1069 00:53:39,120 --> 00:53:41,890 sakot, lai gan Amazon un smalkām vietnēm ir citi aizsardzības 1070 00:53:41,890 --> 00:53:44,660 līdzekļi arī, lai izvairītos no šīs problēmas. 1071 00:53:44,660 --> 00:53:47,120 Tomēr tagad šeit ir kļūda. 1072 00:53:47,120 --> 00:53:50,090 Tajā ir rakstīts Hello, world, nevis Hello, David, un patiesībā tas 1073 00:53:50,090 --> 00:53:53,060 būtu teikts pirms brīža, un es vienkārši nepārbaudīju kodu un 1074 00:53:53,060 --> 00:53:56,030 neatklāju jums tik daudz. 1075 00:53:56,030 --> 00:53:57,875 Vai arī, ja es to darīju, es pat nepamanīju, ka tajā ir rakstīts 1076 00:53:57,875 --> 00:53:59,720 Hello, world, nevis Hello, David. 1077 00:53:59,720 --> 00:54:05,390 Izrādās, ka request.args tiek izmantots tikai priekš GET. 1078 00:54:05,390 --> 00:54:07,795 Izmantojot GET, request.args ir vārdnīca, kurā ir visi jūsu 1079 00:54:07,795 --> 00:54:10,200 atslēgu-vērtību pāri. 1080 00:54:10,200 --> 00:54:13,015 Bet nedaudz mulsinoši, izmantojot POST ar Flask, jums jāiet uz 1081 00:54:13,015 --> 00:54:15,830 request.form. 1082 00:54:15,830 --> 00:54:19,320 Man nav ne jausmas, kāpēc tie nav acīmredzamāki pretstati, piemēram, 1083 00:54:19,320 --> 00:54:22,810 request.GET, request.form un - atvainojiet, request.GET un 1084 00:54:22,810 --> 00:54:26,300 request.POST būtu saprātīgi nosaukumi. 1085 00:54:26,300 --> 00:54:31,868 Tomēr šajā gadījumā mums ir request.args GET un request.form POST. 1086 00:54:31,868 --> 00:54:33,410 Labi, tomēr tas ir viegli labojams. 1087 00:54:33,410 --> 00:54:35,935 Ja es atgriezīšos šeit pie VS Code, mainīsim request.args uz 1088 00:54:35,935 --> 00:54:38,460 request.form. 1089 00:54:38,460 --> 00:54:40,280 Atgriezīsimies pie citas manas cilnes. 1090 00:54:40,280 --> 00:54:42,050 Ļaujiet man vienkārši pārlādēt, un jūs zināt, ko? 1091 00:54:42,050 --> 00:54:45,290 Es teikšu: Labi, turpiniet atkārtoti iesniegt to pašu veidlapu, jo 1092 00:54:45,290 --> 00:54:48,530 veidlapa bija pareiza, tas bija mans Python kods, kas bija kļūdains. 1093 00:54:48,530 --> 00:54:51,950 Nospiežot taustiņu Enter, tagad tiek piekļūts David OK. 1094 00:54:51,950 --> 00:54:54,351 Bet skatieties uz šo — vēlreiz, ja es nospiežu Reload, Command R vai 1095 00:54:54,351 --> 00:54:56,752 Control R, es saņemu to pašu brīdinājumu. 1096 00:54:56,752 --> 00:54:58,460 Vai tiešām vēlaties iesniegt formu? 1097 00:54:58,460 --> 00:54:58,960 Jā. 1098 00:54:58,960 --> 00:55:00,920 Ja es to daru manuāli, izmantojot atkārtotas ielādes ikonu, saņemu 1099 00:55:00,920 --> 00:55:02,880 tādu pašu brīdinājumu kā iepriekš. 1100 00:55:02,880 --> 00:55:06,470 Bet, ja es vēlos manuāli ierosināt GET pieprasījumu, tas strādā. 1101 00:55:06,470 --> 00:55:08,860 Nespiediet pārlādēt un nosūtiet to pašu pieprasījumu. 1102 00:55:08,860 --> 00:55:11,305 Tā vietā dodieties uz savu URL un vienkārši novietojiet kursoru tur 1103 00:55:11,305 --> 00:55:13,750 un nospiediet taustiņu Enter. 1104 00:55:13,750 --> 00:55:17,270 Un tagad ievērojiet, ka tas pats URL pēc noklusējuma ir GET. 1105 00:55:17,270 --> 00:55:20,460 Tāpēc ikreiz, kad jūs un es esam ierakstījuši URL pārlūkprogrammās, 1106 00:55:20,460 --> 00:55:23,650 GET vienmēr ir noklusējuma iestatījums. 1107 00:55:19,960 --> 00:55:23,603 Tikai tad, kad noklikšķināt uz pogas, ko programmētājs ir 1108 00:55:23,603 --> 00:55:27,246 konfigurējis, lai izmantotu POST, jūs patiešām pievienojat preces 1109 00:55:27,246 --> 00:55:30,890 iepirkumu grozam vai tamlīdzīgi. 1110 00:55:30,890 --> 00:55:33,710 Labi, mēs esam atpakaļ. 1111 00:55:33,710 --> 00:55:39,315 Un, ja es pats atgriežos pagātnē, es uzskatu, ka šī patiešām ir pirmā 1112 00:55:39,315 --> 00:55:44,920 tīmekļa lietojumprogramma, ko izveidoju 1997. gadā. 1113 00:55:44,920 --> 00:55:48,790 Tātad tajā laikā šis būtu bijis mans otrā kursa gads. 1114 00:55:48,790 --> 00:55:51,150 Es izmantoju CS50, es sekoju kursam ar nosaukumu CS51, kas ir cita 1115 00:55:51,150 --> 00:55:53,510 veida programmēšana. 1116 00:55:53,510 --> 00:55:55,860 Un tad es diezgan daudz iemācīju sev valodu, ko sauc par Perl, kas 1117 00:55:55,860 --> 00:55:58,210 mūsdienās ir nedaudz mazāk populāra. 1118 00:55:58,210 --> 00:56:00,210 Bet tā ir cita valoda, piemēram, Python, piemēram, Java, piemēram, 1119 00:56:00,210 --> 00:56:02,210 JavaScript, tāpat kā citas, ko var izmantot, lai izveidotu tīmekļa 1120 00:56:02,210 --> 00:56:04,210 lietojumprogrammas. 1121 00:56:04,210 --> 00:56:07,768 Un tīmeklis tajā laikā bija ļoti jauns, un process, kurā studenti, 1122 00:56:07,768 --> 00:56:11,326 mani klasesbiedri, varēja reģistrēties pirmā kursa iekšējai sporta 1123 00:56:11,326 --> 00:56:14,884 programmai — AKA frosh IM bija jāpaņem papīra lapa un jāuzraksta tajā 1124 00:56:14,884 --> 00:56:18,442 jūsu vārds un e-pasta adrese, un jāiet pa pagalmu uz Viglsvortu, 1125 00:56:18,442 --> 00:56:22,000 manuprāt, kur dzīvoja prokters. 1126 00:56:22,000 --> 00:56:24,390 Un jūs pabīdījāt papīra lapu zem durvīm, un tā mēs iesniedzām 1127 00:56:24,390 --> 00:56:26,780 veidlapas manā laikā. 1128 00:56:26,780 --> 00:56:31,600 Tāpēc šī bija iespēja pat 1997. gadā pārvietot lietas tiešsaistē. 1129 00:56:31,600 --> 00:56:34,690 Un vietne turpināja dzīvot līdz 2007. gadam. 1130 00:56:34,690 --> 00:56:38,470 Es to atradu tiešsaistē, un pēc tam tā kļuva par kaut ko citu. 1131 00:56:38,470 --> 00:56:41,475 Bet šī bija vietne, kurā cilvēki varēja reģistrēties sportam, un 1132 00:56:41,475 --> 00:56:44,480 cilvēki varēja reģistrēt dažādu spēļu rezultātus un, ko tik nē. 1133 00:56:44,480 --> 00:56:48,120 Un tāpēc zem pārsega es tajā laikā pat neko nezināju par datu bāzēm, 1134 00:56:48,120 --> 00:56:51,760 tie bija tikai CSV faili, kuros es glabāju datus. 1135 00:56:51,760 --> 00:56:53,590 Bet bija HTML formas. 1136 00:56:53,590 --> 00:56:56,965 Un tur bija ar Perl, tā laika valoda, veids, kā darīt tieši tādas 1137 00:56:56,965 --> 00:57:00,340 lietas, ko mēs tikko darījām jau ar Flask. 1138 00:57:00,340 --> 00:57:05,950 Un tāpēc es domāju, ka mēs ieviesīsim mazliet mazāk neglītu versiju. 1139 00:57:05,950 --> 00:57:08,785 Atkārtoti grafiskie foni bija Vogue 1997. gadā, kā jūs varat redzēt 1140 00:57:08,785 --> 00:57:11,620 šeit. 1141 00:57:11,620 --> 00:57:16,190 Bet tā bija tā laika estētika, ieskaitot tā saukto Blink tagu. 1142 00:57:16,190 --> 00:57:18,358 Tāpēc koncentrēsimies vismaz uz šīs vietnes funkcionalitāti, nevis 1143 00:57:18,358 --> 00:57:20,527 tik daudz estētiku, un noskaidrosim, vai mēs varam ieviest kaut ko no 1144 00:57:20,527 --> 00:57:22,696 santehnikas, lai faktiski atrisinātu reālo pasauli atspoguļojošu 1145 00:57:22,696 --> 00:57:24,865 problēmu. 1146 00:57:24,865 --> 00:57:26,750 Neatkarīgi no tā, vai tas ir pirmkursnieku iekšējais sporta veids vai 1147 00:57:26,750 --> 00:57:28,635 kaut kas cits tamlīdzīgs, kur iegūstat datus no lietotājiem un kaut 1148 00:57:28,635 --> 00:57:30,520 kā tos apstrādājat. 1149 00:57:30,520 --> 00:57:32,770 Tāpēc ļaujiet man pāriet uz VS Code. 1150 00:57:32,770 --> 00:57:35,455 Ļaujiet man izveidot jaunu direktoriju ar nosaukumu frosh IM, lai mēs 1151 00:57:35,455 --> 00:57:38,140 varētu saglabāt visu šo kodu savā direktorijā. 1152 00:57:38,140 --> 00:57:40,240 Ļaujiet man ieiet frosh IM ar CD . 1153 00:57:40,240 --> 00:57:43,675 Ļaujiet man aktīvi izveidot citu direktoriju, ko sauc par templates, 1154 00:57:43,675 --> 00:57:47,110 kurā mūsu veidnēm-- mūsu .HTML failiem — ir jādzīvo. 1155 00:57:47,110 --> 00:57:50,905 Un galu galā es iešu uz priekšu un minimāli izveidošu divus failus: 1156 00:57:50,905 --> 00:57:54,700 app.py un index.html. 1157 00:57:54,700 --> 00:57:57,493 Izveidosim pirmo no tiem, app.py dzīvos manā frosh IM direktorijā, un 1158 00:57:57,493 --> 00:58:00,286 es tikai gatavojos no jauna izveidot kaut ko ļoti vienkāršu, tāpat kā 1159 00:58:00,286 --> 00:58:03,080 iepriekš. 1160 00:58:03,080 --> 00:58:06,525 Tātad no flask ar mazajiem burtiem importējiet Flask ar lielo burtu, 1161 00:58:06,525 --> 00:58:09,970 rendertemplate un arī request. 1162 00:58:09,970 --> 00:58:11,710 Tātad tā pati pirmā rinda kā iepriekš. 1163 00:58:11,710 --> 00:58:15,582 Pēc tam ļaujiet man dot sev mainīgo, ko sauc par app, iestatīt to 1164 00:58:15,582 --> 00:58:19,455 vienādu ar Flask funkcijas izsaukšanu ar lielo F ar __name__, un pēc 1165 00:58:19,455 --> 00:58:23,327 tam ļaujiet man norādīt slīpsvītras maršrutu tāpat kā iepriekš ar 1166 00:58:23,327 --> 00:58:27,200 index funkciju. 1167 00:58:27,200 --> 00:58:29,200 Lai gan atkal es to varētu saukt par visu, ko vēlos. 1168 00:58:29,200 --> 00:58:31,980 Pagaidām atgriezīsim render template, atvērējpēdiņas, aizvērējpēdiņas 1169 00:58:31,980 --> 00:58:34,760 "index.html", it kā tāda pastāvētu. 1170 00:58:34,760 --> 00:58:38,165 Tātad šī nav tik ļoti tīmekļa lietojumprogramma, cik pašlaik tā ir 1171 00:58:38,165 --> 00:58:41,570 tikai HTTP servera izveide vienam failam. 1172 00:58:41,570 --> 00:58:48,250 Tagad citā cilnē izveidosim veidņu failu ar nosaukumu index.html. 1173 00:58:48,250 --> 00:58:50,830 Un es ietaupīšu dažus taustiņsitienus. 1174 00:58:50,830 --> 00:58:54,340 Ļaujiet man nokopēt, ielīmēt gandrīz visu iepriekšējo izkārtojumu. 1175 00:58:54,340 --> 00:58:57,145 Esmu jau iepriekš nomainījis nosaukumu uz frosh IM, nevis Hello, taču 1176 00:58:57,145 --> 00:58:59,950 šī būtībā ir tā pati veidne. 1177 00:58:59,950 --> 00:59:03,255 Tomēr pagaidām, tā kā es atrodos index.html, es vēl neizmantošu 1178 00:59:03,255 --> 00:59:06,560 paplašinājumus vai kādu no šīm smalkajām bloka lietām. 1179 00:59:06,560 --> 00:59:09,110 Es iešu uz priekšu un izveidošu salīdzinoši vienkāršu formu, ar kuru 1180 00:59:09,110 --> 00:59:11,660 toreiz mani klasesbiedri varēja reģistrēties iekšējiem sporta 1181 00:59:11,660 --> 00:59:14,210 veidiem. 1182 00:59:14,210 --> 00:59:19,510 Tātad, turpināsim šeit, un es ierosināšu mums darīt šādi. 1183 00:59:19,510 --> 00:59:23,725 Šajā lapā mums būs forma, kuras darbība būs maršruts ar nosaukumu 1184 00:59:23,725 --> 00:59:27,940 /register, lai gan es to varētu saukt jebkā, kā vēlos. 1185 00:59:27,940 --> 00:59:30,860 Tas būs nedaudz privāts, tāpēc es izmantošu POST, nevis GET, lai 1186 00:59:30,860 --> 00:59:33,780 cilvēki nejauši varbūt nereģistrētos divreiz, nospiežot pārlādēt bez 1187 00:59:33,780 --> 00:59:36,700 brīdinājuma. 1188 00:59:36,700 --> 00:59:40,780 Šajā formā dosim viņiem ievadi, kur automātiskā pabeigšana, kā 1189 00:59:40,780 --> 00:59:44,860 vienmēr, būs izslēgta demonstrācijas labad. 1190 00:59:44,860 --> 00:59:47,950 Automātiskais fokuss, lai kursors sākotnēji nonāktu tur. 1191 00:59:47,950 --> 00:59:50,710 Šī lauka nosaukums būs burtiski name, jo es gribu sava klasesbiedra 1192 00:59:50,710 --> 00:59:53,470 vārdu, ja viņi vēlas reģistrēties kādam sporta veidam. 1193 00:59:53,470 --> 00:59:55,780 Vietturis atkal būs, atvērējpēdiņas, aizvērējpēdiņas, "name", lai 1194 00:59:55,780 --> 00:59:58,090 viņi redzētu dažus pelēkus norādījumus. 1195 00:59:58,090 --> 01:00:02,260 Un šī lauka veids patiešām būs teksts tāpat kā iepriekš. 1196 01:00:02,260 --> 01:00:06,080 Un tad man ir jādod viņiem iespēja reģistrēties dažiem sporta veidiem. 1197 01:00:06,080 --> 01:00:08,006 Kāpēc gan mums nesaglabāt to vienkāršu, piemēram, savulaik 1198 01:00:08,006 --> 01:00:09,933 basketbols, futbols un frisbijs bija trīs no mūsu atbalstītajiem 1199 01:00:09,933 --> 01:00:11,860 sporta veidiem. 1200 01:00:11,860 --> 01:00:14,755 Un tāpēc ļaujiet man izdarīt šādi-- un jūs, iespējams, to iepriekš 1201 01:00:14,755 --> 01:00:17,650 neesat redzējuši, ja vien neesat paši darbojušies ar formām. 1202 01:00:17,650 --> 01:00:21,375 Bet es varu izveidot atlases izvēlni-- citādi sauktu par nolaižamo 1203 01:00:21,375 --> 01:00:25,100 izvēlni-- HTML valodā, kuras iekšpusē ir vairākas iespējas. 1204 01:00:25,100 --> 01:00:28,185 Un katra opcija parasti seko šai paradigmai-- opcijas vērtībai un pēc 1205 01:00:28,185 --> 01:00:31,270 tam faktiskajam tekstam, ko redz cilvēks. 1206 01:00:31,270 --> 01:00:34,540 Tātad šo iespēju vērtība būs-- kā būtu, ja mēs iekļautu basketbolu kā 1207 01:00:34,540 --> 01:00:37,810 pirmo. 1208 01:00:37,810 --> 01:00:40,120 Un es vēlos, lai cilvēks redzētu burtiski to pašu. 1209 01:00:40,120 --> 01:00:42,220 Lai gan tāpat kā ar saiti HTML, tie varētu būt atšķirīgi, taču es tos 1210 01:00:42,220 --> 01:00:44,320 paturēšu nemainīgus. 1211 01:00:44,320 --> 01:00:49,240 Vēl viena iespēja būs, teiksim, futbols. 1212 01:00:49,240 --> 01:00:51,500 Un... ak, ļaujiet man izlabot savas pēdiņas. 1213 01:00:51,500 --> 01:00:53,235 Un šis cilvēks redzēs tieši to pašu, lai gan tas varētu teikt kaut ko 1214 01:00:53,235 --> 01:00:54,970 citu. 1215 01:00:54,970 --> 01:00:59,464 Un, visbeidzot, vērtība būs, atvērējpēdiņas, aizvērējpēdiņas, 1216 01:00:59,464 --> 01:01:03,958 "ultimate Frisbee", un cilvēki tur redzēs to pašu-- ultimate Frisbee. 1217 01:01:03,958 --> 01:01:06,364 Labi, tāpēc, kā mēs drīz redzēsim, tiks izveidota tikai nolaižamā 1218 01:01:06,364 --> 01:01:08,770 izvēlne ar trim atsevišķām opcijām. 1219 01:01:08,770 --> 01:01:11,290 Ja es vēlos, lai skolēni to varētu iesniegt tagad, ļaujiet man dot 1220 01:01:11,290 --> 01:01:13,810 viņiem pogu, kuras veids ir submit. 1221 01:01:13,810 --> 01:01:17,330 Un šī poga būs kā vārdu reģistrs uz tās. 1222 01:01:17,330 --> 01:01:19,210 Tāpēc es domāju, ka viss ir diezgan labi. 1223 01:01:19,210 --> 01:01:21,990 Tas viss ir tikai HTML-- ne Python, ne Flask kā tāds, izņemot šīs 1224 01:01:21,990 --> 01:01:24,770 pašas veidnes renderēšanu. 1225 01:01:24,770 --> 01:01:26,770 Tāpēc ļaujiet man ieiet savā termināļa logā. 1226 01:01:26,770 --> 01:01:29,230 Ļaujiet man Flask palaist šajā direktorijā, jo tā vietā man ir 1227 01:01:29,230 --> 01:01:31,690 jāsniedz šī lietotne. 1228 01:01:31,690 --> 01:01:34,270 Es redzēšu neglītu izvadi, tostarp savu URL. 1229 01:01:34,270 --> 01:01:36,700 Un, ja virzīšu kursoru virs tā un pēc tam atvēršu šo URL, man tagad 1230 01:01:36,700 --> 01:01:39,130 vajadzētu redzēt interesantāku formu. 1231 01:01:39,130 --> 01:01:41,440 Tajā ir ne tikai lauks viņu vārdam, bet arī šī nolaižamā izvēlne ar 1232 01:01:41,440 --> 01:01:43,750 visiem trim sporta veidiem. 1233 01:01:43,750 --> 01:01:47,340 Tagad šī varbūt nav labākā lietotāja pieredze līdz šim, jo man šķiet, 1234 01:01:47,340 --> 01:01:50,930 ka es ietekmēju cilvēkus reģistrēties basketbolam, iespējams, tāpēc, 1235 01:01:50,930 --> 01:01:54,520 ka tas ir atzīmēts pēc noklusējuma. 1236 01:01:51,640 --> 01:01:57,410 Es domāju, ka daudzās formās mūsdienās ir tukšs formas vietturis. 1237 01:01:57,410 --> 01:01:59,720 Tātad tā ir tikai estētiska lieta, bet es to varu izdarīt. 1238 01:01:59,720 --> 01:02:03,240 Ļaujiet man atgriezties pie tās pašas formas un ļaujiet man parādīt 1239 01:02:03,240 --> 01:02:06,760 tikai tukšu opciju augšpusē, kuru es atspējošu. 1240 01:02:06,760 --> 01:02:09,250 Tātad jūs tehniski nevarat to atlasīt proaktīvi, bet es to izvēlēšos 1241 01:02:09,250 --> 01:02:11,740 pēc noklusējuma. 1242 01:02:09,400 --> 01:02:14,860 Un Sowe droši vien tos HTML atribūtus iepriekš nav redzējusi. 1243 01:02:14,860 --> 01:02:18,320 Bet, ja es vēlos šai nolaižamajai izvēlnei izveidot līdzvērtīgu 1244 01:02:18,320 --> 01:02:21,780 nosaukumu, es burtiski izveidošu atspējotu opciju, kas tiek 1245 01:02:21,780 --> 01:02:25,240 automātiski atlasīta ar nosaukumu Sport, lai jūs to nevarētu atlasīt 1246 01:02:25,240 --> 01:02:28,700 kā tādu, bet tā atrodas augšpusē. 1247 01:02:28,700 --> 01:02:31,485 Tātad, ja es tagad atgriezīšos savā otrā cilnē, ielādējiet vēlreiz-- 1248 01:02:31,485 --> 01:02:34,270 tikai nedaudz skaistāk nekā iepriekš. 1249 01:02:34,270 --> 01:02:37,830 Un es nemudinu cilvēkus nejauši reģistrēties basketbolam vien. 1250 01:02:37,830 --> 01:02:40,223 Un, ja es noklikšķināšu uz šī, jūs redzēsit, ka sport ir pelēkots un 1251 01:02:40,223 --> 01:02:42,616 tāpēc nav manuāli atlasāms, taču es joprojām varu atlasīt jebkuru no 1252 01:02:42,616 --> 01:02:45,010 šiem pārējiem trim. 1253 01:02:45,010 --> 01:02:49,585 Labi, diemžēl, ja es ierakstu David un mēģinu reģistrēties, piemēram, 1254 01:02:49,585 --> 01:02:54,160 futbolam un noklikšķināt uz Register, es nonākšu pie /register. 1255 01:02:54,160 --> 01:02:56,590 Un tur nav ne jautājuma zīmes, ne vārda, ne sporta veida, tāpēc tas, 1256 01:02:56,590 --> 01:02:59,020 iespējams, patiešām ir POST, nevis GET-- tās ir uzvednes — bet nav 1257 01:02:59,020 --> 01:03:01,450 atrasts. 1258 01:03:01,450 --> 01:03:07,510 Ievērojiet, ka cilne šeit ļoti īsi saka: 404 nav atrasts. 1259 01:03:07,510 --> 01:03:09,080 Nu kāpēc tā? 1260 01:03:09,080 --> 01:03:12,690 Lai būtu skaidrs, kāpēc /register man iedeva 404? 1261 01:03:16,240 --> 01:03:19,170 Kāda te loģika? 1262 01:03:19,170 --> 01:03:21,715 Varbūt vienkārši pasakiet acīmredzamo, vai arī... Tā neeksistē, vai 1263 01:03:21,715 --> 01:03:24,260 ne? 1264 01:03:24,260 --> 01:03:25,968 Mēs vēl neesam izdarījuši šo soli, vai ne? 1265 01:03:25,968 --> 01:03:27,420 Tātad kaut kas tik vienkāršs. 1266 01:03:27,420 --> 01:03:30,036 Un tāpēc es īstenībā ievēroju šo punktu, jo, apgūstot daudzas šīs 1267 01:03:30,036 --> 01:03:32,653 konvencijas un šo to no šīs jaunās sintakses, godīgi sakot, jūs 1268 01:03:32,653 --> 01:03:35,270 vienkārši pieļausit muļķīgas kļūdas. 1269 01:03:35,270 --> 01:03:36,520 Kaut kas nedarbosies. 1270 01:03:36,520 --> 01:03:38,410 Bet atkal atgriezieties pie pirmajiem principiem. 1271 01:03:38,410 --> 01:03:39,830 Kāpēc tas nav atrasts? 1272 01:03:39,830 --> 01:03:43,490 Labi, reģistrā ir jābūt veidnei, ko var saukt par register.HTML. 1273 01:03:43,490 --> 01:03:45,050 Ak, es aizmirsu savu app.route. 1274 01:03:45,050 --> 01:03:47,165 Tādai vajadzētu būt domāšanai, mēģinot diagnosticēt šīs problēmas, 1275 01:03:47,165 --> 01:03:49,280 virzoties uz priekšu. 1276 01:03:49,280 --> 01:03:51,880 Labi, tāpēc ļaujiet man atvērt vietni app.py un piedāvāt otru 1277 01:03:51,880 --> 01:03:54,480 maršrutu. 1278 01:03:54,480 --> 01:03:57,920 Tātad app.route, atvērējpēdiņas, aizvērējpēdiņas, "/route". 1279 01:03:57,920 --> 01:04:01,115 Pēc tam ļaujiet man definēt funkciju, ko sauc par jebko, ko es vēlos, 1280 01:04:01,115 --> 01:04:04,310 bet es to nosaukšu — atvainojiet, nevis /route, /register. 1281 01:04:04,310 --> 01:04:07,280 Ļaujiet man izsaukt funkciju, lai būtu konsekvence, register. 1282 01:04:07,280 --> 01:04:09,500 Tātad-- bet es to varētu saukt par visu, ko vēlos. 1283 01:04:09,500 --> 01:04:13,130 Un pagaidām nedarīsim neko pārāk interesantu, atgriezīsim tikai 1284 01:04:13,130 --> 01:04:16,760 veidnes, ko sauc par success.HTML, renderēšanu. 1285 01:04:16,760 --> 01:04:18,965 Pagaidām izliksimies, ka reģistrācija ir veiksmīga neatkarīgi no tā, 1286 01:04:18,965 --> 01:04:21,170 kas jūs esat un ko jūs darāt. 1287 01:04:21,170 --> 01:04:25,380 Tagad man ir vajadzīga šī veidne, un šobrīd man ir tikai index.html. 1288 01:04:25,380 --> 01:04:27,470 Tāpēc ļaujiet man tagad īstenot savu labāko praksi. 1289 01:04:27,470 --> 01:04:29,060 Ļaujiet man to visu nokopēt. 1290 01:04:29,060 --> 01:04:32,585 Ļaujiet man-- atsevišķā termināļa logā, ļaujiet man ievadīt kodu-- 1291 01:04:32,585 --> 01:04:36,110 ļaujiet man ieiet savā frosh IM direktorijā. 1292 01:04:36,110 --> 01:04:38,150 Un ļaujiet man izveidot jaunu veidni ar nosaukumu layout.HTML tāpat 1293 01:04:38,150 --> 01:04:40,190 kā iepriekš. 1294 01:04:40,190 --> 01:04:42,320 Ļaujiet man ielīmēt visu to pašu kodu. 1295 01:04:42,320 --> 01:04:47,165 Ļaujiet man izdzēst formu un vienkārši ievietot šo lielo vietturi, 1296 01:04:47,165 --> 01:04:52,010 tāpēc es lietoju tikai block body un pēc tam end block. 1297 01:04:52,010 --> 01:04:54,260 Tagad šī ir tikai tāda veida konvencija. 1298 01:04:54,260 --> 01:04:55,620 Visu pārējo es atstāšu to pašu. 1299 01:04:55,620 --> 01:04:57,025 Bet, ja es vēlētos to padarīt skaistāku, es varētu pievienot savu CSS 1300 01:04:57,025 --> 01:04:58,430 augšpusē. 1301 01:04:58,430 --> 01:05:00,770 Ja es vēlētos pievienot šo trako atkārtojošo fonu, es droši vien 1302 01:05:00,770 --> 01:05:03,110 varētu to darīt arī augšpusē. 1303 01:05:03,110 --> 01:05:05,690 Tāpēc es varu likt katrai lapai izskatīties tikpat neglītai kā manā 1304 01:05:05,690 --> 01:05:08,270 laikā, taču šodien mēs koncentrēsimies tikai uz tekstu. 1305 01:05:08,270 --> 01:05:11,045 Labi, pievienojiet tagad, kad man ir šī HTML izkārtojums, ļaujiet man 1306 01:05:11,045 --> 01:05:13,820 notīrīt index.html. 1307 01:05:13,820 --> 01:05:15,740 Man nevajag visu šo lieko. 1308 01:05:15,740 --> 01:05:17,930 Man nav vajadzīgas visas šīs atzīmes augšpusē. 1309 01:05:17,930 --> 01:05:21,280 Tā vietā atcerieties, es domāju, ka man vajag tikai pagarinājumus, 1310 01:05:21,280 --> 01:05:24,630 atvērējpēdiņas, aizvērējpēdiņas, "layout.HTML" ar atbilstošām zīmēm 1311 01:05:24,630 --> 01:05:27,980 un figūriekavām. 1312 01:05:27,980 --> 01:05:29,965 Tad man ir atbilstošs bloka korpuss, lai gan es varu saukt pamatdaļu 1313 01:05:29,965 --> 01:05:31,950 jebkā, kā vēlos. 1314 01:05:31,950 --> 01:05:34,280 Bet es pieturēšos pie savas agrākās prakses. 1315 01:05:34,280 --> 01:05:37,610 Un es šeit izdzēsīšu tagus, kas man vairs nav vajadzīgi. 1316 01:05:37,610 --> 01:05:38,240 Kāpēc? 1317 01:05:38,240 --> 01:05:40,760 Jo, ja es iedziļināšos layout.HTML, man jau ir visi mani atvērtie 1318 01:05:40,760 --> 01:05:43,280 tagi, visi mani aizvērtie tagi. 1319 01:05:43,280 --> 01:05:48,360 Vienīgais, ko es vēlos index.html, ir tas, kas ietilpst pamatdaļā. 1320 01:05:48,360 --> 01:05:50,780 Tātad noslēdziet bloku šeit. 1321 01:05:50,780 --> 01:05:53,990 Un, lai būtu pedantiski, ļaujiet man to visu izcelt. 1322 01:05:53,990 --> 01:05:58,070 Nospiediet Shift Tab, un tas noņems atkāpi, lai lietas sakārtotu. 1323 01:05:58,070 --> 01:05:59,123 Tikai, lai būtu kārtīgi. 1324 01:05:59,123 --> 01:06:01,790 Labi, ir labāk, lai gan tagad tas izskatās nedaudz neskaidri. 1325 01:06:01,790 --> 01:06:04,610 Bet tagad esmu ielicis pamatus trešās, ceturtās lapas izveidei, kurās 1326 01:06:04,610 --> 01:06:07,430 nav visas tās pašas kopēšanas - ielīmēšanas. 1327 01:06:07,430 --> 01:06:09,920 Labi, tagad atgriezīsimies vietnē app.py. 1328 01:06:09,920 --> 01:06:12,450 Success.HTML ir vieta, kur es pārtraucu. 1329 01:06:12,450 --> 01:06:14,630 Labi, ļaujiet man atvērt savu termināļa logu. 1330 01:06:14,630 --> 01:06:18,620 Ļaujiet man iekodēt veidni, ko sauc par success.HTML, kuras mērķis 1331 01:06:18,620 --> 01:06:22,610 dzīvē ir tikai teikt, ka esat reģistrēts. 1332 01:06:22,610 --> 01:06:25,440 Tikai tāpēc, lai mēs uz ekrāna redzētu kādu informatīvu ziņojumu. 1333 01:06:25,440 --> 01:06:29,300 Tāpēc šī daļa man joprojām ir jāpaplašina layout.HTML. 1334 01:06:29,300 --> 01:06:31,730 Tātad joprojām ir nedaudz kopēšanas - ielīmēšanas, kas ir nedaudz 1335 01:06:31,730 --> 01:06:34,160 neglīta, bet lai tā būtu. 1336 01:06:34,160 --> 01:06:37,145 Bloķējiet šīs veidnes pamatdaļu, un es tikai teikšu, ka esat 1337 01:06:37,145 --> 01:06:40,130 reģistrēts! 1338 01:06:40,130 --> 01:06:41,810 Labi, un tad pabeigt bloku. 1339 01:06:41,810 --> 01:06:43,080 Tik super vienkārši. 1340 01:06:43,080 --> 01:06:47,300 Tā ir tikai informatīva ziņa, ka skolēns ir reģistrēts. 1341 01:06:47,300 --> 01:06:50,430 Labi, atgriezīsimies pie sākotnējās formas, kas ir šī. 1342 01:06:50,430 --> 01:06:52,030 Ļaujiet man atkārtoti ielādēt, lai pārliecinātos, ka mans HTML ir 1343 01:06:52,030 --> 01:06:53,630 atkārtoti ielādēts. 1344 01:06:53,630 --> 01:06:55,880 Ierakstīt David, es atkal reģistrēšos futbolam, un noklikšķināšu uz 1345 01:06:55,880 --> 01:06:58,130 Register. 1346 01:06:58,130 --> 01:07:01,680 Un, ak, interesanti-- metode nav atļauta. 1347 01:07:01,680 --> 01:07:08,980 Tāpēc es vairs nesaņemu 404, es saņemu 405 vietnē /register. 1348 01:07:08,980 --> 01:07:10,900 Kāda šeit ir doma? 1349 01:07:10,900 --> 01:07:12,250 Ko es šoreiz salaidu dēlī? 1350 01:07:15,130 --> 01:07:16,280 405 ir progress. 1351 01:07:16,280 --> 01:07:16,780 Jā? 1352 01:07:16,780 --> 01:07:18,200 Aauditorija: [NESAKLAUSĀMS] 1353 01:07:18,200 --> 01:07:21,260 DEIVIDS MEILANS: Tātad tas nav-- vietturis, manuprāt, ir piemērots. 1354 01:07:21,260 --> 01:07:23,510 Tagad tas attiecas uz HTTP pamatā esošajām lietām. 1355 01:07:23,510 --> 01:07:26,270 Metode nebija atļauta-- nebija atļauta. 1356 01:07:26,270 --> 01:07:27,942 Auditorija: [NESAKLAUSĀMS] 1357 01:07:27,942 --> 01:07:28,900 DEIVIDS MEILANS: Sakiet vēlreiz? 1358 01:07:28,900 --> 01:07:29,460 Auditorija: [NESAKLAUSĀMS] 1359 01:07:29,460 --> 01:07:31,220 DEIVIDS MEILANS: Tātad arī GET pret POST. 1360 01:07:31,220 --> 01:07:33,575 Tātad pēc noklusējuma visi šie Flask maršruti tikai pēc noklusējuma 1361 01:07:33,575 --> 01:07:35,930 pieņem GET, jo tas ir droši. 1362 01:07:35,930 --> 01:07:39,360 Tas neļauj nosūtīt informāciju serverim gluži tādā pašā veidā. 1363 01:07:39,360 --> 01:07:41,800 Bet, ja es tomēr vēlos atbalstīt POST, atcerieties, ka mēs mainām to 1364 01:07:41,800 --> 01:07:44,240 uz methods= un pēc tam sarakstu ar atvērējpēdiņas, aizvērējpēdiņas 1365 01:07:44,240 --> 01:07:46,680 "POST" . 1366 01:07:46,680 --> 01:07:48,985 Tāpēc man vienkārši jāiespējo atbalsts šai metodei, kas ir šis HTTP 1367 01:07:48,985 --> 01:07:51,290 darbības vārds. 1368 01:07:51,290 --> 01:07:52,883 Labi, atgriezīsimies pie formas. 1369 01:07:52,883 --> 01:07:54,800 Pārlādējiet tikai tāpēc, lai pārliecinātos, ka neesmu kļūdījies. 1370 01:07:54,800 --> 01:07:56,690 Ierakstu savu vārdu David, nolaižamajā izvēlnē atlasu futbolu, 1371 01:07:56,690 --> 01:07:58,580 noklikšķinu uz Register. 1372 01:07:58,580 --> 01:08:01,506 Un tagad es neatrodos tikai /register URL, tas apgalvo, ka esmu 1373 01:08:01,506 --> 01:08:04,432 patiešām reģistrēts. 1374 01:08:04,432 --> 01:08:06,640 Tagad es, protams, neesmu... es neesmu izdarījis neko interesantu. 1375 01:08:06,640 --> 01:08:09,540 Nav datubāzes, nav CSV faila, mēs pie tā tiksim pēc brīža. 1376 01:08:09,540 --> 01:08:12,385 Bet vismaz man tagad ir uzstādīta infrastruktūra, lai veiktu kaut ko 1377 01:08:12,385 --> 01:08:15,230 dinamisku, pamatojoties uz šo sporta veidu. 1378 01:08:15,230 --> 01:08:18,510 Labi, kā es varu tagad to uzlabot? 1379 01:08:18,510 --> 01:08:21,675 Kā būtu, ja mēs turpinātu un ieviestu-- saglabātu faktiskos 1380 01:08:21,675 --> 01:08:24,840 reģistrētos vārdnīcā datora atmiņā. 1381 01:08:24,840 --> 01:08:26,575 Tāpēc tā vietā, lai tikai apgalvotu, ka viņi ir reģistrēti, veiksim 1382 01:08:26,575 --> 01:08:28,310 atzīmi. 1383 01:08:28,310 --> 01:08:30,575 Un vienkāršākais veids, kā mēs to darījām pirms nedēļām Python, ir 1384 01:08:30,575 --> 01:08:32,840 vienkārši saglabāt lietas mainīgajā, atmiņā. 1385 01:08:32,840 --> 01:08:36,500 Piemēram, saraksts vai vārdnīca, kopa, jebkas tamlīdzīgs. 1386 01:08:36,500 --> 01:08:39,903 Labi, ļaujiet man atgriezties pie VS Code un app.py, un es domāju, ka 1387 01:08:39,903 --> 01:08:43,306 man šeit būs jāmaina reģistra maršruts, lai sniegtu kādu noderīgu 1388 01:08:43,306 --> 01:08:46,710 informāciju. 1389 01:08:46,710 --> 01:08:49,230 Bet pirms es reģistrēju lietotāju, padomāsim, kur es vēlos tos 1390 01:08:49,230 --> 01:08:51,750 ievietot. 1391 01:08:51,750 --> 01:08:57,020 Un tāpēc ļaujiet man ierosināt, kā mēs varētu darīt šādi. 1392 01:08:57,020 --> 01:09:01,765 Mana faila augšdaļā ļaujiet man deklarēt globālo mainīgo, ko sauc par 1393 01:09:01,765 --> 01:09:06,510 registrants, un iestatīt to vienādu ar tukšu vārdnīcu. 1394 01:09:06,510 --> 01:09:08,920 Tātad mēs to esam darījuši iepriekš, kad izmantojām vārdnīcas, lai 1395 01:09:08,920 --> 01:09:11,330 saglabātu atslēgu-vērtību pārus. 1396 01:09:11,330 --> 01:09:14,210 Un es ierosināšu saglabāt reģistrētos kā vārdnīcu, kāpēc? 1397 01:09:14,210 --> 01:09:15,710 Jo es to saglabāšu vienkāršu. 1398 01:09:15,710 --> 01:09:17,945 Tāpat kā vārds būs studenta vārds-- vai atvainojiet, atslēga būs 1399 01:09:17,945 --> 01:09:20,180 studenta vārds. 1400 01:09:20,180 --> 01:09:22,847 Un vērtība būs jebkurš no sporta veida, kuram viņi ir reģistrējušies. 1401 01:09:22,847 --> 01:09:25,528 Tātad, David un soccer, un Carter un basketball, un tāpēc, tā sakot, 1402 01:09:25,528 --> 01:09:28,209 divu kolonnu vārdnīcai ir sava jēga, kā mēs to bieži attēlojam uz 1403 01:09:28,209 --> 01:09:30,890 ekrāna. 1404 01:09:30,890 --> 01:09:32,750 Tātad, kā es varu izmantot šo vārdnīcu? 1405 01:09:32,750 --> 01:09:34,220 Ļaujiet man iet uz priekšu un darīt šādi. 1406 01:09:34,220 --> 01:09:37,269 Šeit, zem /register, ļaujiet man iet uz priekšu un sākotnēji darīt 1407 01:09:37,269 --> 01:09:40,319 šādi. 1408 01:09:40,319 --> 01:09:43,561 Kā būtu, ja mēs iegūtu lietotāja vārdu no request.form.GET un 1409 01:09:43,561 --> 01:09:46,803 iestatītu to vienādu arvārda vērtību. 1410 01:09:46,803 --> 01:09:49,495 Un es tagad neievadīšu noklusējuma vērtību, jo es nevēlos to saukt 1411 01:09:49,495 --> 01:09:52,187 par studentu pasauli vai kaut ko tamlīdzīgu. 1412 01:09:52,187 --> 01:09:54,229 Pagaidām es tikai pieņemu, ka tā tur ir. 1413 01:09:54,229 --> 01:09:56,719 Pēc tam izveidosim citu mainīgo, ko sauc par sport, un izpildīsim 1414 01:09:56,719 --> 01:09:59,209 request.form.GET, atvērējpēdiņas, aizvērējpēdiņas, "sport", lai 1415 01:09:59,209 --> 01:10:01,700 iegūtu šo studentu sporta veidu. 1416 01:10:01,700 --> 01:10:05,373 Un tad dosimies uz priekšu un darīsim šādi-- reģistrēto vārdnīcā 1417 01:10:05,373 --> 01:10:09,046 indeksēsim to, izmantojot studenta vārdu, un iestatīsim to vienādu ar 1418 01:10:09,046 --> 01:10:12,720 jebkuru sporta veidu. 1419 01:10:12,720 --> 01:10:17,230 Tāpēc es izmantoju šos mainīgos, lai uzturētu savu kodu sakārtotu, un 1420 01:10:17,230 --> 01:10:21,740 tagad es tajā vārdnīcā ievietoju atslēgas - vērtību pāri. 1421 01:10:21,740 --> 01:10:24,510 Labi, ko es tagad gribu darīt? 1422 01:10:24,510 --> 01:10:27,795 Un tāpēc es teikšu success.HTML, protams. 1423 01:10:27,795 --> 01:10:28,920 Dosimies uz priekšu un darīsim šādi. 1424 01:10:28,920 --> 01:10:31,200 Bet tagad es domāju, ka success.HTML to nozīmē. 1425 01:10:31,200 --> 01:10:33,680 Tāpēc ļaujiet man atgriezties pie formas-- pārlādēt. 1426 01:10:33,680 --> 01:10:39,290 Ļaujiet man ierakstīt David un soccer-- register. 1427 01:10:39,290 --> 01:10:45,570 Ļaujiet man atgriezties un pateikt Carter un basketball - register. 1428 01:10:45,570 --> 01:10:46,310 Labi. 1429 01:10:46,310 --> 01:10:48,630 Tagad paskatīsimies, ko es vēlos darīt tālāk. 1430 01:10:48,630 --> 01:10:51,795 Kā būtu, ja es ietu... ļaujiet man izvēlēties citu maršrutu un 1431 01:10:51,795 --> 01:10:54,960 paspēlēties šeit. 1432 01:10:54,960 --> 01:10:57,906 Tātad app.route, dosim sev vēl vienu trešo maršrutu, ko sauc par 1433 01:10:57,906 --> 01:11:00,853 registrants, kuru dzīves mērķis ir tikai parādīt man, kas ir visi šie 1434 01:11:00,853 --> 01:11:03,800 reģistrētie. 1435 01:11:03,800 --> 01:11:06,060 Gluži kā jūs varētu sagaidīt no šādas vietnes. 1436 01:11:06,060 --> 01:11:07,920 Un tad ļaujiet man definēt funkciju, ko sauc par registrants vai 1437 01:11:07,920 --> 01:11:09,780 jebko citu. 1438 01:11:09,780 --> 01:11:13,030 Un tad ļaujiet man atgriezt veidnes ar nosaukumu registerants.HTML 1439 01:11:13,030 --> 01:11:16,280 renderēšanas rezultātus. 1440 01:11:16,280 --> 01:11:19,320 Un ļaujiet man ieiet-- tas ir diezgan glīti. 1441 01:11:19,320 --> 01:11:21,470 Es varu ievadīt registrants=registrants. 1442 01:11:21,470 --> 01:11:23,760 Kas atkal izskatās dīvaini, bet ko es daru? 1443 01:11:23,760 --> 01:11:28,315 Es pieņemu, ka ievietoju vietturi, ko sauc par reģistrētajiem, kura 1444 01:11:28,315 --> 01:11:32,870 vērtība ir šī vārdnīca, kurā esmu apkopojis visas reģistrācijas. 1445 01:11:32,870 --> 01:11:36,005 Tik līdzīgs name vietturim iepriekš, taču tas ir nedaudz spēcīgāks, 1446 01:11:36,005 --> 01:11:39,140 jo tagad tā ir vesela vārdnīca, nevis tikai viena virkne. 1447 01:11:39,140 --> 01:11:42,360 Tāpēc es domāju, ka tagad būšu radošs. 1448 01:11:42,360 --> 01:11:49,950 Ļaujiet man ieiet manā veidņu mapē esošajās veidnēs un darīsim šādi. 1449 01:11:49,950 --> 01:11:53,500 Ieiesim manā termināļa logā, izveidosim citu veidni ar nosaukumu 1450 01:11:53,500 --> 01:11:57,050 registerants.HTML, kas faktiski veiks visu reģistrēto parādīšanu mūsu 1451 01:11:57,050 --> 01:12:00,600 vietā. 1452 01:12:00,600 --> 01:12:03,385 Tātad paplašinu layout.HTML, lai es varētu aizņemties visu to pašu 1453 01:12:03,385 --> 01:12:06,170 HTML, ko iepriekš. 1454 01:12:06,170 --> 01:12:09,620 Un definēsim bloka pamatdaļu tāpat kā iepriekš. 1455 01:12:09,620 --> 01:12:13,145 Un šajā beigu blokā es vēlos ievietot, nezinu, treknrakstā vai 1456 01:12:13,145 --> 01:12:16,670 sakārtotu visu reģistrētosarakstu. 1457 01:12:16,670 --> 01:12:18,000 Tātad, kā es varu to izdarīt? 1458 01:12:18,000 --> 01:12:21,620 Nu, izveidosim nesakārtotu sarakstu, UL. 1459 01:12:21,620 --> 01:12:27,080 Un šeit Jinja un Flask parasti kļūst interesanti. 1460 01:12:27,080 --> 01:12:32,640 Es gribu, lai būtu kaut kas līdzīgs šim-- li un tad studenta vārds, 1461 01:12:32,640 --> 01:12:38,200 un tad L — varbūt-- li, jā, tā. 1462 01:12:38,200 --> 01:12:39,910 Un tad varbūt sports? 1463 01:12:39,910 --> 01:12:41,140 Kaut kas līdzīgs šim? 1464 01:12:41,140 --> 01:12:44,201 Bet es neievadīju vārdu, es neievadīju sporta veidu, es ievadīju visu 1465 01:12:44,201 --> 01:12:47,263 reģistrēto vārdnīcu. 1466 01:12:47,263 --> 01:12:50,122 Tagad Python, ja mēs vienkārši kaut ko darītu melnbaltajā termināļa 1467 01:12:50,122 --> 01:12:52,981 logā un veiktu komandrindas programmu, jūs zināt, ka Python man, 1468 01:12:52,981 --> 01:12:55,840 iespējams, būtu sava veida for cilpa. 1469 01:12:55,840 --> 01:12:58,030 Jinja ļauj jums to izdarīt. 1470 01:12:58,030 --> 01:13:01,605 Tādējādi veidņu valodai ir ļoti viegli mehānismi vietturu, vienkāršu 1471 01:13:01,605 --> 01:13:05,180 cilpu, vienkāršu nosacījumu izpildei. 1472 01:13:05,180 --> 01:13:08,270 Tātad Python sintakse, un tā ir gandrīz identiska. 1473 01:13:08,270 --> 01:13:09,760 Tāpēc skatieties, ko es varu darīt. 1474 01:13:09,760 --> 01:13:13,455 Šajā nesakārtotajā sarakstā ļaujiet man nesākt manuāli izvadīt vienu 1475 01:13:13,455 --> 01:13:17,150 li, ļaujiet man izmantot šo sintaksi. 1476 01:13:17,150 --> 01:13:19,395 Tā pati Jinja sintakse, ko izmantoju blokam, tātad figūriekavās 1477 01:13:19,395 --> 01:13:21,640 procentu zīme. 1478 01:13:21,640 --> 01:13:25,330 Un es teikšu šo-- for name in registrants. 1479 01:13:25,330 --> 01:13:29,390 Tātad šī ir gluži kā Python sintakse iterācijas veikšanai vārdnīcā. 1480 01:13:29,390 --> 01:13:33,100 Un tagad tas izskatīsies stulbi, bet pretējs tam ir endfor. 1481 01:13:33,100 --> 01:13:35,140 Tātad HTML jūs izmantojat slīpsvītru. 1482 01:13:35,140 --> 01:13:35,650 Džindžā. 1483 01:13:35,650 --> 01:13:37,435 Jūs burtiski lietojat vārdu beigas, bez atstarpes un pēc tam 1484 01:13:37,435 --> 01:13:39,220 atslēgvārda nosaukumu. 1485 01:13:39,220 --> 01:13:41,350 Tātad endfor ir tas, kā jūs to aizverat. 1486 01:13:41,350 --> 01:13:44,080 Bet šeit veidņu veidošana kļūst ļoti forša. 1487 01:13:44,080 --> 01:13:47,440 Tagad jūs varat izpildīt li, un šeit es varu darīt kaut ko līdzīgu šī 1488 01:13:47,440 --> 01:13:50,800 studenta vārdam. 1489 01:13:50,800 --> 01:13:51,470 Un viss. 1490 01:13:51,470 --> 01:13:52,880 Es to tā atstāšu. 1491 01:13:52,880 --> 01:13:55,440 Un tas, ko es šeit daru, patiešām izmantoju veidni, tam, kam veidnes 1492 01:13:55,440 --> 01:13:58,000 ir paredzētas. 1493 01:13:58,000 --> 01:14:01,452 Man ir pamatelementi tam, kā es vēlos, lai izskatās šī izvade, taču, 1494 01:14:01,452 --> 01:14:04,905 pateicoties šai mazajai for cilpai šeit, pateicoties Jinja 1495 01:14:04,905 --> 01:14:08,357 sintaksei-- figūrikavām un procentu zīmei, es veikšu iterāciju katrai 1496 01:14:08,357 --> 01:14:11,810 vārdnīcai, izdrukājot vārdu, vārdu, vārdu, vārdu. 1497 01:14:11,810 --> 01:14:13,395 Un tāpēc, ja man tagad ir reģistrēti divi bērni, es apmeklēšu divus 1498 01:14:13,395 --> 01:14:14,980 li. 1499 01:14:14,980 --> 01:14:17,420 David un Carter attiecīgi. 1500 01:14:17,420 --> 01:14:23,860 Redzēsim, ļaujiet man atgriezties pie manas frosh IM cilnes šeit. 1501 01:14:23,860 --> 01:14:26,335 Un man vēl nav saites, tāpēc man tas ir jādara manuāli, kā to darītu 1502 01:14:26,335 --> 01:14:28,810 izstrādātājs. 1503 01:14:28,810 --> 01:14:31,690 Ļaujiet man doties uz /registrants, es attālināšu un nospiedīšu 1504 01:14:31,690 --> 01:14:34,570 taustiņu Enter. 1505 01:14:34,570 --> 01:14:36,885 Un jūs redzēsiet to, ko jūs, iespējams, redzēsit, pirmo reizi 1506 01:14:36,885 --> 01:14:39,200 kļūdoties šajā pasaulē. 1507 01:14:39,200 --> 01:14:40,930 Tātad, kur ir kļūdas ziņojums? 1508 01:14:40,930 --> 01:14:44,480 Diemžēl iekšējā servera kļūda nav tik noderīga. 1509 01:14:44,480 --> 01:14:46,490 Bet mēs sakām, ka redzat termināļa logu. 1510 01:14:46,490 --> 01:14:48,720 Tātad, ja es dodos uz termināļa logu, es tam neesmu pievērsis 1511 01:14:48,720 --> 01:14:50,950 uzmanību jau labu laiku. 1512 01:14:50,950 --> 01:14:52,950 Un patiesībā man ir atvērti divi termināļa logi, lai es joprojām 1513 01:14:52,950 --> 01:14:54,950 varētu izmantot komandas pēc uzvednes. 1514 01:14:54,950 --> 01:14:57,618 Bet, ja es atgriezīšos savā pirmajā termināļa logā, pie tā sauktā 1515 01:14:57,618 --> 01:15:00,286 bash šeit, jūs savā termināļa logā, izstrādājot tīmekļa 1516 01:15:00,286 --> 01:15:02,954 lietojumprogrammas, redzēsit visas kļūdas, kuras pieļāvāt pašā 1517 01:15:02,954 --> 01:15:05,622 terminālī. 1518 01:15:05,622 --> 01:15:07,226 Šis ir viens no tiem Python izsekošanas gadījumiem, kas ir saistīti 1519 01:15:07,226 --> 01:15:08,830 ar to, ka es šeit kļūdījos. 1520 01:15:08,830 --> 01:15:10,460 Tagad ļaujiet man iet uz priekšu šeit. 1521 01:15:10,460 --> 01:15:15,490 Un redzēsim-- tipa kļūda-- funkcija nav atkārtojama. 1522 01:15:15,490 --> 01:15:21,440 Beigu bloks-- nosaukuma funkcija nav atkārtojama. 1523 01:15:21,440 --> 01:15:23,750 Labi, kādu kļūdu es pieļāvu? 1524 01:15:23,750 --> 01:15:27,960 Tas notiek, ja es nesekoju savām piezīmēm un veicu izmaiņas uz ātro. 1525 01:15:27,960 --> 01:15:29,905 Tāpēc man ir šis mainīgais piektajā rindā, ko sauc par registrants, 1526 01:15:29,905 --> 01:15:31,850 un viss ar mazajiem burtiem. 1527 01:15:31,850 --> 01:15:35,195 Bet ko es tad darīju ātrumā šeit 22. rindā? 1528 01:15:38,220 --> 01:15:40,600 Es definēju funkciju, ko sauc par registrants. 1529 01:15:40,600 --> 01:15:42,888 Tātad iesācēju kļūda, man to nevajadzēja darīt. 1530 01:15:42,888 --> 01:15:45,029 Man nevar būt tāda paša nosaukuma mainīgais un funkcija, jo simboli 1531 01:15:45,029 --> 01:15:47,170 ir burtiski identiski. 1532 01:15:47,170 --> 01:15:49,866 Tāpēc, lai skaidri norādītu, ka šis mainīgais šeit patiesībā ir 1533 01:15:49,866 --> 01:15:52,563 globāls, mēs izmantosim savu konvenciju tāpat kā bieži vien C, kad 1534 01:15:52,563 --> 01:15:55,260 mums bija globāls mainīgais. 1535 01:15:55,260 --> 01:15:57,560 Mēs to visu izmantosim tikai tāpēc, lai tas izceltos kā nemainīga 1536 01:15:57,560 --> 01:15:59,860 vērtība. 1537 01:15:59,860 --> 01:16:02,015 Un tāpēc ko es darīšu, es ievadīšu REGISTRANTS ar visiem lielajiem 1538 01:16:02,015 --> 01:16:04,170 burtiem. 1539 01:16:04,170 --> 01:16:06,550 Tātad tas bija stulbi, nedomāju tur to sajaukt. 1540 01:16:06,550 --> 01:16:08,960 Taču šīs kļūdas iemesls, lai būtu skaidrs, ir tāds, ka nevar izmantot 1541 01:16:08,960 --> 01:16:11,370 funkciju, kuras nosaukums ir tāds pats kā mainīgajam. 1542 01:16:11,370 --> 01:16:12,990 Es varētu vienkārši mainīt mainīgā nosaukumu. 1543 01:16:12,990 --> 01:16:15,615 Es iešu uz priekšu un izmantošu to ar lielo burtu, lai patiešām 1544 01:16:15,615 --> 01:16:18,240 izceltos, ka tas patiesībā ir globāls mainīgais augšpusē. 1545 01:16:18,240 --> 01:16:20,910 Labi, tagad es atgriezīšos savā pārlūkprogrammā. 1546 01:16:20,910 --> 01:16:23,025 Ievadīsim David un soccer. 1547 01:16:26,640 --> 01:16:29,200 Labi, bet šeit būs vēl dažas kļūdas. 1548 01:16:29,200 --> 01:16:32,856 Tāpēc 17. rindā ļaujiet man mainīt šo mainīgo, lai tas tiktu rakstīts 1549 01:16:32,856 --> 01:16:36,513 ar lielo burtu, jo es patiešām vēlos ievietot atslēgu un vērtību šajā 1550 01:16:36,513 --> 01:16:40,170 no jauna nosauktajā mainīgajā kā reģistrētos ar lielajiem burtiem. 1551 01:16:40,170 --> 01:16:42,370 Ļaujiet man tagad atgriezties pie VS Code šeit. 1552 01:16:42,370 --> 01:16:44,135 Ļaujiet man atgriezties pie formas un sākt pievienot dažus datus no 1553 01:16:44,135 --> 01:16:45,900 jauna. 1554 01:16:45,900 --> 01:16:48,540 Ļaujiet man reģistrēt Deividu futbolam. 1555 01:16:48,540 --> 01:16:49,927 Noklikšķinot uz reģistrēties tūlīt. 1556 01:16:49,927 --> 01:16:51,510 Un mums vajadzētu redzēt, jūs esat reģistrēts. 1557 01:16:51,510 --> 01:16:54,210 Bet, cerams, tagad tas patiešām ir datora atmiņā. 1558 01:16:54,210 --> 01:16:58,650 Ļaujiet man atgriezties un reģistrēt Kārteru basketbolam. 1559 01:16:58,650 --> 01:17:00,120 Vēlreiz noklikšķinot uz reģistrēties. 1560 01:17:00,120 --> 01:17:01,740 Un, cerams, tas tagad ir reģistrēts. 1561 01:17:01,740 --> 01:17:04,750 Ja es tagad manuāli mainu savu maršrutu uz /registrants, kas ir šis 1562 01:17:04,750 --> 01:17:07,760 nesen pievienotais maršruts, ko es izveidoju, un nospiediet taustiņu 1563 01:17:07,760 --> 01:17:10,770 Enter, tagad es redzu — paldies Dievam. 1564 01:17:10,770 --> 01:17:13,280 Tagad es redzu nesakārtoto sarakstu, kurā ir viss, kas ir datora 1565 01:17:13,280 --> 01:17:15,790 atmiņā. 1566 01:17:15,790 --> 01:17:18,005 Tātad, kad es saku, ka esat reģistrēts, es to domāju tagad, jo 1567 01:17:18,005 --> 01:17:20,220 serveris joprojām darbojas. 1568 01:17:20,220 --> 01:17:23,340 Un datora atmiņā šajā reģistrēo globālajā mainīgajā ir atslēgu 1569 01:17:23,340 --> 01:17:26,460 vērtību pāru vārdnīca. 1570 01:17:26,460 --> 01:17:29,080 Protams, mēs šobrīd redzam tikai atslēgas. 1571 01:17:29,080 --> 01:17:32,770 Tāpēc varētu būt jauki redzēt arī vērtības. 1572 01:17:32,770 --> 01:17:35,685 Tāpēc ļaujiet man atgriezties pie VS code un iedziļināties reģistrēto 1573 01:17:35,685 --> 01:17:38,600 HTML. 1574 01:17:38,600 --> 01:17:40,350 Un es vienkārši izdarīšu kaut ko mazliet nekārtīgu. 1575 01:17:40,350 --> 01:17:43,365 Es tikai teikšu-- kā būtu-- lai padarītu to par teikumu, ir 1576 01:17:43,365 --> 01:17:46,380 reģistrēts. 1577 01:17:46,380 --> 01:17:49,020 Un tagad vēl viens vietturis, es teikšu registrants, kvadrātiekavas, 1578 01:17:49,020 --> 01:17:51,660 name. 1579 01:17:51,660 --> 01:17:55,293 Tātad, tāpat kā Python, ja reģistrētie ir vārdnīca, registrants, 1580 01:17:55,293 --> 01:17:58,926 kvadrātiekavas un atslēga, kurā vēlaties indeksēt, ir arī pilnīgi 1581 01:17:58,926 --> 01:18:02,560 derīga sintakse. 1582 01:18:02,560 --> 01:18:05,290 Tāpēc tagad ļaujiet man atgriezties pie /registrants, ļaujiet man 1583 01:18:05,290 --> 01:18:08,020 vēlreiz noklikšķināt uz ielādēt vēlreiz. 1584 01:18:08,020 --> 01:18:09,900 Tātad, kāpēc tas nedarbojas visiem? 1585 01:18:09,900 --> 01:18:12,480 Kāda ir kļūda, ko es pieļāvu iepriekš? 1586 01:18:12,480 --> 01:18:15,905 Ja Deivids nav reģistrēts nevienam un Kārters nav reģistrēts 1587 01:18:15,905 --> 01:18:19,330 nevienam, bet Deivids un Kārters ir vārdnīcā, tas ir labi. 1588 01:18:19,330 --> 01:18:21,100 Tātad daži dati ir tur. 1589 01:18:21,100 --> 01:18:23,605 Tātad, kāpēc sporta veidi nav saistīti? 1590 01:18:23,605 --> 01:18:26,230 Pirmā lieta, ko es burtiski tikko izdarīju jūsu visu priekšā, bija es 1591 01:18:26,230 --> 01:18:28,855 devos uz app.py un skatījos uz 17. rindiņu, domādams, kā es to 1592 01:18:28,855 --> 01:18:31,480 sabojāju? 1593 01:18:31,480 --> 01:18:35,610 Es lieku sportu kā atslēgas vērtību, kas ir studenta vārds. 1594 01:18:35,610 --> 01:18:38,230 Labi, pirms dažām sekundēm 17. līnija man šķita laba. 1595 01:18:38,230 --> 01:18:41,940 Tad es ar acīm skatos uz 16. rindu, un arī šis izskatījās labi. 1596 01:18:41,940 --> 01:18:44,445 Mana pirmā doma bija, vai es izmantoju request.args, nevis 1597 01:18:44,445 --> 01:18:46,950 request.form? 1598 01:18:46,950 --> 01:18:49,117 Jo tas būtu pieņēmis GET, nevis POST. 1599 01:18:49,117 --> 01:18:51,330 Bet nē, tas arī izskatās labi. 1600 01:18:51,330 --> 01:18:55,690 Tad mana pēdējā doma bija. 1601 01:18:51,330 --> 01:18:55,690 Ak Dievs, vai es nesabojāju HTML formu? 1602 01:18:55,690 --> 01:18:58,080 Tāpēc es atgriezos pie savas cilnes šeit. 1603 01:18:58,080 --> 01:19:03,060 Šeit es devos uz sākotnējo formu, pēc tam skatos lapas avotu. 1604 01:19:03,060 --> 01:19:06,388 Un tas jums var nebūt tik acīmredzams, ja nekad iepriekš neesat 1605 01:19:06,388 --> 01:19:09,716 redzējis izvēlni Atlasīt — kas šeit šķietami trūkst, kas varētu 1606 01:19:09,716 --> 01:19:13,045 izskaidrot manu kļūdu? 1607 01:19:13,045 --> 01:19:13,545 Jā. 1608 01:19:13,545 --> 01:19:15,060 Auditorija: Vārds ir forma. 1609 01:19:15,060 --> 01:19:17,024 DEIVIDS MEILANS: Jā, es nenosaucu šo formas lauku, atvērējpēdiņas, 1610 01:19:17,024 --> 01:19:18,988 aizvērējpēdiņas, "sport". 1611 01:19:18,988 --> 01:19:21,164 Godīgi sakot, jūs iepriekš neesat redzējuši, ka es to daru kā 1612 01:19:21,164 --> 01:19:23,340 atlasīto izvēlni, un tā atšķiras no šīs ievades. 1613 01:19:23,340 --> 01:19:25,794 Ja jums ir ievades tags, jūs burtiski sakāt name= vienlaga, kas ir uz 1614 01:19:25,794 --> 01:19:28,248 ievades taga. 1615 01:19:28,248 --> 01:19:30,540 Izrādās... Es nezinu, kāpēc es to izlaidu agrāk. 1616 01:19:30,540 --> 01:19:32,720 Es droši vien gribēju atgriezties pie tā-- atlases tagam var būt arī 1617 01:19:32,720 --> 01:19:34,900 vārda parametrs. 1618 01:19:34,900 --> 01:19:37,936 Tātad, ja es atgriezīšos pie vārda parametra šeit un atgriezīšos un 1619 01:19:37,936 --> 01:19:40,973 pievienošu vārda parametru, ļaujiet man pāriet uz šo veidni, kas ir 1620 01:19:40,973 --> 01:19:44,010 index.html. 1621 01:19:44,010 --> 01:19:46,837 Ļaujiet man pievienot nosaukums = atvērējpēdiņas, aizvērējpēdiņas, 1622 01:19:46,837 --> 01:19:49,665 "sport" ir rakstīts ar mazajiem burtiem, kas atšķiras no vizuālās 1623 01:19:49,665 --> 01:19:52,492 estētikas šim pagaidu atspējotajam variantam, kas ir paredzēts, lai 1624 01:19:52,492 --> 01:19:55,320 padarītu lietas skaistākas cilvēkiem. 1625 01:19:55,320 --> 01:19:58,478 Tagad ļaujiet man iet uz priekšu šeit un vispirms es ieiešu savā 1626 01:19:58,478 --> 01:20:01,636 termināļa logā un faktiski nospiedīšu Control C, lai pilnībā apturētu 1627 01:20:01,636 --> 01:20:04,794 serveri, jo es vēlos izmest atmiņas saturu un tāpēc atbrīvoties no 1628 01:20:04,794 --> 01:20:07,952 tās vārdnīcas, kurā bija Deivids un Kārters un tām vērtībām, kas nav 1629 01:20:07,952 --> 01:20:11,110 vērtības. 1630 01:20:11,110 --> 01:20:13,620 Tātad tas ir veids, kā es iztīru datora atmiņu. 1631 01:20:13,620 --> 01:20:16,110 Es atkārtošu Flask run. 1632 01:20:16,110 --> 01:20:18,012 Es saņemu to pašu URL kā iepriekš. 1633 01:20:18,012 --> 01:20:20,220 Tāpēc es virzīšu kursoru virs tā un atvēršu jauno cilni. 1634 01:20:20,220 --> 01:20:22,680 Un, lai pārliecinātos, es apskatīšu lapas avotu. 1635 01:20:22,680 --> 01:20:25,455 Un šeit es tagad redzu, labi, tagad formai ir gan vārds, gan sporta 1636 01:20:25,455 --> 01:20:28,230 veids. 1637 01:20:28,230 --> 01:20:30,375 Labi, tagad es tiešām sakrustošu pirkstus, jo es ceru, ka tagad tas 1638 01:20:30,375 --> 01:20:32,520 darbosies. 1639 01:20:32,520 --> 01:20:35,130 Deivids atkal reģistrēsies futbolam. 1640 01:20:35,130 --> 01:20:37,380 Reģistrēties-- saka, kaesam reģistrēti. 1641 01:20:37,380 --> 01:20:40,920 Es atgriezīšos un darīšu to vēlreiz Kārtera un basketbola labā. 1642 01:20:40,920 --> 01:20:45,375 Reģistrēties-- mums joprojām nav saites, tāpēc es manuāli pāriešu uz 1643 01:20:45,375 --> 01:20:49,830 URL un mainīšu /register uz registrants tāpat kā iepriekš. 1644 01:20:49,830 --> 01:20:51,690 Tāliniet un nospiediet taustiņu Enter. 1645 01:20:51,690 --> 01:20:52,740 Un paldies Dievam. 1646 01:20:52,740 --> 01:20:55,650 Tagad es patiešām esmu pareizi reģistrējies šim nolūkam. 1647 01:20:55,650 --> 01:20:56,910 Tātad-- paldies. 1648 01:21:01,075 --> 01:21:02,721 Kas tas ir, piemēram, 20 gadus vēlāk es joprojām cīnos, lai ieviestu 1649 01:21:02,721 --> 01:21:04,367 šo vietni? 1650 01:21:04,367 --> 01:21:07,808 Labi, tagad mums ir pirmo reizi Python un tīmekļa saturs, tagad mums 1651 01:21:07,808 --> 01:21:11,250 ir piemērota tīmekļa lietojumprogramma. 1652 01:21:11,250 --> 01:21:13,460 Un tas tikai neatbalso Sveiki, Deivid, Sveiki, Kārter-- tas tagad 1653 01:21:13,460 --> 01:21:15,670 varētu noderēt ikvienam no jums. 1654 01:21:15,670 --> 01:21:17,840 Un pašlaik tas tiek pasniegts privāti, taču, ja es padarītu šo URL 1655 01:21:17,840 --> 01:21:20,010 publisku, es varētu to ievietot tīmeklī tagad un ļaut reģistrēties 1656 01:21:20,010 --> 01:21:22,180 ikvienam pasaulē. 1657 01:21:22,180 --> 01:21:25,010 Bet šeit ir dažas problēmas. 1658 01:21:25,010 --> 01:21:27,770 Ir iespējami daži drošības trūkumi. 1659 01:21:27,770 --> 01:21:30,580 Un, piemēram, ļaujiet man atgriezties pie tīmekļa veidlapas šeit. 1660 01:21:30,580 --> 01:21:33,812 Un ļaujiet man atvērt pārbaudes cilni-- izstrādātāja rīkus-- un 1661 01:21:33,812 --> 01:21:37,045 atgādināt jums, ka ikviens interneta lietotājs, ne tikai jūs, 1662 01:21:37,045 --> 01:21:40,277 izstrādātājs, bet arī pretinieks var redzēt visu jūsu HTML, skatīt 1663 01:21:40,277 --> 01:21:43,510 visu jūsu CSS, skatīt visu jūsu JavaScript. 1664 01:21:43,510 --> 01:21:46,854 Bet vēl svarīgāk ir tas, ka pārlūkprogrammā tas viss ir klienta pusē, 1665 01:21:46,854 --> 01:21:50,198 tāpēc burtiski nekas tehniski neliedz viņiem mainīt HTML vai vismaz 1666 01:21:50,198 --> 01:21:53,542 tā kopiju. 1667 01:21:53,542 --> 01:21:55,000 Un es to izdarīju pagājušajā nedēļā ar Jeilu. 1668 01:21:55,000 --> 01:21:56,200 Es mainīju viņu vietni. 1669 01:21:56,200 --> 01:21:58,370 Bet nē, es nomainīju savu viņu vietnes kopiju. 1670 01:21:58,370 --> 01:22:00,450 Bet, kad iesaistās formas, jūs, iespējams, tagad patiešām esat 1671 01:22:00,450 --> 01:22:02,530 ļaunprātīgs. 1672 01:22:02,530 --> 01:22:07,205 Jo, lai gan šajā nolaižamajā izvēlnē ir tikai basketbols, futbols un 1673 01:22:07,205 --> 01:22:11,880 frisbijs, pieņemsim, ka es patiešām vēlos reģistrēties — kā būtu ar, 1674 01:22:11,880 --> 01:22:16,555 pieņemsim, — nosauciet savu iecienītāko sporta veidu. 1675 01:22:16,555 --> 01:22:17,560 Auditorija: Volejbols. 1676 01:22:17,560 --> 01:22:18,250 DEIVIDS MEILANS: Volejbols. 1677 01:22:18,250 --> 01:22:22,630 Mēs ļoti vēlamies reģistrēties volejbolam, bet šī vietne man neļaus. 1678 01:22:22,630 --> 01:22:31,720 [NESAKLAUSĀMS] ultimate frisbijs. 1679 01:22:31,720 --> 01:22:33,790 Mainīsim šo pret volejbolu. 1680 01:22:33,790 --> 01:22:37,510 Un mainīsim to uz volejbolu-- Enter. 1681 01:22:37,510 --> 01:22:39,970 Es tagad slēgšu inspektoru. 1682 01:22:39,970 --> 01:22:43,960 Un kā prasīts, tagad atbalstām volejbolu formā. 1683 01:22:43,960 --> 01:22:46,645 Tagad tas nav mainīts serverī, godīgi sakot, bet padomājiet par to, 1684 01:22:46,645 --> 01:22:49,330 kā darbojas HTTP. 1685 01:22:49,330 --> 01:22:52,660 Kad es to aizpildīšu ar vārdu, paskatīsimies, Bernija vārds-- arī 1686 01:22:52,660 --> 01:22:55,990 Bernijs ļoti vēlas reģistrēties volejbolam. 1687 01:22:55,990 --> 01:22:59,763 Pašlaik mans kods tikai uzticēsies tam, ka pieprasījuma formā ir tas, 1688 01:22:59,763 --> 01:23:03,536 kas bija pašā sākotnējā formā, neatkarīgi no tā, vai cilvēks to 1689 01:23:03,536 --> 01:23:07,310 faktiski ir mainījis. 1690 01:23:07,310 --> 01:23:10,350 Tātad, ja es patiešām iesniedzu šo veidlapu un noklikšķinu uz 1691 01:23:10,350 --> 01:23:13,390 Reģistrēties Bernie un volejbolam, lai gan tas nav viens no 1692 01:23:13,390 --> 01:23:16,430 atbalstītajiem pieejamajiem sporta veidiem, ja tagad dodos uz 1693 01:23:16,430 --> 01:23:19,470 reģistrētajiem, mana vietne tomēr ir uzticas, ka Bernijs un, 1694 01:23:19,470 --> 01:23:22,510 iespējams, jūs esat reģistrēti volejbolam. 1695 01:23:22,510 --> 01:23:24,130 Tātad, kāda ir šī ietekme? 1696 01:23:24,130 --> 01:23:28,585 Tas noteikti ir noticis pagātnē, kad patiešām slikti ieviestas 1697 01:23:28,585 --> 01:23:33,040 vietnes ļauj norādīt preces cenu, piemēram, iepirkumu grozā. 1698 01:23:33,040 --> 01:23:36,130 Viņi vienkārši paļaujas, ka, noklikšķinot uz Iesniegt vai pievienojot 1699 01:23:36,130 --> 01:23:39,220 grozam, cena tiek pievienota aizmugures serverim. 1700 01:23:39,220 --> 01:23:41,815 Ja nepārbaudāt cenu un nepārliecināties, tāpat kā datubāzē, uzgaidiet 1701 01:23:41,815 --> 01:23:44,410 minūti, šī cena ir derīga. 1702 01:23:44,410 --> 01:23:46,630 Vai pagaidiet, tie sporta veidi ir derīgi. 1703 01:23:46,630 --> 01:23:48,850 Kurš zina, ko cilvēki gatavojas darīt ar jūsu vietni? 1704 01:23:48,850 --> 01:23:53,090 Un ir tik vienkārši attiecīgi uzlauzt vietni. 1705 01:23:53,090 --> 01:23:55,455 Tagad mēs to varam ļoti viegli salabot, izmantojot kādu sestās 1706 01:23:55,455 --> 01:23:57,820 nedēļas stila Python. 1707 01:23:57,820 --> 01:24:00,080 Mums tiešām šeit ir tikai nedaudz jāpamato loģika. 1708 01:24:00,080 --> 01:24:01,430 Un tāpēc ļaujiet man ierosināt šo. 1709 01:24:01,430 --> 01:24:03,710 Ļaujiet man doties uz app.py šeit. 1710 01:24:03,710 --> 01:24:07,335 Un pašā augšpusē ļaujiet man arī izveidot globālu mainīgo, ko sauc 1711 01:24:07,335 --> 01:24:10,960 par sports ar visiem lielajiem burtiem. 1712 01:24:10,960 --> 01:24:13,485 Un es to noteikšu vienādu ar kvadrātiekavās to sporta veidu sarakstu, 1713 01:24:13,485 --> 01:24:16,010 kurus es patiešām vēlos atbalstīt. 1714 01:24:16,010 --> 01:24:18,855 Tāpēc es likšu šeit basketbolu, es šeit ielikšu futbolu, un... Es 1715 01:24:18,855 --> 01:24:21,700 atvainojos, volejbols oficiāli nav. 1716 01:24:21,700 --> 01:24:24,140 Es šeit ievietošu ultimate frisbiju. 1717 01:24:24,140 --> 01:24:26,800 Tāpēc man ir šis globālais atbalstīto sporta veidu saraksts. 1718 01:24:26,800 --> 01:24:29,650 Tagad padomājiet par to, kā es pirms kāda laika izveidoju šo formu. 1719 01:24:29,650 --> 01:24:31,670 Es tikko iekodēju šos sporta veidus šeit. 1720 01:24:31,670 --> 01:24:34,370 Nu man tas nav jādara, tā vietā es varu izmantot savu oficiālo sporta 1721 01:24:34,370 --> 01:24:37,070 veidu sarakstu. 1722 01:24:37,070 --> 01:24:39,405 Ļaujiet man ritināt uz leju līdz savai index.HTML renderēšanas 1723 01:24:39,405 --> 01:24:41,740 veidnei šeit. 1724 01:24:41,740 --> 01:24:44,530 Ļaujiet man teikt, ka sporta veidi, kurus es vēlos atbalstīt, ir šie. 1725 01:24:44,530 --> 01:24:47,860 Tātad, izmantojot to pašu viettura triku, kā iepriekš, bet tagad es 1726 01:24:47,860 --> 01:24:51,190 saku veidnei, kādus sporta veidus mēs pašlaik atbalstām. 1727 01:24:51,190 --> 01:24:53,835 Tagad, ja es atgriezīšos indeksā.HTML, man nekas no tā nav jādara 1728 01:24:53,835 --> 01:24:56,480 manuāli. 1729 01:24:56,480 --> 01:24:59,666 Ļaujiet man atbrīvoties no visām trim šīm opcijām, kuras manuāli 1730 01:24:59,666 --> 01:25:02,853 ievadīju iepriekš, ļaujiet man izmantot savu jauno triku ar Jinja 1731 01:25:02,853 --> 01:25:06,040 sintaksi un teikt for sports in sports. 1732 01:25:06,040 --> 01:25:09,400 Tad ļaujiet man proaktīvi pateikt beigas, lai tikai pabeigtu šo domu. 1733 01:25:09,400 --> 01:25:12,640 option value=value=[? sports?].. 1734 01:25:15,280 --> 01:25:17,460 Un tad, lai arī cilvēks redzētu tos pašus vārdus, es šeit teikšu 1735 01:25:17,460 --> 01:25:19,640 sport out. 1736 01:25:19,640 --> 01:25:22,710 Tāpēc esmu pilnībā mainījis to, kas tika kodēts-- manuāli ievadīts-- 1737 01:25:22,710 --> 01:25:25,780 uz kaut ko, kas tagad ir pilnīgi dinamisks. 1738 01:25:25,780 --> 01:25:28,465 Tāpēc tagad tas neļaus kādam, piemēram, man, nomainīt HTML, taču 1739 01:25:28,465 --> 01:25:31,150 skatieties šo. 1740 01:25:31,150 --> 01:25:34,170 Formas darbība, atgriežoties atpakaļ, joprojām ir tāda pati kā 1741 01:25:34,170 --> 01:25:37,190 iepriekš. 1742 01:25:37,190 --> 01:25:39,110 Tāpēc estētiski tas izskatās vienādi. 1743 01:25:39,110 --> 01:25:39,860 Bet ziniet ko? 1744 01:25:39,860 --> 01:25:40,985 Kāpēc, lai mēs tagad nebūtu gudri. 1745 01:25:40,985 --> 01:25:43,717 Un pārietu uz app.py un /register maršrutu, un kāpēc gan, lai mēs 1746 01:25:43,717 --> 01:25:46,450 nepateiktu šādi. 1747 01:25:46,450 --> 01:25:51,955 Ja-- kā būtu ar sportu nevis sportā, tad atgriezīsim render templates 1748 01:25:51,955 --> 01:25:57,460 failos.HTML. 1749 01:25:57,460 --> 01:25:59,210 Tagad šī veidne vēl nepastāv. 1750 01:25:59,210 --> 01:26:01,040 Tāpēc ļaujiet man ātri padarīt to ļoti ātru. 1751 01:26:01,040 --> 01:26:03,040 Es nokopēšu šo kodu no iepriekšējā. 1752 01:26:03,040 --> 01:26:08,383 Ļaujiet man izveidot koda failu failā fail.HTML. 1753 01:26:08,383 --> 01:26:09,800 Es tikai ielīmēšu šo šeit. 1754 01:26:09,800 --> 01:26:11,775 Tātad mums ir ļoti vienkāršs kļūdas ziņojums, un es teikšu, ka jūs 1755 01:26:11,775 --> 01:26:13,750 neesat reģistrēts. 1756 01:26:13,750 --> 01:26:15,610 To mēs saprotam ar neveiksmi. 1757 01:26:15,610 --> 01:26:18,790 Un tagad vietnē app.py apsveriet, kādu loģiku esmu pievienojis. 1758 01:26:18,790 --> 01:26:27,160 [? Pitoniski, ?] ja sports nav 1759 01:26:27,160 --> 01:26:29,320 sportā, nu tad jūs mani uzlauzāt. 1760 01:26:29,320 --> 01:26:31,890 Tāpat kā jūs mēģinājāt ievadīt volejbolu vai kādu citu sporta veidu 1761 01:26:31,890 --> 01:26:34,460 request.formā. 1762 01:26:34,460 --> 01:26:37,990 Tāpēc es tikai teikšu, nav kļūmju, neļaujot jums reģistrēties. 1763 01:26:37,990 --> 01:26:42,280 Un es to varu darīt arī nedaudz izteiktāk. 1764 01:26:42,280 --> 01:26:43,780 Kāpēc, lai es arī neteiktu šādi. 1765 01:26:43,780 --> 01:26:47,282 Ja tas nav vārds, tad, ja nosaukums ir tukšs, atgriezīsim render 1766 01:26:47,282 --> 01:26:50,785 template, kurā norādīts fails.HTML. 1767 01:26:50,785 --> 01:26:53,272 Citiem vārdiem sakot, ja jūs man nenorādījāt vārdu, atstājāt to 1768 01:26:53,272 --> 01:26:55,760 tukšu, tas man nav noderīgi, vadot sporta programmu. 1769 01:26:55,760 --> 01:26:57,950 Uzskatīsim arī to par kļūmi. 1770 01:26:57,950 --> 01:27:00,286 Tātad, ja es tagad atgriezīšos šajā cilnē, es pārlādēšu, lai 1771 01:27:00,286 --> 01:27:02,623 pārliecinātos, ka man ir jaunākā klienta puse, ļaujiet man būt 1772 01:27:02,623 --> 01:27:04,960 slinkam un vienkārši noklikšķināt uz Reģistrēties. 1773 01:27:04,960 --> 01:27:06,100 Enter. 1774 01:27:06,100 --> 01:27:08,920 Jūs neesat reģistrēts, jo es tam nedevu īstu vārdu. 1775 01:27:08,920 --> 01:27:10,370 Labi, atgriezīsimies. 1776 01:27:10,370 --> 01:27:11,925 Kā būtu, ja es tagad rakstītu Deivids, bet nē, es negrasos izvēlēties 1777 01:27:11,925 --> 01:27:13,480 sporta veidu. 1778 01:27:13,480 --> 01:27:15,500 Es tikai vēlos reģistrēties pats. 1779 01:27:15,500 --> 01:27:17,060 Nē, tas nedarbojās. 1780 01:27:17,060 --> 01:27:20,220 Tagad ļaujiet man iet uz priekšu un izvēlēties futbolu. 1781 01:27:20,220 --> 01:27:22,770 Tas, manuprāt, darbojas. 1782 01:27:22,770 --> 01:27:26,910 Ļaujiet man atgriezties tagad un izmēģināt šo hakeru triku, kurā es 1783 01:27:26,910 --> 01:27:31,050 atveru nolaižamo izvēlni, es dodos uz izvēlni Atlasīt. 1784 01:27:31,050 --> 01:27:34,575 Es, tāpat kā iepriekš, nomainīšu ultimate frisbiju pret volejbolu, un 1785 01:27:34,575 --> 01:27:38,100 šo es nomainīšu pret volejbolu. 1786 01:27:38,100 --> 01:27:40,110 Ļaujiet man aizvērt cilni tūlīt. 1787 01:27:40,110 --> 01:27:43,575 Šķiet, ka tas ir pieejams tagad, bet, kad šoreiz noklikšķinu uz 1788 01:27:43,575 --> 01:27:47,040 Reģistrēties, tiek parādīts, ka neesat reģistrējies. 1789 01:27:47,040 --> 01:27:49,573 Un tas ir daudz labāk, nekā paļauties uz citām metodēm, kuras jūs 1790 01:27:49,573 --> 01:27:52,106 varētu redzēt vai esat redzējis tiešsaistē saistībā ar HTML, jo 1791 01:27:52,106 --> 01:27:54,640 pastāv arī šis triks. 1792 01:27:54,640 --> 01:27:56,410 Ļaujiet man atgriezties pie ekrāna šeit. 1793 01:27:56,410 --> 01:27:58,796 Ļaujiet man atgriezties pie index.html, un jūs, iespējams, esat 1794 01:27:58,796 --> 01:28:01,183 redzējuši tiešsaistē vai arī jūs, iespējams, redzēsit tiešsaistē, ka 1795 01:28:01,183 --> 01:28:03,570 ir arī citi atribūti, kurus varat izmantot, piemēram, obligāts. 1796 01:28:03,570 --> 01:28:05,165 Jūs varat burtiski pateikt pārlūkprogrammai, uh-uh, šis lauks ir 1797 01:28:05,165 --> 01:28:06,760 obligāts. 1798 01:28:06,760 --> 01:28:08,100 Jūs nevarat atstāt to tukšu. 1799 01:28:08,100 --> 01:28:10,900 Ja es tagad atgriezīšos pārlūkprogrammā, ielādēšu vēlreiz, un es 1800 01:28:10,900 --> 01:28:13,700 atkal pieņemšu, ka esmu slinks, un es neierakstīšu nevienu vārdu un 1801 01:28:13,700 --> 01:28:16,500 nenoklikšķināšu uz Reģistrēties — tas ir jauki. 1802 01:28:16,500 --> 01:28:20,970 Tagad pārlūkprogramma man ir nedaudz noderīgāka, sakot nē, nē, nē. 1803 01:28:20,970 --> 01:28:21,940 Tas ir nepieciešams. 1804 01:28:21,940 --> 01:28:23,192 Jums tas ir jāaizpilda. 1805 01:28:23,192 --> 01:28:24,900 Bet atkal, ja jūs zināt, ko jūs darāt. 1806 01:28:24,900 --> 01:28:28,080 Labi, es nepiekrītu jūsu prasībai prasot man vārdu. 1807 01:28:28,080 --> 01:28:29,440 Ļaujiet man ieiet šeit. 1808 01:28:29,440 --> 01:28:33,160 Ļaujiet man pāriet uz šo tagu, ļaujiet man izdzēst nepieciešamo 1809 01:28:33,160 --> 01:28:36,880 atribūtu, un tagad es izslīdēju. 1810 01:28:36,880 --> 01:28:38,680 Bet es neslīdēju cauri serverim. 1811 01:28:38,680 --> 01:28:41,005 Un tāpēc šeit ir atšķirība un svarīga atšķirība, un tik daudzi 1812 01:28:41,005 --> 01:28:43,330 cilvēki reālajā pasaulē joprojām tur kļūdās. 1813 01:28:43,330 --> 01:28:46,145 Pastāv klienta puses validācija, piemēram, pārbaudot, vai dati ir 1814 01:28:46,145 --> 01:28:48,960 tādi, kā jūs gaidāt klienta pusē, pārlūkprogrammā. 1815 01:28:48,960 --> 01:28:50,730 Un ir servera puses validācija. 1816 01:28:50,730 --> 01:28:53,070 Un, lai gan klienta puses validācija, šī obligātā atribūta 1817 01:28:53,070 --> 01:28:55,410 pievienošana padara lietas lietotājam draudzīgākus, vai ne? 1818 01:28:55,410 --> 01:28:56,790 It kā tas bija diezgan mazs uznirstošais logs. 1819 01:28:56,790 --> 01:28:58,082 Tas man saka, ka tas ir nepieciešams. 1820 01:28:58,082 --> 01:29:00,210 Tas vienkārši izskatās labāk nekā iepriekšējā versija. 1821 01:29:00,210 --> 01:29:01,920 Tas nav uzticams. 1822 01:29:01,920 --> 01:29:05,153 Jūs nevarat uzticēties nevienai lietotāja ievadītajai informācijai, 1823 01:29:05,153 --> 01:29:08,386 jo aptuveni stundas laikā CS50 viņi var iemācīties izslēgt visus šos 1824 01:29:08,386 --> 01:29:11,620 aizsardzības līdzekļus. 1825 01:29:11,620 --> 01:29:15,125 Tātad, pat ja jums patīk labāka lietotāja saskarne klienta pusē, jums 1826 01:29:15,125 --> 01:29:18,630 vienmēr ir jāveic servera puses validācija. 1827 01:29:18,630 --> 01:29:20,290 Lietotājiem nevajadzētu uzticēties. 1828 01:29:20,290 --> 01:29:23,997 Un, tiklīdz jebkura jūsu izveidotā lietotne vai vietne kļūst 1829 01:29:23,997 --> 01:29:27,705 populāra, diemžēl jums ir jārisina arī visas sāncensības iespējas. 1830 01:29:27,705 --> 01:29:34,480 [NESAKLAUSĀMS] vai kaut kas tamlīdzīgs? 1831 01:29:34,480 --> 01:29:35,688 DEIVIDS MEILANS: Labs jautājums. 1832 01:29:35,688 --> 01:29:38,930 Vai pretinieks varētu piekļūt sensitīvām lietām, piemēram, app.py? 1833 01:29:38,930 --> 01:29:40,520 Teorētiski nē. 1834 01:29:40,520 --> 01:29:43,100 Ja pati Flask ir kļūdaina, tad droši, varbūt. 1835 01:29:43,100 --> 01:29:45,460 Ja klēpjdatorā savā serverī izmantojat citu programmatūru, tas 1836 01:29:45,460 --> 01:29:47,820 noteikti ir iespējams. 1837 01:29:47,820 --> 01:29:50,200 Tomēr, ja jūsu serveris ir pareizi konfigurēts, teorētiski tam 1838 01:29:50,200 --> 01:29:52,580 nevajadzētu varēt piekļūt. 1839 01:29:52,580 --> 01:29:55,717 To sakot, mēs drīz redzēsim, vai arī jūs, veicot gala projektu, ja 1840 01:29:55,717 --> 01:29:58,855 veicat kaut ko tīmeklī, jūs nekad nevēlēsities rakstīt lietotājvārdus 1841 01:29:58,855 --> 01:30:01,993 un paroles savā faktiskajā kodā. 1842 01:30:01,993 --> 01:30:04,410 Varat tos ievietot tā sauktajos vides mainīgajos. 1843 01:30:04,410 --> 01:30:07,715 Tātad datora atmiņā, bet ne savā kodā, ja jūs vai kāds sabojājas, 1844 01:30:07,715 --> 01:30:11,020 joprojām ir veidi, kā aizsargāties pret šādām iespējām, lai arī cik 1845 01:30:11,020 --> 01:30:14,325 mazas tās būtu. 1846 01:30:14,325 --> 01:30:14,825 Jā. 1847 01:30:14,825 --> 01:30:19,006 AUDITORIJA: [NEdzirdams] pārliecinoties 1848 01:30:14,825 --> 01:30:19,006 volejbols netika reģistrēts. 1849 01:30:21,872 --> 01:30:23,080 DEIVIDS MALANS: Labs jautājums. 1850 01:30:23,080 --> 01:30:26,095 Un tas atgriežas pie pirmajiem principiem, tāpat kā C un Python, 1851 01:30:26,095 --> 01:30:29,110 tiklīdz jūs atgriežaties no funkcijas, tas arī viss. 1852 01:30:29,110 --> 01:30:31,540 Nekas zem šīs koda rindas netiek izpildīts. 1853 01:30:31,540 --> 01:30:34,950 Un tā, lai rezumētu jautājumu, lai gan es atgriežu šo fail.HTML 1854 01:30:34,950 --> 01:30:38,360 veidni, kā es varu pārliecināties, ka mēs joprojām nejauši 1855 01:30:38,360 --> 01:30:41,770 neiekļaujam volejbolu šajā globālajā vārdnīcā? 1856 01:30:41,770 --> 01:30:44,980 Tas ir tāpēc, ka, piemēram, ja jūs man nenosaucat vārdu, 22. rindā 1857 01:30:44,980 --> 01:30:48,190 šobrīd es atgriežu kļūmes veidni, un viss. 1858 01:30:48,190 --> 01:30:51,940 23., 24., 25., 26., 27. rindas nekad netiek izpildītas. 1859 01:30:51,940 --> 01:30:56,680 Jo īpaši 26 nekad neizpilda, un tieši tur es būtu saglabājis vārdu. 1860 01:30:56,680 --> 01:31:00,290 Līdzīgi, ja mēs iegūstam nederīgu sporta veidu, kas ir tukšs vai nav 1861 01:31:00,290 --> 01:31:03,900 iekļauts sākotnējā autoritatīvā sarakstā, mēs atgriežam fail.HTML kā 1862 01:31:03,900 --> 01:31:07,510 veidni 25. rindiņā. 1863 01:31:07,510 --> 01:31:09,950 Mēs nekad netiekam līdz 26. rindai. 1864 01:31:09,950 --> 01:31:13,300 Tāpēc atliek tikai atgriezties un ko tas nozīmē arī Python. 1865 01:31:13,300 --> 01:31:15,020 Labs jautājums. 1866 01:31:15,020 --> 01:31:17,970 Vai arī citi jautājumi? 1867 01:31:17,970 --> 01:31:18,470 Nē? 1868 01:31:18,470 --> 01:31:23,150 Labi, kā būtu, ja mēs šeit veiktu vēl vienu uzlabojumu. 1869 01:31:23,150 --> 01:31:29,930 Jo kāda varētu būt problēma ar visu glabāšanu šajā globālajā vārdnīcā? 1870 01:31:29,930 --> 01:31:34,845 Beidzot tas viss darbojas, bet kāpēc globālā vārdnīca, iespējams, nav 1871 01:31:34,845 --> 01:31:39,760 tā vieta, kur uzglabāt frosh IM reģistrācijas datus? 1872 01:31:39,760 --> 01:31:41,335 Kādas ir šī sekas? 1873 01:31:41,335 --> 01:31:43,870 Auditorija: var palēnināt visu procesu. 1874 01:31:43,870 --> 01:31:45,170 DEIVIDS MEILANS: Labi, tas var palēnināt visu procesu. 1875 01:31:45,170 --> 01:31:46,878 Bet patiesībā-- RAM patiesībā ir laba. 1876 01:31:46,878 --> 01:31:48,710 Atmiņa patiesībā parasti ir laba lieta. 1877 01:31:48,710 --> 01:31:51,065 Tāpēc tā šeit nebūs problēma. 1878 01:31:51,065 --> 01:31:53,815 Tomēr kāpēc es nevēlos saglabāt šos datus šajā mainīgajā? 1879 01:31:57,040 --> 01:32:01,500 Varbūt jūs varat secināt, kā es kaut ko laboju agrāk. 1880 01:32:01,500 --> 01:32:02,430 Jā, aizmugurē. 1881 01:32:02,430 --> 01:32:04,330 Mērķauditorija: [NESAKLAUSĀMS] 1882 01:32:04,330 --> 01:32:07,330 DEIVIDS MEILANS: Jā, tas izpaužas-- tas ir-- atmiņa tiek dzēsta. 1883 01:32:07,330 --> 01:32:10,460 Atkritumi savākti, tā teikt, tiklīdz Flask pārstāj darboties. 1884 01:32:10,460 --> 01:32:13,260 Tātad, ja jūs nospiežat Control C, jūs uzreiz esat zaudējis visus 1885 01:32:13,260 --> 01:32:16,060 savus pirmkursniekus, kas reģistrējušies sportam. 1886 01:32:16,060 --> 01:32:17,570 Droši vien tā nav laba lieta. 1887 01:32:17,570 --> 01:32:20,372 Es to izdarīju apzināti pirms brīža un nospiedu Control C, jo vēlējos 1888 01:32:20,372 --> 01:32:23,174 notīrīt vārdnīcu, taču ticot, ka serveris nekad neavārēs un kods 1889 01:32:23,174 --> 01:32:25,976 vienmēr darbosies un strāva nekad nepazudīs, tas nav pareizais veids, 1890 01:32:25,976 --> 01:32:28,778 lai izveidotu jebkāda veida tīmekļa lietojumprogrammu ar pastāvīgiem 1891 01:32:28,778 --> 01:32:31,580 datiem. 1892 01:32:31,580 --> 01:32:33,840 Tāpēc mēs, iespējams, vēlamies atkārtoti ieviest CSV failus, un mēs 1893 01:32:33,840 --> 01:32:36,100 esam spēlējušies ar tiem C un Python. 1894 01:32:36,100 --> 01:32:40,960 Varētu pilnībā izmantot CSV, taču tagad mūsu rīcībā ir arī SQL. 1895 01:32:40,960 --> 01:32:43,820 Un ļaujiet man ierosināt to darīt SQL. 1896 01:32:43,820 --> 01:32:45,808 Un šim nolūkam ļaujiet man atvērt programmas versiju, kuru es 1897 01:32:45,808 --> 01:32:47,797 uzrakstīju iepriekš. 1898 01:32:47,797 --> 01:32:49,918 Tāpēc ļaujiet man iet uz priekšu un aizvērt šīs veidnes, kas 1899 01:32:49,918 --> 01:32:52,039 izskatīsies ļoti līdzīgas, taču nedaudz atšķiras no tām, kuras es 1900 01:32:52,039 --> 01:32:54,160 rakstīju iepriekš. 1901 01:32:54,160 --> 01:32:58,040 Un ļaujiet man doties uz priekšu un atvērt šodienas-- ļaujiet man 1902 01:32:58,040 --> 01:33:01,920 ieiet devītajā avotā, ļaujiet man ieiet frosh IM-- kā būtu ar to, 1903 01:33:01,920 --> 01:33:05,800 ceturto versiju, tehniski, tiešsaistes versijas. 1904 01:33:05,800 --> 01:33:08,870 Un ļaujiet man turpināt un atvērt app.py šādi. 1905 01:33:08,870 --> 01:33:12,370 Tātad šeit ir jau izveidota versija, kas tikai nedaudz atšķiras. 1906 01:33:12,370 --> 01:33:14,890 Pašā augšpusē es importēju CS50 SQL bibliotēku, kuru, iespējams, 1907 01:33:14,890 --> 01:33:17,410 atceraties, kad mēs izmantojām pirms pāris nedēļām, lai uzrakstītu 1908 01:33:17,410 --> 01:33:19,930 Python, kas sazinās ar SQL datu bāzi. 1909 01:33:19,930 --> 01:33:22,660 Un šis šķiet piemērots brīdis, lai šo ideju atgrieztu. 1910 01:33:22,660 --> 01:33:26,470 Šeit, astotajā rindā, es izveidoju DB mainīgo, kas atver failu ar 1911 01:33:26,470 --> 01:33:30,280 nosaukumu frosh IMs.db, izmantojot iepriekš redzēto sintaksi. 1912 01:33:30,280 --> 01:33:34,005 Es izveidoju šo frosh IMsdb failu pirms nodarbības, lai mums būtu 1913 01:33:34,005 --> 01:33:37,730 dažas kolonnas, kurās glabāt vārdus, sporta veidus un tamlīdzīgi. 1914 01:33:37,730 --> 01:33:41,100 Lūk, tas pats globālais masīvs, globālais saraksts, ko sauc par 1915 01:33:41,100 --> 01:33:44,470 sportu, un redzēsim, kas notiek zemāk. 1916 01:33:44,470 --> 01:33:47,215 Ja es ritinu uz leju līdz index, tas ir tāds pats kā iepriekš, kā mēs 1917 01:33:47,215 --> 01:33:49,960 kopā rakstījām ātrumā. 1918 01:33:49,960 --> 01:33:53,050 Uz brīdi izlaidīsim atreģistrēšanos un pāriesim pie reģistrēšanās. 1919 01:33:53,050 --> 01:33:55,888 Tātad šis ir nedaudz atšķirīgi, bet paskatīsimies, ko esmu paveicis. 1920 01:33:55,888 --> 01:33:58,430 Man šeit ir daži komentāri, jo es to uzrakstīju iepriekš. 1921 01:33:58,430 --> 01:33:59,951 Un es domāju, ka šī loģika ir gandrīz tāda pati, lai gan es to 1922 01:33:59,951 --> 01:34:01,472 saīsināju. 1923 01:34:01,472 --> 01:34:03,621 Un es uzdodu divus jautājumus uzreiz, izmantojot 38. rindu, šeit ir 1924 01:34:03,621 --> 01:34:05,770 atslēgvārds or. 1925 01:34:05,770 --> 01:34:08,155 Vienkārši sakot, ja nav vārda vai sporta veids nav sporta sadaļā, to 1926 01:34:08,155 --> 01:34:10,540 mēs tagad sauksim par kļūmi. 1927 01:34:10,540 --> 01:34:14,335 Bet tagad interesanti ir tas, ka 42. rindā es izmantoju CS50 SQL 1928 01:34:14,335 --> 01:34:18,130 bibliotēku, lai izpildītu īstu SQL. 1929 01:34:18,130 --> 01:34:20,875 Un es ievietošu tabulā, ko sauc par reģistrētajiem, divas kolonnas — 1930 01:34:20,875 --> 01:34:23,620 vārds un sporta veids. 1931 01:34:23,620 --> 01:34:24,970 Kādi vārdi un sporta veidi? 1932 01:34:24,970 --> 01:34:26,845 Nu šīs divas vērtības ar vietturiem, pievienojam vārdu un sporta 1933 01:34:26,845 --> 01:34:28,720 veidu. 1934 01:34:28,720 --> 01:34:30,220 Ievērojiet, ka izmantoju jautājuma zīmes. 1935 01:34:30,220 --> 01:34:32,845 Tas ir absolūti nepieciešams, lai mēs nesaņemtu kādu no šiem SQL 1936 01:34:32,845 --> 01:34:35,470 injekcijas uzbrukumiem, jo arī tas varētu būt iespējams, ja kāds 1937 01:34:35,470 --> 01:34:38,095 veidlapā ierakstīs dažus bīstamus vārdus vai atslēgvārdus, piemēram, 1938 01:34:38,095 --> 01:34:40,720 dzēšana(delete), vienpēdiņas vai semikolu. 1939 01:34:40,720 --> 01:34:43,690 Šeit es ļauju bibliotēkai veikt datu dezinfekciju. 1940 01:34:43,690 --> 01:34:45,940 Un tad šis ir triks, ko mēs vēl neesam redzējuši, un tas patiešām 1941 01:34:45,940 --> 01:34:48,190 sāks saistīt lietas. 1942 01:34:48,190 --> 01:34:52,288 Es varu arī izmantot novirzīšanas funkciju programmā Flask, kuras 1943 01:34:52,288 --> 01:34:56,386 rezultātā, tā teikt, atkal tiek veikts safetyschool.org triks, pēc 1944 01:34:56,386 --> 01:35:00,484 kura lietotājs ir reģistrējies, ja es vēlos viņiem tagad automātiski 1945 01:35:00,484 --> 01:35:04,582 parādīt visus, kas ir reģistrēti vietnē /registrants, man nav manuāli 1946 01:35:04,582 --> 01:35:08,680 jāgaida, ka viņi mainīs URL, kā es to darīju pēdējās minūtēs. 1947 01:35:08,680 --> 01:35:11,920 Es varu vienkārši novirzīt tos uz jebkuru vietu savā lietotnē. 1948 01:35:11,920 --> 01:35:14,080 Vai arī es varētu tos novirzīt uz jebkuru URL internetā, izmantojot 1949 01:35:14,080 --> 01:35:16,240 šo funkcijas izsaukšanu. 1950 01:35:16,240 --> 01:35:18,910 Un tas ir tikai jauks veids, kā nosūtīt tos uz citu maršrutu, ja 1951 01:35:18,910 --> 01:35:21,580 vēlaties, lai viņi redzētu, šajā gadījumā, reģistrētos. 1952 01:35:21,580 --> 01:35:22,630 Tāpēc ļaujiet man izdarīt šādi. 1953 01:35:22,630 --> 01:35:26,470 Tajā pašā direktorijā ļaujiet man palielināt termināļa loga izmēru. 1954 01:35:26,470 --> 01:35:29,425 Ļaujiet man veikt SQLite trīs no frosh IMs.db un ļaujiet man 1955 01:35:29,425 --> 01:35:32,380 ierakstīt .schema. 1956 01:35:32,380 --> 01:35:35,541 Un jūs patiešām varat redzēt, ka šeit ir ietvertas divas rindas, 1957 01:35:35,541 --> 01:35:38,702 kurās katram reģistrētajam ir ID — kuram automātiski tiks piešķirts 1958 01:35:38,702 --> 01:35:41,863 1, 2, 3, augšpusē-- vārds, kas nav nulles teksts, un sporta veids, 1959 01:35:41,863 --> 01:35:45,025 kas arī ir tas pats. 1960 01:35:45,025 --> 01:35:47,650 Un primārā atslēga būs tikai šis unikālais identifikators. 1961 01:35:47,650 --> 01:35:49,300 To, kuru es sagatavoju iepriekš. 1962 01:35:49,300 --> 01:35:52,720 Bet, ja es izvēlos zvaigznīti no registrants, semikols, pašlaik 1963 01:35:52,720 --> 01:35:56,140 neviens nav reģistrēts nevienam sporta veidam. 1964 01:35:56,140 --> 01:35:58,250 Bet tagad mēģināsim to palaist. 1965 01:35:58,250 --> 01:36:00,300 Ļaujiet man turpināt un aizvērt savu veco versiju, kuru mēs rakstījām 1966 01:36:00,300 --> 01:36:02,350 kopā. 1967 01:36:02,350 --> 01:36:03,550 Un es aizvēršu šo cilni. 1968 01:36:03,550 --> 01:36:07,630 Ļaujiet man palaist Flask šajā ceturtajā versijā. 1969 01:36:07,630 --> 01:36:09,910 Labi, es redzēšu līdzīgu rezultātu. 1970 01:36:09,910 --> 01:36:11,530 Es tagad atvēršu URL. 1971 01:36:11,530 --> 01:36:14,230 Un jūs redzēsiet, ka iepriekš esmu veicis dažas izmaiņas. 1972 01:36:14,230 --> 01:36:17,190 Tā vietā, lai izmantotu atlases izvēlni, es izmantoju tā sauktās 1973 01:36:17,190 --> 01:36:20,151 radio pogas, kas ir atsauce uz vecajām radio pogām, kas toreiz bija 1974 01:36:20,151 --> 01:36:23,112 savstarpēji izslēdzošas automašīnās. 1975 01:36:23,112 --> 01:36:24,320 Un mēs redzēsim, kā to izdarīt. 1976 01:36:24,320 --> 01:36:26,440 Bet tā ir tikai alternatīva izvēlētajai izvēlnei. 1977 01:36:26,440 --> 01:36:30,200 Un es iešu uz priekšu un ierakstīšu šeit savu vārdu vēlreiz. 1978 01:36:30,200 --> 01:36:33,255 Tāpēc es ievadīšu Deividu, es spēlēšu futbolu, atlasot šo radiopogu, 1979 01:36:33,255 --> 01:36:36,310 un es noklikšķināšu uz Reģistrēties tūlīt. 1980 01:36:36,310 --> 01:36:37,630 Un ievērojiet, kas notika. 1981 01:36:37,630 --> 01:36:42,070 Tas ir nedaudz neglīts formatējums, bet tas tāds bija pirms 20 gadiem. 1982 01:36:42,070 --> 01:36:45,760 Šeit es tagad maršrutā /registrants nesakārtota saraksta vietā 1983 01:36:45,760 --> 01:36:49,450 izmantoju vienkāršu HTML tabulu. 1984 01:36:49,450 --> 01:36:51,980 Tāpēc es jums parādīšu, kā tas izskatās pēc brīža. 1985 01:36:51,980 --> 01:36:53,925 Un es jums parādīšu šo reģistrācijas atcelšanas pogu, kas ir 1986 01:36:53,925 --> 01:36:55,870 nevajadzīgi liela. 1987 01:36:55,870 --> 01:36:58,620 Man ir arī funkcionalitāte, drīz redzēsim, kā var atreģistrēt kādu 1988 01:36:58,620 --> 01:37:01,370 arī no sporta veida. 1989 01:37:01,370 --> 01:37:03,790 Tātad varat izņemiet savu vārdu strīdīgās situācijās. 1990 01:37:03,790 --> 01:37:06,090 Nu, ļaujiet man atgriezties pie sava termināļa loga. 1991 01:37:06,090 --> 01:37:09,480 Un es noklikšķināšu uz pluss zīmes, lai piešķirtu sev otru termināli, 1992 01:37:09,480 --> 01:37:12,870 lai varētu atgriezties pie devītā avota frosh IM četri. 1993 01:37:12,870 --> 01:37:16,440 Es gatavojos izpildīt SQLite no frosh IMs.db. 1994 01:37:16,440 --> 01:37:20,580 Es tagad izvēlēšos zvaigznīti no reģistrētajiem, un tagad jūs 1995 01:37:20,580 --> 01:37:24,720 redzēsit, ka Deivids patiešām ir reģistrēts futbolam. 1996 01:37:24,720 --> 01:37:27,973 Un patiesībā, ja es aizveru programmu Flask ar Control C un palaižu 1997 01:37:27,973 --> 01:37:31,226 to vēlreiz, nekas liels, jo arī šī nākamā Flask versija izmantos datu 1998 01:37:31,226 --> 01:37:34,480 bāzi. 1999 01:37:34,480 --> 01:37:38,165 Tāpēc es neatlaidīgi glabāju datus programmā SQLite, bet patiesībā es 2000 01:37:38,165 --> 01:37:41,850 tos iegūstu, izmantojot savu Python kodu programmā Flask. 2001 01:37:41,850 --> 01:37:43,695 Labi, ievietosim šeit vēl vienu personu, lai mēs varētu izdzēst arī 2002 01:37:43,695 --> 01:37:45,540 vienu no mums. 2003 01:37:45,540 --> 01:37:49,823 Kārters basketbolā, reģistrēt, un tagad mēs te redzam mūs abus. 2004 01:37:49,823 --> 01:37:51,490 Labi, paskatīsimies, kā mums tas izdevās. 2005 01:37:51,490 --> 01:37:55,230 Atgriezīsimies pie VS Code, ļaujiet man samazināt termināļa logu. 2006 01:37:55,230 --> 01:38:00,555 Ļaujiet man iedziļināties - patiesībā ieejam veidņu direktorijā un, 2007 01:38:00,555 --> 01:38:05,880 piemēram, apskatīsim, piemēram, index.html. 2008 01:38:05,880 --> 01:38:08,610 Tātad iepriekš mēs izmantojām nolaižamo izvēlni. 2009 01:38:08,610 --> 01:38:11,940 Izrādās, radiopogās tiek izmantots ievades tags, taču tā vietā, lai 2010 01:38:11,940 --> 01:38:15,270 ievadītu veidu type=text, piemēram, cilvēka vārdam, jums ir 2011 01:38:15,270 --> 01:38:18,600 type=radio. 2012 01:38:18,600 --> 01:38:21,905 Un, kamēr katrai radiopogai ir viens un tas pats vārds, viens un tas 2013 01:38:21,905 --> 01:38:25,210 pats vārds, tas padara tās viena otru izslēdzošas. 2014 01:38:25,210 --> 01:38:27,290 Tātad, atzīmējot vienu radiopogu, pārējās tiek izslēgtas, jo tām ir 2015 01:38:27,290 --> 01:38:29,370 vienāds nosaukums. 2016 01:38:29,370 --> 01:38:31,670 Vērtība, ko vēlos piešķirt katrai no šīm radio pogām, ir tikai sporta 2017 01:38:31,670 --> 01:38:33,970 vietturis. 2018 01:38:33,970 --> 01:38:35,720 Tas ir tas, ko cilvēks redz ekrānā. 2019 01:38:35,720 --> 01:38:37,450 Tātad tas ir gandrīz tāds pats kā izvēlne Select, tikai izskatās 2020 01:38:37,450 --> 01:38:39,180 estētiski savādāk. 2021 01:38:39,180 --> 01:38:40,530 Bet tur ir mana tā pati poga. 2022 01:38:40,530 --> 01:38:42,450 Tā ir visa atšķirība, ko es tur izdarīju. 2023 01:38:42,450 --> 01:38:44,400 Un es pievienoju virsraksta tagu H1, lai pateiktu reģistrēties, lai 2024 01:38:44,400 --> 01:38:46,350 būtu skaidrs, kas tas ir. 2025 01:38:46,350 --> 01:38:50,100 Bet apskatīsim citu failu. 2026 01:38:50,100 --> 01:38:54,930 Šis tagad ir, kā būtu ar maršrutu /registrants. 2027 01:38:54,930 --> 01:38:58,125 Tātad, ja es tagad šeit atveru registrants.HTML, tas ir daudz 2028 01:38:58,125 --> 01:39:01,320 detalizētāks nekā mans nesakārtotais saraksts. 2029 01:39:01,320 --> 01:39:03,180 Bet tas ir tikai sava veida garlaicīgs HTML. 2030 01:39:03,180 --> 01:39:05,295 Šeit ir mans tabulas tags, tabulas galva, tabulas rinda, tabulas 2031 01:39:05,295 --> 01:39:07,410 virsraksts. 2032 01:39:07,410 --> 01:39:10,560 Tas padara lietas treknrakstā kā tabulas pirmo rindu. 2033 01:39:10,560 --> 01:39:12,290 Vārds, sports ir manas divas kolonnas. 2034 01:39:12,290 --> 01:39:14,230 Man ir trešā tukša kolonna, lai es varētu ievietot šo pogu, kā mēs 2035 01:39:14,230 --> 01:39:16,170 drīz atkal redzēsim. 2036 01:39:16,170 --> 01:39:18,070 T body apzīmē tabulas pamatdaļu. 2037 01:39:18,070 --> 01:39:20,855 Šeit ir tas pats cilpas triks, lai es varētu katram reģistrētājam 2038 01:39:20,855 --> 01:39:23,640 izvadīt veselu tabulas rindu. 2039 01:39:23,640 --> 01:39:26,610 Un tur ir šī dīvainā forma, bet mēs pie tā atgriezīsimies. 2040 01:39:26,610 --> 01:39:30,870 Bet tur ir reģistrētā vārds, tur ir reģistrētā sports. 2041 01:39:30,870 --> 01:39:34,140 Bet ievērojiet šeit nedaudz atšķirīgo sintaksi. 2042 01:39:34,140 --> 01:39:38,093 Atcerieties, ka CS50 izvēlnes-- CS50 izpildes funkcija, kad tā 2043 01:39:38,093 --> 01:39:42,046 atgriež jums vārdnīcu sarakstu, pēc tam varat piekļūt atsevišķām 2044 01:39:42,046 --> 01:39:46,000 kolonnām, izmantojot šos taustiņus. 2045 01:39:46,000 --> 01:39:48,060 Tātad ejam uz /registrants maršrutu. 2046 01:39:48,060 --> 01:39:50,250 Ļaujiet man atgriezties pie app.py, ritiniet šeit uz leju, un tas 2047 01:39:50,250 --> 01:39:52,440 patiesībā ir ļoti vienkārši. 2048 01:39:52,440 --> 01:39:55,365 Šeit man ir maršruts /registrants, kas vispirms izpilda atlasīto 2049 01:39:55,365 --> 01:39:58,290 zvaigznīti no reģistrētajiem. 2050 01:39:58,290 --> 01:39:59,550 Tātad tikai vecas SQL lietas. 2051 01:39:59,550 --> 01:40:02,350 Dodiet man katru no reģistrēto tabulas, ļaujiet man renderēt veidni 2052 01:40:02,350 --> 01:40:05,150 ar nosaukumu registerants.HTML un vienkārši nododiet šo vārdnīcu 2053 01:40:05,150 --> 01:40:07,950 sarakstu. 2054 01:40:07,950 --> 01:40:10,733 Un mēs to vēl neesam izdarījuši, bet, ja atgriezīsities pie 2055 01:40:10,733 --> 01:40:13,516 registerants.HTML, kā jūs atkārtojat katru šajā sarakstā iekļauto 2056 01:40:13,516 --> 01:40:16,300 vārdnīcu? 2057 01:40:16,300 --> 01:40:19,230 Nu sintakse ir paredzēta tikai reģistrētajam un reģistrētajiem. 2058 01:40:19,230 --> 01:40:24,570 Tas sadala šo vārdnīcu sarakstā pa vienam, tāpat kā Python. 2059 01:40:24,570 --> 01:40:28,065 Tātad registrant.name un registrant.sport ir tikai vēl viena sintakse 2060 01:40:28,065 --> 01:40:31,560 kvadrātiekavās. 2061 01:40:31,560 --> 01:40:34,365 Tā ir tikai nedaudz tīrāka un nedaudz kodolīgāka, nekā, kad visur ir 2062 01:40:34,365 --> 01:40:37,170 pēdiņas un kvadrātiekavas. 2063 01:40:37,170 --> 01:40:40,340 Un tad pārējais ir tikai HTML. 2064 01:40:40,340 --> 01:40:43,390 Kas notiek tagad, ja es vēlos... Kārters ir izslēgts no basketbola 2065 01:40:43,390 --> 01:40:46,440 komandas, tā teikt. 2066 01:40:46,440 --> 01:40:48,030 Tātad, kā mēs to darām? 2067 01:40:48,030 --> 01:40:49,930 Nu, mēs vēlamies noklikšķināt uz šīs pogas, atreģistrēties, blakus 2068 01:40:49,930 --> 01:40:51,830 Kārtera vārdam. 2069 01:40:51,830 --> 01:40:53,330 Bet kā tas darbojas? 2070 01:40:53,330 --> 01:40:56,175 Un tagad padomājiet par jebkuru jūsu apmeklēto vietni, kurā ir kaut 2071 01:40:56,175 --> 01:40:59,020 kas līdzīgs iepirkumu grozam, kurā varat izņemt preces no groza vai 2072 01:40:59,020 --> 01:41:01,865 atjaunināt daudzumus, vai pievienot vairāk daudzumu iepirkumu grozam 2073 01:41:01,865 --> 01:41:04,710 vietnē Amazon vai jebkur citur. 2074 01:41:04,710 --> 01:41:08,450 Paskatīsimies uz HTML, ko mana lietotne ir izspļāvusi. 2075 01:41:08,450 --> 01:41:13,002 Apskatīsim to šeit, un mēs redzēsim sekojošo-- mēs redzēsim, ka mums 2076 01:41:13,002 --> 01:41:17,555 šeit ir HTML, kas sasniedza lietotāju, ne tikai pirmajā kolonnā ir 2077 01:41:17,555 --> 01:41:22,107 Deivids, futbols un otrajā, ievērojiet, ka mani registrants.HTML 2078 01:41:22,107 --> 01:41:26,660 forma arī izvada nelielu tīmekļa formu. 2079 01:41:26,660 --> 01:41:30,080 Tā ir neglīta, bet man pagaidām rūp tikai tās funkcionalitāte. 2080 01:41:30,080 --> 01:41:32,090 Un ievērojiet, ko es šeit daru. 2081 01:41:32,090 --> 01:41:34,520 Katrs reģistrētais šajā datubāzē saņem savu reģistrācijas atcelšanas 2082 01:41:34,520 --> 01:41:36,950 pogu. 2083 01:41:36,950 --> 01:41:40,220 Un šai veidlapai ir poga, kas saka atreģistrēties. 2084 01:41:40,220 --> 01:41:42,710 Bet ievērojiet, kas vēl ir katrai no šīm formām. 2085 01:41:42,710 --> 01:41:46,130 Nav teksta lodziņa, nav nolaižamās izvēlnes, nav radio pogu. 2086 01:41:46,130 --> 01:41:51,300 Šeit drīzāk ir paslēpts ievades lauks. 2087 01:41:51,300 --> 01:41:55,810 Tātad ar HTML var izveidot formu, kas iesniegs informāciju, taču jums 2088 01:41:55,810 --> 01:42:00,320 nav jādod lietotājam iespēja mainīt šo informāciju. 2089 01:42:00,320 --> 01:42:02,360 Ja vēlaties, varat vienkārši iet uz priekšu un nemanāmi ievietot to 2090 01:42:02,360 --> 01:42:04,400 formā. 2091 01:42:04,400 --> 01:42:05,960 Palēpts dizainā. 2092 01:42:05,960 --> 01:42:09,455 Un tas, kas notiks, ir, ja es noklikšķināšu uz pogas atreģistrēties 2093 01:42:09,455 --> 01:42:12,950 blakus Kārteram, viņa primārā atslēga ir divi. 2094 01:42:12,950 --> 01:42:15,230 Manējā tā vietā ir viens. 2095 01:42:15,230 --> 01:42:16,805 Tātad, kas notiks, ja es noklikšķināšu uz viņa reģistrācijas 2096 01:42:16,805 --> 01:42:18,380 atcelšanas pogas? 2097 01:42:18,380 --> 01:42:23,195 Tas iesniedz veidlapu ar ID parametru, kura vērtība ir divi, un 2098 01:42:23,195 --> 01:42:28,010 iesniedz to reģistrācijas atcelšanas maršrutā. 2099 01:42:28,010 --> 01:42:29,160 Tātad, ko tas nozīmē? 2100 01:42:29,160 --> 01:42:32,275 Nu, ja es dodos uz VS Code un es dodos uz app.py, apskatīsim 2101 01:42:32,275 --> 01:42:35,390 atcelšanas sakni, kuru es izlaidu. 2102 01:42:35,390 --> 01:42:38,135 Tātad, ja piekļūstat reģistrācijas atcelšanas maršrutam, izmantojot 2103 01:42:38,135 --> 01:42:40,880 POST, šis kods tiek izsaukts. 2104 01:42:40,880 --> 01:42:46,010 Es paņemu no request.form ID, kas tika iesniegts slēptā veidā. 2105 01:42:46,010 --> 01:42:50,300 Ja patiešām ir ID, tas ir, tas nav tukšs, tas nav nulle, tas ir 2106 01:42:50,300 --> 01:42:54,590 faktisks skaitlis, piemēram, 1, 2, 3 vai vairāk, es veicu dzēšanu no 2107 01:42:54,590 --> 01:42:58,880 reģistrētajiem, kur ID = šī vērtība ar jautājuma zīmes vietturi. 2108 01:42:58,880 --> 01:43:02,120 Un tad es novirzu lietotāju atpakaļ uz reģistrētajiem. 2109 01:43:02,120 --> 01:43:04,685 Tagad, ja es atgriezīšos pie šīs veidlapas šeit, es noklikšķināšu uz 2110 01:43:04,685 --> 01:43:07,250 atreģistrēties, mēs redzēsim to darbībā. 2111 01:43:07,250 --> 01:43:08,960 Tagad Kārters vairs nav. 2112 01:43:08,960 --> 01:43:12,643 Un patiesībā, ja es atgriežos pie sava termināļa logu šeit, es atveru 2113 01:43:12,643 --> 01:43:16,326 SQLite trīs no frosh IMs.db un atkārtoti palaižu atlasīto zvaigznīti 2114 01:43:16,326 --> 01:43:20,010 no reģistrētajiem, Kārtera vairs nav. 2115 01:43:20,010 --> 01:43:22,950 Tātad, atkal izmantojot ļoti vienkāršas HTML formas, jūs varat iegūt 2116 01:43:22,950 --> 01:43:25,890 pogas, saites un citus līdzīgus lietotāja saskarnes mehānismus, lai 2117 01:43:25,890 --> 01:43:28,830 veiktu serverī nepieciešamās darbības. 2118 01:43:28,830 --> 01:43:30,590 Bet šeit pastāv briesmas. 2119 01:43:30,590 --> 01:43:33,630 Tagad tas tiešām ir domāts-- šis piemērs ir administratīva vietne, 2120 01:43:33,630 --> 01:43:36,670 kāda tā bija pirms aptuveni 20 gadiem, tikai mūsu iekšējiem 2121 01:43:36,670 --> 01:43:39,710 darbiniekiem. 2122 01:43:39,710 --> 01:43:44,820 Tehniski tas ir bīstami, ko es arī tikko izdarīju. 2123 01:43:44,820 --> 01:43:47,870 Pat ja Kārtera ID ir divi un paslēpts, un mans ir viens un paslēpts, 2124 01:43:47,870 --> 01:43:50,920 ko tas varētu ļaut pretiniekam darīt, ja viņam būtu administratora 2125 01:43:50,920 --> 01:43:53,970 piekļuve tai pašai vietnei? 2126 01:43:57,470 --> 01:43:58,175 Kādas domas? 2127 01:44:01,775 --> 01:44:02,275 Jā. 2128 01:44:02,275 --> 01:44:04,140 Auditorija: Vai viņi varētu mainīt vērtību un pēc tam atreģistrēties? 2129 01:44:04,140 --> 01:44:04,650 DEIVIDS MEILANS: Jā. 2130 01:44:04,650 --> 01:44:07,425 Viņi varētu mainīt šī slēptā atribūta vērtību, atverot Chrome 2131 01:44:07,425 --> 01:44:10,200 izstrādātāja rīkus, mainot numuru HTML. 2132 01:44:10,200 --> 01:44:11,870 Viņi varētu dzēst ikvienu, atreģistrēt ikvienu, ko vēlas no datu 2133 01:44:11,870 --> 01:44:13,540 bāzes. 2134 01:44:13,540 --> 01:44:16,580 Tagad šajā gadījumā es apgalvoju, ka tas ir labi, jo tas ir paredzēts 2135 01:44:16,580 --> 01:44:19,620 tikai mums darbiniekiem, kuri tolaik nodarbojās ar sportu. 2136 01:44:19,620 --> 01:44:21,190 Bet tas tiešām ir risks. 2137 01:44:21,190 --> 01:44:25,280 Tātad, vai nebūtu jauki, ja mēs varētu nodrošināt, ka tikai tie 2138 01:44:25,280 --> 01:44:29,370 lietotāji, kuriem ir tiesības, drīkst veikt noteiktas darbības? 2139 01:44:29,370 --> 01:44:32,360 Es domāju, ka, lai izmantotu šo iespēju, mums būs jāievieš kaut kas 2140 01:44:32,360 --> 01:44:35,350 vairāk. 2141 01:44:35,350 --> 01:44:38,180 Un tāpēc šeit, protams, ir iespēja īsi parunāt par to, ko jūs un es 2142 01:44:38,180 --> 01:44:41,010 darām visas dienas garumā katru dienu. 2143 01:44:41,010 --> 01:44:43,093 Mēs piesakāmies vienā vai vairākās vietnēs vai lietotnēs vai vismaz 2144 01:44:43,093 --> 01:44:45,176 līdz brīdim, kad esat automātiski izrakstījies un jums tas ir jādara 2145 01:44:45,176 --> 01:44:47,260 vēlreiz. 2146 01:44:47,260 --> 01:44:49,290 Piemēram, šeit ir Gmail ekrānuzņēmums. 2147 01:44:49,290 --> 01:44:51,520 Ievadot lietotājvārdu, ievadiet savu paroli, iespējams, savu divu 2148 01:44:51,520 --> 01:44:53,750 faktoru kodu, kas tiek nosūtīts īsziņā vai nosūtīts uz jūsu tālruni, 2149 01:44:53,750 --> 01:44:55,980 un pēc tam esat pieteicies. 2150 01:44:55,980 --> 01:44:59,430 Un par laimi, atkarībā no vietnes, jūs nesaņemat aicinājumu vēlreiz 2151 01:44:59,430 --> 01:45:02,880 pieteikties, parasti vairākas stundas, dienas vai nedēļas. 2152 01:45:02,880 --> 01:45:04,860 Tāpat kā Gmail, jūs esat pieteicies ilgu laiku. 2153 01:45:04,860 --> 01:45:06,780 Drošības nolūkos jūsu banka, iespējams, jūs izrakstīs apmēram stundas 2154 01:45:06,780 --> 01:45:08,700 laikā. 2155 01:45:08,700 --> 01:45:11,220 Tātad tas ir pilnībā konfigurējams serverī. 2156 01:45:11,220 --> 01:45:14,460 Bet kā Gmail zina, kā Google to zina, pat ja jūs atkal un atkal un 2157 01:45:14,460 --> 01:45:17,700 atkal pārbaudāt dažādus e-pastus, kā viņi zina, ka joprojām esat tā 2158 01:45:17,700 --> 01:45:20,940 pati persona, kas pieteicās? 2159 01:45:20,940 --> 01:45:24,452 Izrādās, ka, izmantojot tos pašus veidošanas blokus, ko šodien — HTTP 2160 01:45:24,452 --> 01:45:27,964 un HTML un citus-- jūs faktiski varat īstenot pieteikšanās funkcijas 2161 01:45:27,964 --> 01:45:31,476 jēdzienu, veicot līdzvērtīgu darbību ar kaut ko, ko sauc par 2162 01:45:31,476 --> 01:45:34,988 sīkfailiem. 2163 01:45:34,988 --> 01:45:37,745 Būtībā tas, kas notiek, kad pirmo reizi veiksmīgi piesakāties vietnē 2164 01:45:37,745 --> 01:45:40,502 ar savu lietotājvārdu un paroli, jūsu datorā tiek ievietots sīkfails, 2165 01:45:40,502 --> 01:45:43,260 tā sakot. 2166 01:45:43,260 --> 01:45:46,350 Un metaforiski tas ir līdzīgi kā paņemt rokas zīmogu, un jūsu roka 2167 01:45:46,350 --> 01:45:49,440 tagad tiek apzīmogota — šajā gadījumā smaidošā sejiņa — tā, ka katru 2168 01:45:49,440 --> 01:45:52,530 otro reizi, kad noklikšķināt uz saites tajā pašā vietnē — google.com, 2169 01:45:52,530 --> 01:45:55,620 gmail.com, neatkarīgi no tā, jūs to nezināt, jūsu pārlūkprogramma 2170 01:45:55,620 --> 01:45:58,710 pastāvīgi parāda šo rokas zīmogu. 2171 01:45:58,710 --> 01:46:01,185 Tāpat kā ieiet klubā, atrakciju parkā vai kaut kā tamlīdzīgi, kur 2172 01:46:01,185 --> 01:46:03,660 viņi nevēlas vēlreiz pārbaudīt jūsu ID. 2173 01:46:03,660 --> 01:46:05,550 Viņi nevēlas vēlreiz pārbaudīt jūsu biļeti, viņi vienkārši vēlas ātri 2174 01:46:05,550 --> 01:46:07,440 redzēt to pašu rokas zīmogu. 2175 01:46:07,440 --> 01:46:09,720 Un tā ir viena no lietām, ko pārlūkprogramma vienmēr dara jūsu labā, 2176 01:46:09,720 --> 01:46:12,000 kad esat pieteicies. 2177 01:46:12,000 --> 01:46:14,647 Visi sīkfaili, kas ir ievietoti, tā sakot, jūsu Mac datorā, 2178 01:46:14,647 --> 01:46:17,295 personālajā datorā vai tālrunī, tiek pastāvīgi parādīti vietnē katru 2179 01:46:17,295 --> 01:46:19,942 reizi, kad noklikšķināt uz saites vai veicat citu pieprasījumu šai 2180 01:46:19,942 --> 01:46:22,590 vietnei. 2181 01:46:22,590 --> 01:46:25,215 Un mehāniski, kā tas darbojas, ne tikai metaforiski ar tinti, būtībā 2182 01:46:25,215 --> 01:46:27,840 notiek šādi. 2183 01:46:27,840 --> 01:46:32,160 Šeit ir HTTP pieprasījuma piemērs, piemēram, Gmail. 2184 01:46:32,160 --> 01:46:34,560 Un, piemēram, pieņemsim, ka esat pieteicies. 2185 01:46:34,560 --> 01:46:37,530 Parasti, sākot no pagājušās nedēļas mēs teicām, ka atgriešanās no 2186 01:46:37,530 --> 01:46:40,500 servera būs vēl viena virtuāla aploksne, kurā būs 200 OK ziņojumi un 2187 01:46:40,500 --> 01:46:43,470 pēc tam faktiskā tīmekļa lapa vai kaķa attēls, vai vienalga kas tas 2188 01:46:43,470 --> 01:46:46,440 varētu būt. 2189 01:46:46,440 --> 01:46:49,150 Taču Google var arī, ja viņi ir pārliecinājušies, ka esat pareizi 2190 01:46:49,150 --> 01:46:51,860 ievadījis lietotājvārdu un paroli, viņi var rīkoties tāpat, kā 2191 01:46:51,860 --> 01:46:54,570 apzīmogot jūsu roku. 2192 01:46:54,570 --> 01:46:58,000 Un veids, kā viņi to dara, no servera uz jūsu pārlūkprogrammu nosūta 2193 01:46:58,000 --> 01:47:01,430 papildu teksta rindiņu šajā virtuālajā aploksnē, burtiski izmantojot 2194 01:47:01,430 --> 01:47:04,860 citu HTTP galveni. 2195 01:47:04,860 --> 01:47:09,750 Ne satura tips-- tas vienkārši norāda, kāds saturs ir atgriezies-- 2196 01:47:09,750 --> 01:47:14,640 tie burtiski nosūta HTTP galveni, ko sauc par set-cookie. 2197 01:47:14,640 --> 01:47:18,540 Un tad viņi iestata atslēgas-vērtību pāri jūsu Mac vai PC datorā. 2198 01:47:18,540 --> 01:47:21,840 Šis ir smaidošās sejiņas zīmoga tehniskais ekvivalents. 2199 01:47:21,840 --> 01:47:25,552 Un tas, kam ir paredzēts jūsu dators — jo jūsu datoram un interneta 2200 01:47:25,552 --> 01:47:29,265 pārlūkprogrammai ir paredzēts ieviest HTTP — ikreiz, kad pakalpojumā 2201 01:47:29,265 --> 01:47:32,977 Gmail noklikšķināt uz citas saites vai noklikšķināt uz cita pasta vai 2202 01:47:32,977 --> 01:47:36,690 tamlīdzīgi, jūsu pārlūkprogramma jums nezinot parāda to rokas zīmogu. 2203 01:47:36,690 --> 01:47:40,413 Un tas, kā tas tehniski tiek darīts, ir norādīts aploksnē, ko tas 2204 01:47:40,413 --> 01:47:44,136 nosūta Google no jūsu pārlūkprogrammas, tas nesūta set-cookie, bet 2205 01:47:44,136 --> 01:47:47,860 tikai nosūta sīkfailu: un tieši tas pats. 2206 01:47:47,860 --> 01:47:51,506 Kamēr Google ir gudrs un tam ir datubāze vai kaut kas no visām 2207 01:47:51,506 --> 01:47:55,153 sesijas vērtībām, sesija ir tehniskais termins informācijas 2208 01:47:55,153 --> 01:47:58,800 uzturēšanai HTTP tīklā. 2209 01:47:58,800 --> 01:48:01,897 Kamēr uzņēmumam Google ir liela datu bāze, kas zina, ka mana sīkfaila 2210 01:48:01,897 --> 01:48:04,995 vērtība ir 1, 2, 3 un jūsu sīkfaila vērtība ir 4, 5, 6, viņi no šī 2211 01:48:04,995 --> 01:48:08,092 virtuālā rokas zīmoga var secināt, kura e-pasta ziņojumi tiem būtu 2212 01:48:08,092 --> 01:48:11,190 jāparāda. 2213 01:48:11,190 --> 01:48:13,330 Manu vai tavu vai tamlīdzīgi. 2214 01:48:13,330 --> 01:48:14,980 Tātad tas ir tikai virspusēji . 2215 01:48:14,980 --> 01:48:17,986 Bet, ja es patiešām vēlos, lai tikai Kārters varētu atcelt 2216 01:48:17,986 --> 01:48:20,993 reģistrāciju, man tikai jāpārliecinās, ka es viņu kaut kā pieteicu — 2217 01:48:20,993 --> 01:48:24,000 lietotājvārds, parole, tas viss. 2218 01:48:24,000 --> 01:48:27,390 Es apzīmogoju viņa roku, vai tiešām, uzliku sīkfailu viņa datorā. 2219 01:48:27,390 --> 01:48:31,745 Un tikai tad, ja viņa sīkfails atbilst lietotāja ID, kuru viņš mēģina 2220 01:48:31,745 --> 01:48:36,100 atcelt, viņam ir jāļauj to darīt. 2221 01:48:36,100 --> 01:48:37,930 Tātad tas viss ir pilnīgi iespējams. 2222 01:48:37,930 --> 01:48:40,027 Un patiešām tehniskais termins šim ir sesija. 2223 01:48:40,027 --> 01:48:43,087 Un tas, ko mēs domājām, ka darīsim šodien atlikušajā laikā, parādīsim 2224 01:48:43,087 --> 01:48:46,148 dažus piemērus tam, kā mūsdienās tiek ieviestas dažas vispazīstamākās 2225 01:48:46,148 --> 01:48:49,208 tīmekļa funkcionalitātes, no kurām dažas izmantosit savā devītajā 2226 01:48:49,208 --> 01:48:52,269 problēmu kopā, kas pati par sevi būs tīmekļa lietotne vai, iespējams, 2227 01:48:52,269 --> 01:48:55,330 pat savā pēdējā projektā. 2228 01:48:55,330 --> 01:48:57,010 Tāpēc ļaujiet man iet uz priekšu un darīt šādi. 2229 01:48:57,010 --> 01:49:00,425 Ļaujiet man aizvērt iepriekšējās cilnes un visu, kas ir frosh IM, un 2230 01:49:00,425 --> 01:49:03,840 pāriesim pie kāda pieteikšanās jēdziena ieviešanas. 2231 01:49:03,840 --> 01:49:06,803 Tāpēc pēc brīža es pārslēgšos šeit uz VS Code, un tas, ko es darīšu, 2232 01:49:06,803 --> 01:49:09,766 patiešām ir manā devītā avota direktorijā, es došos uz pieteikšanās 2233 01:49:09,766 --> 01:49:12,730 direktoriju. 2234 01:49:12,730 --> 01:49:15,782 Un, ja es šeit ierakstīšu ls, jūs redzēsit app.py, prasības.txt, kas 2235 01:49:15,782 --> 01:49:18,834 attiecas tikai uz bibliotēkām, kuras vēlos automātiski instalēt, kā 2236 01:49:18,834 --> 01:49:21,887 arī mapi veidnes. 2237 01:49:21,887 --> 01:49:25,163 Es turpināšu apturēt iepriekšējo serveri un aizvērt termināļa logu, 2238 01:49:25,163 --> 01:49:28,440 un es atvēršu šo app.py versiju. 2239 01:49:28,440 --> 01:49:30,540 Tātad šeit ir dažas jaunas rindas. 2240 01:49:30,540 --> 01:49:32,890 Un mēs jums sniegsim šīs rindas devītajai problēmu kopai, taču šeit 2241 01:49:32,890 --> 01:49:35,240 ir dažas no pazīstamajām lietām, tostarp šī jaunā novirzīšanas 2242 01:49:35,240 --> 01:49:37,590 funkcija, ko tikko izmantojām. 2243 01:49:37,590 --> 01:49:41,130 Un man ir arī sesijas mainīgais, kas nāk arī ar Flask. 2244 01:49:41,130 --> 01:49:43,140 Flask atkal patīkami ir tas, ka tas nodarbojas ar visu šo sīkfailu 2245 01:49:43,140 --> 01:49:45,150 saturu jūsu vietā. 2246 01:49:45,150 --> 01:49:46,450 Tas iestata sīkfailus. 2247 01:49:46,450 --> 01:49:47,520 Tas pārbauda sīkfailus. 2248 01:49:47,520 --> 01:49:51,157 Un tas, ko Flask sniedz jūsu labā, ir tas, ka jūs iegūstat mainīgā, 2249 01:49:51,157 --> 01:49:54,795 ko sauc par sesiju, abstrakciju, lai viss, ko ievietojat sesijas 2250 01:49:54,795 --> 01:49:58,432 mainīgajā, kas pati par sevi ir vārdnīca, būs tur atkal un atkal un 2251 01:49:58,432 --> 01:50:02,070 atkal, kad tas pats lietotājs atgriezīsies. 2252 01:50:02,070 --> 01:50:07,140 Sesija ir veids, kā jūs ieviešat sakāmvārdu iepirkumu grozu. 2253 01:50:07,140 --> 01:50:10,365 Ja es esmu pieteicies Amazon, jūs esat pieteicies Amazon, Amazon 2254 01:50:10,365 --> 01:50:13,590 zina, kurš no mums ir kurš, izmantojot šo sīkfailu. 2255 01:50:13,590 --> 01:50:16,320 Un Amazon, ja viņi izmanto Flask, nodrošina programmētājam vārdnīcu, 2256 01:50:16,320 --> 01:50:19,050 ko sauc par sesiju. 2257 01:50:19,050 --> 01:50:21,780 Un Flask nodrošina, ka tad, kad Kārters apmeklē vietni, kods izmanto 2258 01:50:21,780 --> 01:50:24,510 viņa sesijas objektu. 2259 01:50:24,510 --> 01:50:27,660 Kad es apmeklēju vietni, tā izmanto manu sesijas objektu. 2260 01:50:27,660 --> 01:50:29,760 Bet tas viss tiek īstenots ar tiem pašiem sīkfailiem. 2261 01:50:29,760 --> 01:50:31,677 Tas ir tāds pats kā iepriekš. 2262 01:50:31,677 --> 01:50:34,260 Šīs rindas ir jaunas, un tās būs redzamas devītajā problēmu kopā. 2263 01:50:34,260 --> 01:50:37,770 Tādā veidā mēs iespējojam sesijas tīmekļa lietojumprogrammā. 2264 01:50:37,770 --> 01:50:39,690 Un es tikai pamāšu detaļām. 2265 01:50:39,690 --> 01:50:42,660 Ir dažādi veidi, kā ieviest sesijas, neatkarīgi no tā, vai izmantojat 2266 01:50:42,660 --> 01:50:45,630 sīkfailus serverī, sīkfailus pārlūkprogrammā vai citas lietas. 2267 01:50:45,630 --> 01:50:48,860 Tie tikai nodrošina, ka mēs saglabājam sesijas informāciju iepirkumu 2268 01:50:48,860 --> 01:50:52,090 grozā pašā serverī. 2269 01:50:52,090 --> 01:50:54,640 Tagad šeit lejā, iesim uz priekšu un darīsim šādi. 2270 01:50:54,640 --> 01:50:56,700 Ejam uz priekšu un palaižam Flask. 2271 01:50:56,700 --> 01:51:00,060 Palaižam, lai es varētu redzēt, ko šī lietotne dara. 2272 01:51:00,060 --> 01:51:02,930 Ja es to izdarīšu un apmeklēšu URL, kas tiek izvadīts, šeit tiks 2273 01:51:02,930 --> 01:51:05,800 parādīta ļoti vienkārša tīmekļa lapa. 2274 01:51:05,800 --> 01:51:08,300 Un, ja es ierakstīšu, piemēram, savu vārdu — es nepūlēšos ar paroli — 2275 01:51:08,300 --> 01:51:10,800 un noklikšķināšu uz Pieteikties, jūs redzēsit, ka esat pieteicies kā 2276 01:51:10,800 --> 01:51:13,300 Deivids. 2277 01:51:13,300 --> 01:51:14,710 Un tagad es varu atteikties. 2278 01:51:14,710 --> 01:51:16,950 Tāpēc es iešu uz priekšu un noklikšķināšu uz Iziet. 2279 01:51:16,950 --> 01:51:19,925 Un tagad šķiet, ka tas zina, ka neesmu atkal pieteicies. 2280 01:51:19,925 --> 01:51:21,903 Es varu pieteikties kā Kārters, jo es netraucēju ieviest paroles 2281 01:51:21,903 --> 01:51:23,881 vienkāršības labad, taču tagad vietne zina, ka esmu pieteicies kā 2282 01:51:23,881 --> 01:51:25,860 Kārters. 2283 01:51:25,860 --> 01:51:29,410 Vēl labāk, ja es atkārtoti ielādēju, ielādēju, ielādēju atkārtoti vai 2284 01:51:29,410 --> 01:51:32,960 vēlreiz noklikšķinu uz šīs pogas un vēlreiz ievēroju, ka tas joprojām 2285 01:51:32,960 --> 01:51:36,510 zina, ka esmu Kārters, līdz brīdim, kad es izrakstīšos. 2286 01:51:36,510 --> 01:51:38,070 Labi, kā tas darbojas? 2287 01:51:38,070 --> 01:51:40,545 Atgriezīsimies šeit pie VS Code un ļaujiet man ritināt uz leju, 2288 01:51:40,545 --> 01:51:43,020 pirmkārt, līdz šim maršrutam. 2289 01:51:43,020 --> 01:51:45,510 Šī ir ļoti izplatīta paradigma, saskaņā ar kuru es pārbaudu indeksa 2290 01:51:45,510 --> 01:51:48,000 maršrutu. 2291 01:51:48,000 --> 01:51:53,970 Ja sesijā nav vārda, novirziet lietotāju uz /login. 2292 01:51:53,970 --> 01:51:54,970 Tagad ko tas nozīmē? 2293 01:51:54,970 --> 01:51:57,280 Nu, ļaujiet man atgriezties pie VS Code šeit. 2294 01:51:57,280 --> 01:51:59,627 Ļaujiet man doties uz /route. 2295 01:51:59,627 --> 01:52:01,508 Tātad atkal jūsu URL būs atšķirīgs, bet es vienkārši pāriešu uz 2296 01:52:01,508 --> 01:52:03,390 slīpsvītru un nospiedīšu taustiņu Enter. 2297 01:52:03,390 --> 01:52:06,550 Ņemiet vērā, ka mani automātiski novirzīja uz pieteikšanos. 2298 01:52:06,550 --> 01:52:07,862 Un tik daudzas vietnes to dara. 2299 01:52:07,862 --> 01:52:10,351 Ja apmeklējat vietni un neesat pieteicies, jūs ļoti bieži tiekat 2300 01:52:10,351 --> 01:52:12,840 novirzīts uz /login vai /account, vai kaut ko līdzīgu, kur tiek 2301 01:52:12,840 --> 01:52:15,330 parādīts uzaicinājums. 2302 01:52:15,330 --> 01:52:17,980 Kods, kā to izdarīt, ir tieši šeit. 2303 01:52:17,980 --> 01:52:20,506 Ja sesijā nav vārda, ja iepirkumu grozā nav vārda, tā teikt, 2304 01:52:20,506 --> 01:52:23,033 dodieties uz priekšu un atgrieziet lietotāju, lai pieteiktos šajā 2305 01:52:23,033 --> 01:52:25,560 maršrutā. 2306 01:52:25,560 --> 01:52:27,701 Pretējā gadījumā, netieši, ja viņi ir pieteikušies, parādiet tiem 2307 01:52:27,701 --> 01:52:29,843 index.html. 2308 01:52:29,843 --> 01:52:31,260 Tātad, atšķetināsim šo. 2309 01:52:31,260 --> 01:52:34,650 Ļaujiet man atvērt VS Code otru termināļa logu. 2310 01:52:34,650 --> 01:52:39,285 Ļaujiet man iedziļināties 9. avotā un tajā pašā pieteikšanās 2311 01:52:39,285 --> 01:52:43,920 demonstrācijā, un ļaujiet man atvērt veidni ar nosaukumu index.html. 2312 01:52:43,920 --> 01:52:45,360 Un šeit tas viss ir. 2313 01:52:45,360 --> 01:52:47,520 Ir zināms izkārtojums, bet kuram šobrīd tas interesē, tā ir tikai 2314 01:52:47,520 --> 01:52:49,680 vispārīga HTML tekstveidne. 2315 01:52:49,680 --> 01:52:51,300 Šeit ir pamatdaļas bloks. 2316 01:52:51,300 --> 01:52:52,350 Man ir šis. 2317 01:52:52,350 --> 01:52:57,450 Un arī šī ir Jinja figūriekavu un zīmes dēļ. 2318 01:52:52,350 --> 01:52:57,525 Procentu zīme, ja sesijā ir vārds-- tā ir tikai Python sintakse-- tad 2319 01:52:57,525 --> 01:53:02,700 sakiet šo teikumu. 2320 01:53:02,700 --> 01:53:05,025 Jūs esat pieteicies kā-- neatkarīgi no vārda, kas atrodas sesijā, 2321 01:53:05,025 --> 01:53:07,350 iepirkumu grozā, tā teikt. 2322 01:53:07,350 --> 01:53:10,950 Un tad man vienkārši ir šī HTML saite lietotāja izrakstīšanai. 2323 01:53:10,950 --> 01:53:13,260 Citādi, ja sesijā nav vārda, loģiski, vienkārši sakiet, ka neesat 2324 01:53:13,260 --> 01:53:15,570 pieteicies. 2325 01:53:15,570 --> 01:53:18,490 Un tā vietā dodiet viņiem manuālu saiti, lai pieteiktos. 2326 01:53:18,490 --> 01:53:23,700 Tas ir viss, ko dara šī konkrētā veidne, bet kā darbojas /login? 2327 01:53:23,700 --> 01:53:28,740 Ieiesim šajā citā veidnē, login.HTML kodā, uz kuru esmu novirzīts. 2328 01:53:28,740 --> 01:53:29,950 Super vienkārši. 2329 01:53:29,950 --> 01:53:32,160 Šī ir tikai kopēšana - ielīmēšana no HTML iepriekš. 2330 01:53:32,160 --> 01:53:35,170 Man ir pieteikšanās forma, kurā būs darbība /login, privātuma labad 2331 01:53:35,170 --> 01:53:38,180 tā tiek iesniegta tikai ar POST, un pārējā daļa ir tikai vienkārša 2332 01:53:38,180 --> 01:53:41,190 forma. 2333 01:53:41,190 --> 01:53:43,665 Un es izmantoju type=submit, nevis button=type=submit, taču arī šeit 2334 01:53:43,665 --> 01:53:46,140 ir tāda pati ideja. 2335 01:53:46,140 --> 01:53:48,120 Un, ja es atgriezīšos vietnē app.py, redzēsim, kā darbojas 2336 01:53:48,120 --> 01:53:50,100 pieteikšanās. 2337 01:53:50,100 --> 01:53:50,700 Labi. 2338 01:53:50,700 --> 01:53:52,940 Tas ir daudz uzreiz, taču tie ir salīdzinoši vienkārši vienas un tās 2339 01:53:52,940 --> 01:53:55,180 pašas idejas atkārtojumi. 2340 01:53:55,180 --> 01:53:58,430 Tātad, ja lietotājs apmeklē /login, izmantojot GET vai POST, 2341 01:53:58,430 --> 01:54:01,680 izsauciet šo funkciju login. 2342 01:54:01,680 --> 01:54:04,860 Ja lietotājs ir iesniedzis, izmantojot POST, un mēs esam redzējuši šo 2343 01:54:04,860 --> 01:54:08,040 metodi iepriekš, turpiniet un dariet to 23. rindā. 2344 01:54:08,040 --> 01:54:12,965 Saglabājiet šajā īpašajā sesijas mainīgajā, kas tiek piegādāts kopā 2345 01:54:12,965 --> 01:54:17,890 ar Flask, vārda atslēga un saglabājiet tajā paša lietotāja vārdu. 2346 01:54:17,890 --> 01:54:19,730 Tātad, atvērējpēdiņas, aizvērējpēdiņas, "name" būs vērtība Deivids 2347 01:54:19,730 --> 01:54:21,570 vai Kārters vai tamlīdzīgi. 2348 01:54:21,570 --> 01:54:24,260 Tiklīdz to izdarīsit, novirziet lietotāju atpakaļ uz slīpsvītru, lai 2349 01:54:24,260 --> 01:54:26,950 viņš atkal redzētu sākumlapu. 2350 01:54:26,950 --> 01:54:29,730 Un šādi darbojas arī Amazon un visas šīs citas vietnes. 2351 01:54:29,730 --> 01:54:32,985 Pretējā gadījumā, ja viņi apmeklē šo lapu netieši, izmantojot GET, 2352 01:54:32,985 --> 01:54:36,240 un, lai gan es neteicu = = GET jebkur, tas to nozīmē, jo, ja jūs 2353 01:54:36,240 --> 01:54:39,495 varat nokļūt tikai ar GET vai POST, un mēs jau apstrādājām POST, 2354 01:54:39,495 --> 01:54:42,750 loģiski, ka atliek tikai GET. 2355 01:54:42,750 --> 01:54:45,960 Tad vienkārši parādiet viņiem pieteikšanās ekrānu. 2356 01:54:45,960 --> 01:54:49,500 Bet ir pusducis veidu, kā mēs varam izteikt šo pašu loģiku. 2357 01:54:49,500 --> 01:54:52,360 Un tad, lai izietu, tas ir diezgan vienkārši. 2358 01:54:52,360 --> 01:54:55,596 Ja lietotājs noklikšķina uz šīs iziešanas saites un nonāk pie 2359 01:54:55,596 --> 01:54:58,833 /logout, šajā maršrutā, vienkārši mainiet šīs atslēgas vērtību 2360 01:54:58,833 --> 01:55:02,070 sesijā, lai tā nebūtu. 2361 01:55:02,070 --> 01:55:03,600 Faktiski nē, Kārters ir prom. 2362 01:55:03,600 --> 01:55:04,320 Deivids ir prom. 2363 01:55:04,320 --> 01:55:06,610 Neviens nav pieteicies. 2364 01:55:06,610 --> 01:55:09,230 Tas ir viss, kas nepieciešams, lai faktiski īstenotu pieteikšanos un 2365 01:55:09,230 --> 01:55:11,850 izrakstīšanos no vietnes. 2366 01:55:11,850 --> 01:55:13,740 Plus paroles lieta, kurai, iespējams, vajadzētu būt saistītai ar datu 2367 01:55:13,740 --> 01:55:15,630 bāzi, bet pa vienai lietai vienlaikus. 2368 01:55:15,630 --> 01:55:19,414 Un tiešām, sesija līdzinās iepirkumu groza koda versijai, proti, ja 2369 01:55:19,414 --> 01:55:23,198 es apmeklēju to pašu kodu, es saņemu savu sesijas objektu. 2370 01:55:23,198 --> 01:55:25,740 Ja Kārters apmeklē vietni, viņš iegūst savu sesijas objektu. 2371 01:55:25,740 --> 01:55:30,533 Un veids, kā Flask palīdz mums saprast, viņi ievieto vienu sīkfailu 2372 01:55:30,533 --> 01:55:35,326 manā datorā, citu sīkfailu savā datorā un izmanto tos, lai 2373 01:55:35,326 --> 01:55:40,120 nodrošinātu, ka īstā sesija tiek parādīta īstajam lietotājam. 2374 01:55:40,120 --> 01:55:43,740 Vai jums ir jautājumi par šo sesijas jēdzienu? 2375 01:55:46,860 --> 01:55:47,580 Nē? 2376 01:55:47,580 --> 01:55:51,270 Labi, kā būtu ar pāris pēdējiem piemēriem, lai to visu apkopotu. 2377 01:55:51,270 --> 01:55:53,700 Ļaujiet man atgriezties pie VS Code šeit. 2378 01:55:53,700 --> 01:55:56,490 Ļaujiet man pamest iepriekšējo Flask versiju. 2379 01:55:56,490 --> 01:56:01,020 Ieiesim devītajā avotā un veikalā, kas ir atsevišķa lietotne. 2380 01:56:01,020 --> 01:56:03,660 Un sāksim, vienkārši palaižot Flask, lai redzētu, ko tas dara. 2381 01:56:03,660 --> 01:56:06,750 Virziet kursoru virs URL un atveriet to citā cilnē. 2382 01:56:06,750 --> 01:56:08,590 Un arī šis ir diezgan neglīti. 2383 01:56:08,590 --> 01:56:09,660 Ļaujiet man pietuvināt. 2384 01:56:09,660 --> 01:56:12,270 Bet tas ir ļoti vienkāršs grāmatu veikals. 2385 01:56:12,270 --> 01:56:14,830 Tāpat kā agrīnā vietnes amazon.com versija, par katru no šīm septiņām 2386 01:56:14,830 --> 01:56:17,390 grāmatām, no kurām katra, šķiet, ir — varbūt šī ir H1, šī ir H2, H2, 2387 01:56:17,390 --> 01:56:19,950 H2, H2. 2388 01:56:19,950 --> 01:56:22,410 Un tad zem katras ir poga. 2389 01:56:22,410 --> 01:56:25,085 Tagad izmantosim to kā iespēju, lai secinātu, kā tas darbojas, tāpat 2390 01:56:25,085 --> 01:56:27,760 kā jebkurai vietnei. 2391 01:56:27,760 --> 01:56:30,190 Ļaujiet man iet uz priekšu un apskatīt lapas avotu-- un jūs varat to 2392 01:56:30,190 --> 01:56:32,620 darīt jebkurai tīmekļa vietnei internetā. 2393 01:56:32,620 --> 01:56:36,660 Mēģināsim izdomāt, kā šī grāmatnīca pievieno lietas grozam. 2394 01:56:36,660 --> 01:56:38,340 Šeit ir H1 tags. 2395 01:56:38,340 --> 01:56:39,000 Neinteresanti. 2396 01:56:39,000 --> 01:56:40,170 H2, H2, H2. 2397 01:56:40,170 --> 01:56:42,480 Tātad sulīgā daļa ir šajās formās. 2398 01:56:42,480 --> 01:56:45,680 Katrai no šīm veidlapām ir darbība /cart, tāpēc tas ir maršruts, kas 2399 01:56:45,680 --> 01:56:48,880 pēc brīža būs interesants. 2400 01:56:48,880 --> 01:56:51,330 Un tas izmanto POST privātuma labad. 2401 01:56:51,330 --> 01:56:55,250 Katrai no šīm formām, piemēram, Kārtera reģistrācijas atcelšanas 2402 01:56:55,250 --> 01:56:59,170 funkcijai, ir ID atribūts-- vizuāli paslēpts ID parametrs, kura 2403 01:56:59,170 --> 01:57:03,090 vērtība ir 1, 2, vai 3. 2404 01:57:03,090 --> 01:57:07,360 Tātad, tā kā unikālie grāmatu svītrkodi, tā teikt. 2405 01:57:07,360 --> 01:57:09,100 Bet mūsu gadījumā ļoti mazi skaitļi. 2406 01:57:09,100 --> 01:57:12,395 Un tad katrai no šīm citām grāmatām ir identiska forma, izņemot šo 2407 01:57:12,395 --> 01:57:15,690 vērtību šeit. 2408 01:57:15,690 --> 01:57:19,080 Tagad šajā gadījumā tas nav nekas liels, ka lietotājs varētu tehniski 2409 01:57:19,080 --> 01:57:22,470 uzlauzt šīs grāmatnīcas amazon.com HTML un mainīt ID, jo, ak, kas ir 2410 01:57:22,470 --> 01:57:25,860 ļaunākais, ko viņš darīs? 2411 01:57:25,860 --> 01:57:29,280 Pirks vairāk grāmatu, pievienojot iepirkumu grozam vairāk ID? 2412 01:57:29,280 --> 01:57:30,300 Tā nav problēma. 2413 01:57:30,300 --> 01:57:33,240 Šeit nav cenu, ir tikai grāmatu unikālās idejas. 2414 01:57:33,240 --> 01:57:35,920 Tātad, lai gan atreģistrācija, iespējams, bija satraucoša, jo jūs 2415 01:57:35,920 --> 01:57:38,600 maināt serveri, es domāju, ka tas ir labi, jo lietotājs var tikai 2416 01:57:38,600 --> 01:57:41,280 sliktākajā gadījumā iegādāties vairāk grāmatu, nekā tas būtu 2417 01:57:41,280 --> 01:57:43,960 iespējams, izmantojot pogas. 2418 01:57:43,960 --> 01:57:45,840 Tātad, kā tas tagad darbojas? 2419 01:57:45,840 --> 01:57:49,260 Nu, iedziļināsimies VS Code vēlreiz šeit. 2420 01:57:49,260 --> 01:57:51,120 Ļaujiet man dot sev vēl vienu termināļa logu. 2421 01:57:51,120 --> 01:57:56,778 Un avotā nine/store ļaujiet man atvērt app.py, kur ir visa loģika. 2422 01:57:56,778 --> 01:57:58,299 Tāpēc es ātri pāršķiršu lielāko daļu šī, jo mēs to esam redzējuši 2423 01:57:58,299 --> 01:57:59,820 iepriekš. 2424 01:57:59,820 --> 01:58:02,310 Šis imports ir gandrīz tāds pats kā iepriekš. 2425 01:58:02,310 --> 01:58:03,718 Šī rindiņa ir tāda pati. 2426 01:58:03,718 --> 01:58:06,674 Šī rinda ir gandrīz tāda pati, taču datubāze tagad tiek saukta 2427 01:58:06,674 --> 01:58:09,630 store.db, nevis frosh IMs.db. 2428 01:58:09,630 --> 01:58:12,005 Šis ir standarta kods tikai sesiju iespējošanai, šim iepirkumu groza 2429 01:58:12,005 --> 01:58:14,380 konceptam. 2430 01:58:14,380 --> 01:58:16,410 Un tāpēc redzēsim, kā darbojas indekss. 2431 01:58:16,410 --> 01:58:18,780 Kā tas ir, ka es redzu visas septiņas grāmatas vienlaikus? 2432 01:58:18,780 --> 01:58:22,005 Šajā index funkcijā es izmantoju 19. rindu, izvēlieties zvaigznīti no 2433 01:58:22,005 --> 01:58:25,230 grāmatām, lai visas grāmatas iegūtu no datu bāzes. 2434 01:58:25,230 --> 01:58:28,049 Un tad es atveidoju veidni, ko sauc par bookstore HTML, kas tiek 2435 01:58:28,049 --> 01:58:30,868 izmantota kā vietturis visām šīm grāmatām. 2436 01:58:30,868 --> 01:58:33,160 Labi, uz mirkli mēģināsim atšķetināt šo. 2437 01:58:33,160 --> 01:58:36,750 Ļaujiet man atvērt books.HTML savā veidņu direktorijā. 2438 01:58:36,750 --> 01:58:39,615 Un šeit atkal, lai gan šodien tas ir jauns, tas, iespējams, kļūst 2439 01:58:39,615 --> 01:58:42,480 arvien pazīstamāks sintaktiski. 2440 01:58:42,480 --> 01:58:44,100 Šeit ir H1. 2441 01:58:44,100 --> 01:58:45,490 Šeit ir mana cilpa. 2442 01:58:45,490 --> 01:58:49,840 Šeit ir H2, kas šajā ciklā izvadīs pašreizējās grāmatas nosaukumu. 2443 01:58:49,840 --> 01:58:51,030 Šeit ir forma. 2444 01:58:51,030 --> 01:58:54,100 Šeit ir šīs grāmatas ID, kas tiks izvadīts formā. 2445 01:58:54,100 --> 01:58:57,545 Tāpēc es manuāli neierakstīju septiņas garas formas, es tikai 2446 01:58:57,545 --> 01:59:00,990 ievadīju vienu šajā veidnē, lai tā tiktu ģenerēta automātiski. 2447 01:59:00,990 --> 01:59:04,605 Burtiski, ko darītu tāda vietne kā Amazon, lai vienlaikus parādītu 10 2448 01:59:04,605 --> 01:59:08,220 grāmatas vai 10 vai vairāk meklēšanas rezultātus. 2449 01:59:08,220 --> 01:59:12,000 Nu labi, ejam uz /cart, kurš bija tas sulīgais. 2450 01:59:12,000 --> 01:59:15,430 Un šis ir garāks, bet paskatīsimies, vai varam to saprast. 2451 01:59:15,430 --> 01:59:18,110 Ja lietotājs iesniedz, izmantojot GET vai POST /cart, mēs vispirms 2452 01:59:18,110 --> 01:59:20,790 darām šādi. 2453 01:59:20,790 --> 01:59:22,290 Un tas ir vienkārši nepieciešams, un dažas tekstveidnes ir 2454 01:59:22,290 --> 01:59:23,790 pārrakstītas. 2455 01:59:23,790 --> 01:59:26,810 Mēs izmantosim sesijas objektu, lai saglabātu mainīgo, ko sauc par 2456 01:59:26,810 --> 01:59:29,830 cart, kas šajā gadījumā būs saraksts. 2457 01:59:29,830 --> 01:59:31,960 Tātad sesija atkal ir tikai vārdnīca. 2458 01:59:31,960 --> 01:59:33,660 Jūs varat ievietot tajā visu, ko vēlaties. 2459 01:59:33,660 --> 01:59:36,450 Iepriekš likām studentu vārdus un sporta veidus. 2460 01:59:36,450 --> 01:59:41,085 Tagad tas, ko es gribu darīt, ir-- atvainojiet, iepriekš tajā 2461 01:59:41,085 --> 01:59:45,720 ievietojām studenta vārdu, lietotāja vārdu. 2462 01:59:45,720 --> 01:59:50,920 Tagad es faktiski uzglabāšu groza atslēgu, kuras vērtība ir saraksts. 2463 01:59:50,920 --> 01:59:51,420 Kāpēc? 2464 01:59:51,420 --> 01:59:54,360 Jo es vēlos šajā sarakstā apkopot arvien vairāk grāmatu. 2465 01:59:54,360 --> 01:59:57,195 Labi, tas tikai nodrošina, ka man ir vismaz tukšs iepirkumu grozs jau 2466 01:59:57,195 --> 02:00:00,030 pirmajā reizē, kad lietotājs dara šādi. 2467 02:00:00,030 --> 02:00:02,535 Ja viņi apmeklē šo formu, izmantojot POST, iegūsim viņu publicētās 2468 02:00:02,535 --> 02:00:05,040 grāmatas ID. 2469 02:00:05,040 --> 02:00:08,710 Ja tas nav tukšs, ja ir cipars, piemēram, 1, 2 vai 3, ieejam 2470 02:00:08,710 --> 02:00:12,380 iepirkumu grozā-- kas ir saraksts šajā rindā-- un vienkārši 2471 02:00:12,380 --> 02:00:16,050 pievienosim šo ID. 2472 02:00:16,050 --> 02:00:19,635 Tātad šajā iepirkumu grozā esošo grāmatu sarakstā būs 1, 2, 4, 6 — 2473 02:00:19,635 --> 02:00:23,220 neatkarīgi no tā, kuras grāmatas jūs faktiski pērkat. 2474 02:00:23,220 --> 02:00:25,830 Un tad lietotājs tiek novirzīts uz grozu. 2475 02:00:25,830 --> 02:00:29,070 Ko darīt, ja lietotājs šeit nokļuva, izmantojot GET, nevis POST? 2476 02:00:29,070 --> 02:00:31,120 Nu šis ir salīdzinoši vienkārši. 2477 02:00:31,120 --> 02:00:35,943 Ja jūs tikko apmeklējat /cart, mēs atlasām zvaigznīti no grāmatām, 2478 02:00:35,943 --> 02:00:40,767 kurās ir ID-- labi, tātad tas ir interesanti-- šis saraksts. 2479 02:00:40,767 --> 02:00:42,850 Un šī ir sintakse, kuru jūs, iespējams, iepriekš neesat redzējuši. 2480 02:00:42,850 --> 02:00:46,544 Bet, ja lasāt CS50 bibliotēkas dokumentāciju, ja atlasāt kaut ko un 2481 02:00:46,544 --> 02:00:50,238 izmantojat jautājuma zīmes vietturi, bet pats vietturis ir saraksts, 2482 02:00:50,238 --> 02:00:53,932 mēs izvadīsim ar komatu atdalītu vērtību sarakstu tāpat kā jūs 2483 02:00:53,932 --> 02:00:57,626 izmantotu varbūt septitajā uzdevumu kopā, lai veiktu SQL vaicājumus 2484 02:00:57,626 --> 02:01:01,320 pats. 2485 02:01:01,320 --> 02:01:03,145 Tātad tas tikai nozīmē, ka parādiet man tikai tās grāmatas, kas ir 2486 02:01:03,145 --> 02:01:04,970 manā iepirkumu grozā. 2487 02:01:04,970 --> 02:01:08,935 Ne Kārtera, ne kāda cita, ne visā datubāzē, tikai parādiet man 2488 02:01:08,935 --> 02:01:12,900 iepirkumu grozā esošās grāmatas un pēc tam atveidojiet tās kā tādas. 2489 02:01:12,900 --> 02:01:17,450 Tātad mēs redzējām tikai, kā izskatās katalogs šeit /books. 2490 02:01:17,450 --> 02:01:22,230 Iesim uz priekšu un pievienosim manam grozam varbūt pirmo grāmatu. 2491 02:01:22,230 --> 02:01:27,890 Un tagad pie /cart redzu tikai to pirmo grāmatu, kuras ID ir viens. 2492 02:01:27,890 --> 02:01:30,700 Ļaujiet man tagad atgriezties šeit esošajā grāmatnīcā, ritināt līdz 2493 02:01:30,700 --> 02:01:33,510 varbūt septītajai grāmatai un pievienot to manam grozam. 2494 02:01:33,510 --> 02:01:36,200 Un tagad es to redzu arī šeit. 2495 02:01:36,200 --> 02:01:40,050 Tikmēr visa šī informācija tiek glabāta manā sesijā. 2496 02:01:40,050 --> 02:01:44,605 Kad es atkal un atkal ielādēju šo grozu, es redzu tikai savus divas, 2497 02:01:44,605 --> 02:01:49,160 jo mēs manā sesijā pārbaudām tikai sarakstu. 2498 02:01:49,160 --> 02:01:52,285 Un Flask, atkal pārliecinieties, ka mana sesija atšķiras no jūsu 2499 02:01:52,285 --> 02:01:55,410 sesijas, atšķiras arī no Kārtera sesijas. 2500 02:01:55,410 --> 02:01:58,630 Bet jūs ierakstāt kodu vienreiz, un tas darbojas tūkstošiem, 2501 02:01:58,630 --> 02:02:01,850 miljoniem cilvēku paralēli. 2502 02:02:01,850 --> 02:02:04,105 Vai ir kādi jautājumi par šo? 2503 02:02:04,105 --> 02:02:06,840 Jā, aizmugurē. 2504 02:02:07,770 --> 02:02:09,230 Auditorija: [NESAKLAUSĀMS] 2505 02:02:09,230 --> 02:02:10,897 DEIVIDS MEILANS: Atvainojiet, runājiet mazliet skaļāk. 2506 02:02:10,897 --> 02:02:15,160 Auditorija: [NESAKLAUSĀMS] 2507 02:02:15,160 --> 02:02:16,780 DEIVIDS MEILANS: Atkārtojumam. 2508 02:02:16,780 --> 02:02:19,780 Tātad lietotājiem nekad nebūs vienādas sesijas vērtības. 2509 02:02:19,780 --> 02:02:21,655 Teorētiski sīkfails, kas tiek iestādīts, ne visiem izskatās kā 2510 02:02:21,655 --> 02:02:23,530 smaidoša sejiņa. 2511 02:02:23,530 --> 02:02:26,897 Katrs no mums saņem lielu, nejaušu skaitli, kas mums ir piešķirts. 2512 02:02:26,897 --> 02:02:28,843 Tātad tas būtu tā, it kā katrs no mums iegūtu pilnīgi unikālu rokas 2513 02:02:28,843 --> 02:02:30,790 zīmogu, ko neviens cits nevar redzēt. 2514 02:02:30,790 --> 02:02:33,125 Iemesls, kāpēc neviens cits to nevar redzēt, ir tāpēc, ka, ja vietne 2515 02:02:33,125 --> 02:02:35,460 izmanto HTTP, katru reizi, kad tiek parādīts šis rokas zīmogs, 2516 02:02:35,460 --> 02:02:37,795 ikreiz, kad šis sīkfails tiek sūtīts uz priekšu un atpakaļ, tas viss 2517 02:02:37,795 --> 02:02:40,130 tiek arī šifrēts. 2518 02:02:40,130 --> 02:02:43,306 Tātad katrs no mums var-- pat ja mums nejaušības dēļ ir vienāds 2519 02:02:43,306 --> 02:02:46,483 saturs, jo mums patīk vienas un tās pašas grāmatas, tās būs atsevišķi 2520 02:02:46,483 --> 02:02:49,660 sīkfaili, atsevišķa atmiņa, atsevišķas sesijas. 2521 02:02:49,660 --> 02:02:50,290 Aiz jums. 2522 02:02:50,290 --> 02:02:50,790 Jā. 2523 02:02:50,790 --> 02:02:53,903 Auditorija: [NESAKLAUSĀMS] 2524 02:02:53,903 --> 02:02:55,320 DEIVIDS MEILANS: Tiešām labs jautājums. 2525 02:02:55,320 --> 02:02:56,403 Kad sesija beidzas? 2526 02:02:56,403 --> 02:02:57,540 Pilnīgi konfigurējams. 2527 02:02:57,540 --> 02:03:01,230 Parasti tas beidzas, kad aizverat cilni vai aizverat pārlūkprogrammu. 2528 02:03:01,230 --> 02:03:04,005 Vai arī varat konfigurēt sīkfailus, lai tie būtu noturīgi vienu 2529 02:03:04,005 --> 02:03:06,780 dienu, nedēļu vai ilgāk. 2530 02:03:06,780 --> 02:03:10,567 Piemēram, kad jūs piesakāties pakalpojumā Gmail, viņi, iespējams, 2531 02:03:10,567 --> 02:03:14,355 ievieto jūsu datorā sīkfailu uz nedēļu, mēnesi, gadu, kaut kā tā, jo 2532 02:03:14,355 --> 02:03:18,142 tas būtu kaitinoši un, iespējams, novirzītu jūs uz programmu Outlook 2533 02:03:18,142 --> 02:03:21,930 vai kaut ko citu, ja jums būtu jāturpina pieteikties savā kontā. 2534 02:03:21,930 --> 02:03:23,610 Savukārt jūsu bankas konts faktiski sagaida, kamēr jūs vienkārši 2535 02:03:23,610 --> 02:03:25,290 aizverat cilni. 2536 02:03:25,290 --> 02:03:27,390 Un tad jūsu finansiālās drošības labad viņi vienkārši automātiski 2537 02:03:27,390 --> 02:03:29,490 izdzēš sesiju daudz ātrāk. 2538 02:03:29,490 --> 02:03:30,780 Bet pilnīgi konfigurējams. 2539 02:03:30,780 --> 02:03:32,910 Pēc noklusējuma, kad es to izmantoju, tie parasti tiek izmesti, kad 2540 02:03:32,910 --> 02:03:35,040 pati pārlūkprogramma tiek aizvērta. 2541 02:03:35,040 --> 02:03:38,000 Un arī šeit ir vēl viens iemesls, lai izstrādātu vietnes, izmantojot 2542 02:03:38,000 --> 02:03:40,960 inkognito režīmu, jo, ja vēlaties vienkārši izmest visus savus 2543 02:03:40,960 --> 02:03:43,920 sīkfailus, aizveriet inkognito loga režīmu. 2544 02:03:43,920 --> 02:03:46,380 Atveriet jaunu, un tagad jūs sākat no nulles. 2545 02:03:46,380 --> 02:03:49,167 Jums nav manuāli jādzēš visi sīkfaili, kas var jūs izrakstīt no 2546 02:03:49,167 --> 02:03:51,955 vietnēm, kas jums patiešām ir svarīgas. 2547 02:03:51,955 --> 02:03:52,455 Jā. 2548 02:03:52,455 --> 02:03:56,132 Auditorija: [NESAKAUSĀMS] 2549 02:03:56,132 --> 02:03:57,340 DEIVIDS MEILANS: Labs jautājums. 2550 02:03:57,340 --> 02:03:59,680 Vai, izmantojot sesijas, ja kāds ļaunprātīgi maina šādu formu 2551 02:03:59,680 --> 02:04:02,020 vērtību, tas var ietekmēt citus cilvēkus? 2552 02:04:02,020 --> 02:04:04,974 Teorētiski nē, jo sliktākais, ko varat darīt, ir pievienot savam 2553 02:04:04,974 --> 02:04:07,928 iepirkumu grozam grāmatas, kuras jūs tur nevēlaties. 2554 02:04:07,928 --> 02:04:12,698 Tātad tajā brīdī, pat ja tas atrodas serverī, tas neietekmē jūs vai 2555 02:04:12,698 --> 02:04:17,469 Kārteru vai kādu citu, ja vien nenotiek kaut kas globālāks, piemēram, 2556 02:04:17,469 --> 02:04:22,240 reģistrēšanās sportam vai grāmatu noņemšana no Amazon datu bāzes. 2557 02:04:22,240 --> 02:04:23,480 Tas būtu problemātiski. 2558 02:04:23,480 --> 02:04:26,685 Taču šajā gadījumā mēs noņemam lietas tikai no manas sesijas, ko man 2559 02:04:26,685 --> 02:04:29,890 sniedz vietne. 2560 02:04:29,890 --> 02:04:34,300 Labi, šodienas pēdējā tēma ir šī lieta, kas mūsdienās ir it kā visur, 2561 02:04:34,300 --> 02:04:38,710 šīs lietas, ko sauc par API vai lietojumprogrammu saskarnēm. 2562 02:04:38,710 --> 02:04:40,630 Un tas patiesībā ir ļoti vispārīgs termins. 2563 02:04:40,630 --> 02:04:44,050 Tā kā jebkura funkcija, ko izmantojāt programmā C, Scratch, Python un 2564 02:04:44,050 --> 02:04:47,470 SQL, visas ir API. 2565 02:04:47,470 --> 02:04:51,640 Ir standarta veids, kā savienot šīs funkcijas. 2566 02:04:51,640 --> 02:04:52,730 Tām visiem ir vārdi. 2567 02:04:52,730 --> 02:04:54,190 Tām dažreiz ir atgriezes vērtības. 2568 02:04:54,190 --> 02:04:55,660 Tām dažreiz ir argumenti. 2569 02:04:55,660 --> 02:04:58,930 Un API ir tikai veids, kā jūs izmantojat funkciju. 2570 02:04:58,930 --> 02:05:01,405 Vai vispārīgi runājot, API tikai norāda, kā jūs mijiedarbojaties ar 2571 02:05:01,405 --> 02:05:03,880 kādu pakalpojumu. 2572 02:05:03,880 --> 02:05:07,230 Un tāpēc mūsdienās ir daudz tīmekļa pakalpojumu, ko varat izmantot, 2573 02:05:07,230 --> 02:05:10,580 lai iegūtu datus, piemēram, laikapstākļus vai pašreizējo laiku, vai, 2574 02:05:10,580 --> 02:05:13,930 piemēram, Amazon grāmatu datubāzi, visiem var būt API, bieži vien 2575 02:05:13,930 --> 02:05:17,280 tīmeklī, kas ļauj izmantojot vietrāžus URL vai kādu citu tehnoloģiju 2576 02:05:17,280 --> 02:05:20,630 iegūt datus no kāda cita, it kā tā būtu funkcija, uz kuru izsaucat 2577 02:05:20,630 --> 02:05:23,980 attālināti. 2578 02:05:23,980 --> 02:05:26,725 Bet HTTP ļoti bieži ir mehānisms, ko izmanto, lai faktiski iegūtu 2579 02:05:26,725 --> 02:05:29,470 datus no serveriem. 2580 02:05:29,470 --> 02:05:32,450 Un veids, kā dati var atgriezties, var būt šādi. 2581 02:05:32,450 --> 02:05:35,535 Ļaujiet man pabeigt ar vienu pēdējo piemēru, izmantojot dažas no mūsu 2582 02:05:35,535 --> 02:05:38,620 pazīstamajām izrādēm no iepriekšējām nedēļām. 2583 02:05:38,620 --> 02:05:41,680 Ļaujiet man iet uz priekšu un aizvērt veco Flask versiju, atgriezties 2584 02:05:41,680 --> 02:05:44,740 devītajā avotā un iedziļināties - kā būtu ar piemēru, ko sauc par 2585 02:05:44,740 --> 02:05:47,800 šoviem. 2586 02:05:47,800 --> 02:05:50,020 Un šī pirmā versija, nulle, es tikai gatavojos iet uz priekšu un 2587 02:05:50,020 --> 02:05:52,240 palaist ar Flask run. 2588 02:05:52,240 --> 02:05:54,700 Es virzīšu kursoru virs sava URL un atvēršu to šeit. 2589 02:05:54,700 --> 02:05:56,755 Un jūs tagad redzēsit, ka man ir ļoti vienkārša forma, kā mēs to 2590 02:05:56,755 --> 02:05:58,810 darām arī šodien. 2591 02:05:58,810 --> 02:06:01,555 Es šajā meklēšanas lodziņā ierakstīšu O-F-F-I-C-E, office un 2592 02:06:01,555 --> 02:06:04,300 noklikšķināšu uz Search. 2593 02:06:04,300 --> 02:06:07,930 Tagad jūs redzēsit, ka es nokļuvu URL, kas beidzas ar 2594 02:06:07,930 --> 02:06:11,560 /search?q=office. 2595 02:06:11,560 --> 02:06:15,820 Tātad šī ir kā mana mazā google.com versija, taču es to ieviesu pats. 2596 02:06:15,820 --> 02:06:20,455 Un jebkuru TV pārraides nosaukumu, kas izdots pāris nedēļas iepriekš 2597 02:06:20,455 --> 02:06:25,090 un kas atbilst OFFICE, es to izspļauju nesakārtotā sarakstā. 2598 02:06:25,090 --> 02:06:26,287 Kā tas darbojas? 2599 02:06:26,287 --> 02:06:29,798 Jūs varat iedomāties, pat ja jūs, iespējams, nevarēsit to 2600 02:06:29,798 --> 02:06:33,310 uzprogrammēt tik drīz no galvas — ļaujiet man ieiet 9. avotā. 2601 02:06:33,310 --> 02:06:38,680 Ļaujiet man pāriet uz show nulle un atvērt app.py. 2602 02:06:38,680 --> 02:06:42,895 Un šajā failā jūs redzēsiet, ka es paņemu failu show.db, kas ir kā 2603 02:06:42,895 --> 02:06:47,110 vienkāršāka versija tai pirms pāris nedēļām. 2604 02:06:47,110 --> 02:06:48,910 Lūk, kāpēc es redzu tīmekļa formu. 2605 02:06:48,910 --> 02:06:51,260 Mans pirmais maršruts, mans indekss ir ļoti vienkāršs. 2606 02:06:51,260 --> 02:06:52,540 Tas vienkārši izspļauj šo formu. 2607 02:06:52,540 --> 02:06:55,320 Un mans meklēšanas maršruts, to var uzskatīt par google.com, ir tikai 2608 02:06:55,320 --> 02:06:58,100 kādas četras koda rindiņas. 2609 02:06:58,100 --> 02:07:00,645 Tātad, ja lietotājs nosūta datus uz /search, tiek izsaukta šī 2610 02:07:00,645 --> 02:07:03,190 funkcija, ko sauc par meklēšanu. 2611 02:07:03,190 --> 02:07:07,480 Es deklarēju mainīgo, ko sauc par shows, es izpildu SQL komandu, kas 2612 02:07:07,480 --> 02:07:11,770 ir select, zvaigznīte, from, shows, where title like, jautājuma zīme. 2613 02:07:11,770 --> 02:07:16,260 Un sintakse šeit ir nedaudz traka, bet es vēlos pievienot lietotāja 2614 02:07:16,260 --> 02:07:20,750 ievadīto procentu zīmi priekša un pievienot tai arī procentu zīmi 2615 02:07:20,750 --> 02:07:25,240 aizmugurē, liekot starp šīm divām vērtībām faktisko ievadi, kāpēc? 2616 02:07:25,240 --> 02:07:28,930 Ko tas nozīmē SQL, ja jums ir procentu zīme pa kreisi un pa labi? 2617 02:07:28,930 --> 02:07:30,460 Šodien nav nekāda sakara ar Jinju. 2618 02:07:30,460 --> 02:07:31,450 Auditorija: [NESAKLAUSĀMS] 2619 02:07:31,450 --> 02:07:33,030 DEIVIDS MEILANS: Jā, tā ir pielāgojošā kārts. 2620 02:07:33,030 --> 02:07:36,290 Tātad tas nozīmē, ka kreisajā pusē jāatbilst nullei vai vairāk 2621 02:07:36,290 --> 02:07:39,550 rakstzīmēm vai labajā pusē jāsakrīt ar nulli vai vairāk rakstzīmēm. 2622 02:07:39,550 --> 02:07:42,810 Jums ir jāveic savienošana kā otrais šīs funkcijas arguments. 2623 02:07:42,810 --> 02:07:45,040 Jūs nevarat darīt kaut ko gudru, piemēram, ievietot to šeit ap 2624 02:07:45,040 --> 02:07:47,270 jautājuma zīmi, jautājuma zīme ir vietturis, kurā pievienojat šīs 2625 02:07:47,270 --> 02:07:49,500 vērtības. 2626 02:07:49,500 --> 02:07:52,365 Bet tas tikai nozīmē, hey SQL, parādiet man visus nosaukumus, kuros 2627 02:07:52,365 --> 02:07:55,230 kaut kur ir OFFICE. 2628 02:07:55,230 --> 02:07:57,930 Tas man atgriež vārdnīcu sarakstu. 2629 02:07:57,930 --> 02:08:01,470 Es to nododu kā vietturi mainīgajam, ko sauc par shows, un, ja 2630 02:08:01,470 --> 02:08:05,010 skatāmies uz search.HTML, apskatīsim to. 2631 02:08:05,010 --> 02:08:07,830 Manā veidņu direktorijā ir kaut kas tāds, ko sauc par search.HTML. 2632 02:08:07,830 --> 02:08:10,280 Ļoti vienkārši, es domāju, ka tā ir google.com meklēšanas rezultātu 2633 02:08:10,280 --> 02:08:12,730 būtība. 2634 02:08:12,730 --> 02:08:15,572 Es izmantoju nesakārtotu sarakstu, lai lietas būtu vienkāršas, taču 2635 02:08:15,572 --> 02:08:18,414 es integrēju katru šovu šovu sarakstā, kas tika atgriezts, un izvadu 2636 02:08:18,414 --> 02:08:21,257 li ar katra šova nosaukumu. 2637 02:08:21,257 --> 02:08:21,840 Un viss. 2638 02:08:21,840 --> 02:08:24,330 Tagad Google ir zilas saites, nelieli priekšskatījumi un cits teksts, 2639 02:08:24,330 --> 02:08:26,820 apmēram pirmais teikums no katras lapas. 2640 02:08:26,820 --> 02:08:28,380 Bet tāda ir doma. 2641 02:08:28,380 --> 02:08:33,450 Tas pēc būtības ir ļoti līdzīgs tam, ko google.com/search dara. 2642 02:08:33,450 --> 02:08:37,150 Tagad, kā tas darbojas, šeit vēl nav iesaistīts neviens app.py. 2643 02:08:37,150 --> 02:08:39,540 Tas ir tikai ļoti vienkāršs HTTP. 2644 02:08:39,540 --> 02:08:41,235 Es iesniedzu formu, dodos uz citu maršrutu un saņemu atpakaļ 2645 02:08:41,235 --> 02:08:42,930 rezultātus. 2646 02:08:42,930 --> 02:08:44,280 Bet pārbaudiet šo versiju. 2647 02:08:44,280 --> 02:08:46,365 Ļaujiet man aizvērt šīs cilnes šeit un atvērt savu pirmo termināļa 2648 02:08:46,365 --> 02:08:48,450 logu. 2649 02:08:48,450 --> 02:08:51,465 Ļaujiet man ieiet shows no šodienas devītā avota direktorija un 2650 02:08:51,465 --> 02:08:54,480 šoreiz palaist Flask run. 2651 02:08:54,480 --> 02:08:57,360 Ļaujiet man virzīt kursoru virs šī URL un atvērt to šeit. 2652 02:08:57,360 --> 02:08:59,520 Un tagad vairs nav pogas Iesniegt. 2653 02:08:59,520 --> 02:09:02,392 Tagad es gatavojos izveidot lietotāja saskarni, kas izmanto 2654 02:09:02,392 --> 02:09:05,265 paņēmienu, ko sauc par AJAX-- asinhronajam, JavaScript un XML, kas ir 2655 02:09:05,265 --> 02:09:08,137 nedaudz novecojis termins, jo mēs vairs neizmantojam kaut ko, ko sauc 2656 02:09:08,137 --> 02:09:11,010 par XML. 2657 02:09:11,010 --> 02:09:14,420 Bet AJAX ir paņēmiens, ar kuru jums vairs nav jāiesniedz formas, lai 2658 02:09:14,420 --> 02:09:17,830 iegūtu vairāk datu no servera. 2659 02:09:17,830 --> 02:09:21,376 Varat izmantot JavaScript kā pagājušajā nedēļā, saklausot darbību, 2660 02:09:21,376 --> 02:09:24,922 piemēram, taustiņu nospiešanu uz leju vai augšu, un, tiklīdz dzirdat 2661 02:09:24,922 --> 02:09:28,468 šādu darbību, varat slepeni JavaScript kodā nosūtīt serverim 2662 02:09:28,468 --> 02:09:32,014 pieprasījumu atgūt vairāk datu, un pēc tam pievienot to datora atmiņā 2663 02:09:32,014 --> 02:09:35,560 esošajam Dom-- kokam. 2664 02:09:35,560 --> 02:09:37,675 Un tas nodrošina vienkāršāku pieredzi, piemēram, automātisko 2665 02:09:37,675 --> 02:09:39,790 pabeigšanu jebkurā vietnē. 2666 02:09:39,790 --> 02:09:41,980 Tāpēc tagad ļaujiet man mēģināt rakstīt O-- mēs veicām automātisko 2667 02:09:41,980 --> 02:09:44,170 pabeigšanu ļoti ātri. 2668 02:09:44,170 --> 02:09:51,255 F-F-I-C-E. 2669 02:09:44,170 --> 02:09:47,883 Un jūs redzēsiet ikreiz, kad ievadei pievienošu citus taustiņus, es 2670 02:09:47,883 --> 02:09:51,596 veicu vēl vienu meklēšanu, vēl vienu meklēšanu, vēl vienu meklēšanu, 2671 02:09:51,596 --> 02:09:55,310 un dati mainās. 2672 02:09:55,310 --> 02:09:56,510 Tagad, kā tas darbojas? 2673 02:09:56,510 --> 02:09:58,200 Ļaujiet man atgriezties pie VS Code šeit. 2674 02:09:58,200 --> 02:10:02,570 Un manā otrā termināļa logā ļaujiet man atvērt app.py. 2675 02:10:02,570 --> 02:10:07,810 Un vietnē app.py jūs redzēsit, ka zemāk joprojām ir meklēšanas 2676 02:10:07,810 --> 02:10:13,050 maršruts, kas atgriež meklēšanas veidni, taču skatieties šo. 2677 02:10:13,050 --> 02:10:17,630 Ļaujiet man iedziļināties templates/search.HTML un pamanīt šeit, ka 2678 02:10:17,630 --> 02:10:22,210 mēs patiešām atkal un atkal un atkal saņemam nesakārtotu šovu 2679 02:10:22,210 --> 02:10:26,790 sarakstu. 2680 02:10:26,790 --> 02:10:32,750 Un šis HTML, kas atgriežas-- ļaujiet man doties šeit. 2681 02:10:32,750 --> 02:10:34,430 Ļaujiet man atvērt savu termināli-- ak, atvainojiet. 2682 02:10:34,430 --> 02:10:36,320 Šī ir nepareizā versija. 2683 02:10:36,320 --> 02:10:37,790 Atvainojiet, es atrados nepareizajā mapē. 2684 02:10:37,790 --> 02:10:39,140 Labosim šo. 2685 02:10:39,140 --> 02:10:42,800 Pirmajā programmā app.py kods ir gandrīz tāds pats. 2686 02:10:42,800 --> 02:10:47,385 Meklējot šeit-- labi, es to nedaudz mainīšu. 2687 02:10:47,385 --> 02:10:49,010 Ļaujiet man parādīt šo meklēšanas versiju. 2688 02:10:49,010 --> 02:10:52,130 Ja es atveru app.py, šeit ir mans meklēšanas maršruts. 2689 02:10:52,130 --> 02:10:55,660 Es saņemu mainīgo ar nosaukumu q, piešķirot tam vērtību iegūtu no 2690 02:10:55,660 --> 02:10:59,190 request.args no lietotāja, piemēram, q=office. 2691 02:10:59,190 --> 02:11:01,225 Un tad es pārbaudu, vai lietotājs tiešām kaut ko ierakstīja izpildē 2692 02:11:01,225 --> 02:11:03,260 šo SQL vaicājumu. 2693 02:11:03,260 --> 02:11:04,908 Atlasiet zvaigznīti no shows, kuru nosaukums ir tāds, izmantojot to 2694 02:11:04,908 --> 02:11:06,557 pašu. 2695 02:11:06,557 --> 02:11:09,333 Un šoreiz, lai lietas būtu efektīvas, es ierobežoju kopējo rezultātu 2696 02:11:09,333 --> 02:11:12,110 līdz 50, nevis bezgalīgu skaitu. 2697 02:11:12,110 --> 02:11:15,095 Citādi, ja lietotājs neko neieraksta, lai šeit būtu īpaši droši, es 2698 02:11:15,095 --> 02:11:18,080 iestatu showsvienāds ar tukšs saraksts. 2699 02:11:18,080 --> 02:11:20,330 Tātad, ja neko neierakstiet, nav ko rādīt. 2700 02:11:20,330 --> 02:11:24,478 Un neatkarīgi no tā, es renderēju šo veidni ar nosaukumu search.HTML. 2701 02:11:24,478 --> 02:11:25,520 Nu, paskatīsimies uz to. 2702 02:11:25,520 --> 02:11:30,920 Ja es atveru templates/search.HTML, šoreiz nav izkārtojuma. 2703 02:11:30,920 --> 02:11:34,595 Šim layout.HTML nav pārmantojuma, es burtiski ģenerēju tikai veselu 2704 02:11:34,595 --> 02:11:38,270 kaudzi li fragmentu. 2705 02:11:38,270 --> 02:11:39,052 Kāpēc? 2706 02:11:39,052 --> 02:11:41,010 Nu, paskatīsimies, kas notiek pārlūkprogrammā. 2707 02:11:41,010 --> 02:11:42,890 Un tas ir API sākums. 2708 02:11:42,890 --> 02:11:47,570 Ja es vēlētos padarīt pieejamu šo API-- šo lietojumprogrammu 2709 02:11:47,570 --> 02:11:52,250 saskarni-- es varētu pateikt pasaulei, ka, ja vēlaties manā datubāzē 2710 02:11:52,250 --> 02:11:56,930 meklēt TV šovus, dodieties uz URL, tādu, tādu, /search?q=office vai 2711 02:11:56,930 --> 02:12:01,610 kaķis, suns vai jebkas cits. 2712 02:12:01,610 --> 02:12:03,740 Un tas, ko es jums atgriezīšu, ir šis. 2713 02:12:03,740 --> 02:12:05,975 Ievadiet-- es jums iedošu veselu virkni li tagu, kas gandrīz izskatās 2714 02:12:05,975 --> 02:12:08,210 vienādi. 2715 02:12:08,210 --> 02:12:10,070 Bet ļaujiet man apskatīt lapas avotu. 2716 02:12:10,070 --> 02:12:13,520 Tikai vai es jums atdošu HTML fragmentu. 2717 02:12:13,520 --> 02:12:15,110 Es nedodu jums HTML tagu, pamatdaļas tagu, virsraksta tagu vai 2718 02:12:15,110 --> 02:12:16,700 galvenes tagu. 2719 02:12:16,700 --> 02:12:18,110 Es jums nedošu tīmekļa lapu. 2720 02:12:18,110 --> 02:12:22,480 Es dodu jums HTML fragmentu, ar kuru tagad varat darīt visu, ko 2721 02:12:22,480 --> 02:12:26,850 vēlaties, tostarp ievietot to savā nesakārtotajā sarakstā. 2722 02:12:26,850 --> 02:12:29,870 Tāpēc ievērojiet, kas notiek šajā lietotnē. 2723 02:12:29,870 --> 02:12:33,860 Ja es atgriezīšos šeit pie VS Code, ļaujiet man atvērt savu indeksa 2724 02:12:33,860 --> 02:12:37,850 veidni šeit, un jūs redzēsit JavaScript maģiju. 2725 02:12:37,850 --> 02:12:41,105 Tātad, ko es daru šeit esošajā JavaScript, manā formā, kurā bija 2726 02:12:41,105 --> 02:12:44,360 tikai tekstlodziņš un nebija pogas? 2727 02:12:44,360 --> 02:12:48,680 Šeit esošajā skripta tagā es izveidoju mainīgo, ko sauc par ievadi. 2728 02:12:48,680 --> 02:12:52,675 Un es izmantoju šo funkciju, ko sauc par vaicājumu atlasītāju, kas 2729 02:12:52,675 --> 02:12:56,670 man vienkārši parāda atsauci uz veidlapas ievades tekstlodziņu. 2730 02:12:56,670 --> 02:12:58,160 Tātad es varu redzēt, ko cilvēks ierakstīja. 2731 02:12:58,160 --> 02:13:01,025 Šodien tas ir nedaudz savādāk, taču es izmantoju 2732 02:13:01,025 --> 02:13:03,890 input.addEventListener, kas ir veids, kā JavaScript, tāpat kā 2733 02:13:03,890 --> 02:13:06,755 programmā Scratch, klausīties, vai kaut kas notiek, piemēram, tiek 2734 02:13:06,755 --> 02:13:09,620 noklikšķināts uz zaļā karoga. 2735 02:13:09,620 --> 02:13:13,370 Bet šajā gadījumā saklausīt darbību, kas ietver ievadi. 2736 02:13:13,370 --> 02:13:16,445 Tas ir tāpat kā rakstīt uz tastatūras, izmantojot kopēšanu - 2737 02:13:16,445 --> 02:13:19,520 ielīmēšanu, manuālu ievadi vai jebko citu. 2738 02:13:19,520 --> 02:13:22,370 Tad vienmēr, kad tas notiek, izsauciet šo funkciju. 2739 02:13:22,370 --> 02:13:24,170 Un async nozīmē Asinhrons. 2740 02:13:24,170 --> 02:13:27,445 Šis ir profesionāls termins, kas nozīmē, ka šīs funkcijas izpildei 2741 02:13:27,445 --> 02:13:30,720 var būt nepieciešama sekundes daļa, varbūt pat sekunde vai divas. 2742 02:13:30,720 --> 02:13:34,520 Tātad tas to darīs aizkulisēs, fonā, tā sakot. 2743 02:13:34,520 --> 02:13:36,300 Un ko tas darīs? 2744 02:13:36,300 --> 02:13:39,536 Tas izsauks JavaScript funkciju, ko tagad atbalsta visas 2745 02:13:39,536 --> 02:13:42,773 pārlūkprogrammas, un tā ir funkcija, kas izmanto HTTP, lai iegūtu 2746 02:13:42,773 --> 02:13:46,010 vairāk datu no servera. 2747 02:13:46,010 --> 02:13:49,885 Tas ienesīs datus no maršruta ar nosaukumu /search?q= un lietotāja 2748 02:13:49,885 --> 02:13:53,760 ievadīto vērtību. 2749 02:13:53,760 --> 02:13:56,500 Tāpēc es tikai manuāli izveidoju savu mini URL un saku JavaScript, 2750 02:13:56,500 --> 02:13:59,240 atnesiet man šo HTML. 2751 02:13:59,240 --> 02:14:02,315 Kad tas atgriezīsies, izmantojot šo teksta rindiņu, ko šeit sauc par 2752 02:14:02,315 --> 02:14:05,390 response.teksts, un ļaujiet man pamāt ar roku, gaidot. 2753 02:14:05,390 --> 02:14:07,820 Gaidīšana nozīmē, ka tas var neatgriezties uzreiz. 2754 02:14:07,820 --> 02:14:11,450 Gaidīsim atbildi un, kad tā tiks saņemta, izpildīsim šo kodu. 2755 02:14:11,450 --> 02:14:12,810 Es to darīšu. 2756 02:14:12,810 --> 02:14:16,420 Es meklēšu dokumentā, visā tīmekļa lapā, lai atrastu šo UL tagu, kas 2757 02:14:16,420 --> 02:14:20,030 ir kaut kur šajā lapā, ko mēs redzēsim pēc brīža. 2758 02:14:20,030 --> 02:14:23,405 Mainiet tā iekšējo HTML, lai tas būtu visu šo atbilstošo šovu li, li, 2759 02:14:23,405 --> 02:14:26,780 li fragments. 2760 02:14:26,780 --> 02:14:28,190 Un kur tas viss paliek? 2761 02:14:28,190 --> 02:14:30,595 Ja mēs ritināsim šeit, jūs pamanīsit, ka augšpusē ir mans parastais 2762 02:14:30,595 --> 02:14:33,000 HTML. 2763 02:14:33,000 --> 02:14:35,360 Head tag, body tag un tas viss. 2764 02:14:35,360 --> 02:14:38,240 Tur ir tekstlodziņš, par kuru mēs jau runājām. 2765 02:14:38,240 --> 02:14:41,810 Iesniegšanai nav pogas, jo tas viss notiek automātiski. 2766 02:14:41,810 --> 02:14:45,280 Bet pēc noklusējuma ir šis tukšais UL, kam pēc noklusējuma nav nekā, 2767 02:14:45,280 --> 02:14:48,750 līdz mēs sākam lietot šo API. 2768 02:14:48,750 --> 02:14:51,270 Un pēdējais žests šeit ir šis. 2769 02:14:51,270 --> 02:14:55,080 Tas ir neglīts, nekārtīgs veids, kā iegūt datus no servera, lai 2770 02:14:55,080 --> 02:14:58,890 vienkārši atgūtu HTML fragmentu. 2771 02:14:58,890 --> 02:15:00,570 Piemēram, ja es neizmantoju HTML? 2772 02:15:00,570 --> 02:15:03,615 Es vēlos saglabāt šīs TV pārraides PDF failā vai kādā citā tīmekļa 2773 02:15:03,615 --> 02:15:06,660 tagā, tabulā vai tamlīdzīgi. 2774 02:15:06,660 --> 02:15:09,570 Nav īsti jēgas, ja serveris pieņem, ka es vēlos, lai tagi apņem katru 2775 02:15:09,570 --> 02:15:12,480 no maniem datiem. 2776 02:15:12,480 --> 02:15:15,570 Labāk būtu atgūt vispārīgāku formātu. 2777 02:15:15,570 --> 02:15:19,440 Un šo formātu mūsdienās gandrīz vienmēr sauc par šo, mūsu pēdējo 2778 02:15:19,440 --> 02:15:23,310 saīsinājumu — JSON, JavaScript objektu notācija. 2779 02:15:23,310 --> 02:15:24,430 Un ļaujiet man izdarīt šādi. 2780 02:15:24,430 --> 02:15:28,970 Ļaujiet man aizvērt šīs divas cilnes un atvērt savu termināļa logu un 2781 02:15:28,970 --> 02:15:33,510 atcelt iepriekšējo Flask versiju, kas darbojās. 2782 02:15:33,510 --> 02:15:36,470 Ļaujiet man aizvērt šo versiju un apskatīt mūsu galīgo versiju, kas 2783 02:15:36,470 --> 02:15:39,430 tiek saukta par shows two un palaist Flask. 2784 02:15:39,430 --> 02:15:42,510 Es virzīšu kursoru virs šī URL un atvēršu to pārlūkprogrammā. 2785 02:15:42,510 --> 02:15:47,745 Un es iešu manuāli apmeklēt, pēc pietuvināšanas, ievadīsim vēlreiz 2786 02:15:47,745 --> 02:15:52,980 /search?q=office Enter. 2787 02:15:52,980 --> 02:15:55,470 Un šādi izskatās JSON. 2788 02:15:55,470 --> 02:15:58,050 No pirmā acu uzmetiena tas nešķiet kā uzlabojums. 2789 02:15:58,050 --> 02:16:00,730 Izskatās traki, ka tas ir tikai šis lielais teksta blāķis. 2790 02:16:00,730 --> 02:16:02,855 Bet te ir tikai pietiekami daudz teksta, lai dators varētu to droši 2791 02:16:02,855 --> 02:16:04,980 apstrādāt. 2792 02:16:04,980 --> 02:16:07,935 Ņemiet vērā, ka šeit ir kvadrātiekavas. 2793 02:16:07,935 --> 02:16:12,210 Un, ja es ritinātu līdz apakšai, tur lejā būtu slēgtas kvadrātiekavas. 2794 02:16:12,210 --> 02:16:15,170 Šīs kvadrātiekavas iekšpusē ir figūriekavas, pēc tam ID, kols un pēc 2795 02:16:15,170 --> 02:16:18,130 tam skaitlis. 2796 02:16:18,130 --> 02:16:21,480 Pēc tam virsraksts, citāts bez pēdiņām, kols un virsraksts. 2797 02:16:21,480 --> 02:16:23,470 Un tad slēgtās figūriekavas. 2798 02:16:23,470 --> 02:16:26,496 Tātad tas, ko redzat JavaScript objektu notācijā, ir ļoti standarta 2799 02:16:26,496 --> 02:16:29,522 īpaši populārs formāts, kas ir tikai teksts, kurā joprojām tiek 2800 02:16:29,522 --> 02:16:32,549 izmantotas kvadrātiekavas sarakstiem jeb masīviem. 2801 02:16:32,549 --> 02:16:36,459 Tajā joprojām tiek izmantotas vārdnīcas, atslēgu-vērtību pāri. 2802 02:16:36,459 --> 02:16:40,249 Tātad šeit redzamais ir milzīgs saraksts — līdz pat 50 —, manuprāt, 2803 02:16:40,249 --> 02:16:44,039 šovi, kas radušies no šīs API, un katrai no tiem ir vārdnīca, ja 2804 02:16:44,039 --> 02:16:47,830 vēlaties, atslēgu-vērtību pāru objekts. 2805 02:16:47,830 --> 02:16:49,110 Kādas atslēgas un vērtības? 2806 02:16:49,110 --> 02:16:53,590 ID atslēga un nosaukuma atslēga, katrai no kurām ir attiecīga vērtība. 2807 02:16:53,590 --> 02:16:55,940 Un tie ir tie paši IMDb dati, no kuriem dažus jūs varētu atcerēties 2808 02:16:55,940 --> 02:16:58,290 vizuāli. 2809 02:16:58,290 --> 02:17:01,110 Tas ir tikai ļoti neapstrādāts, datoram draudzīgs veids, kā atgriezt 2810 02:17:01,110 --> 02:17:03,930 veselu virkni datu, kas mums, cilvēkiem, nav jāredz. 2811 02:17:03,930 --> 02:17:08,549 Bet es varu izmantot šos datus, atgriežoties VS kodā. 2812 02:17:08,549 --> 02:17:14,190 Ļaujiet man atvērt citu termināļa logu un pāriet uz avota nine/shows2. 2813 02:17:14,190 --> 02:17:20,122 Un šeit, ļaujiet man iet uz priekšu un atklāt, kā būtu ar veidnēm 2814 02:17:20,122 --> 02:17:26,055 index.html, kas iepriekš izmantoja tikai šo iekšējo HTML triku. 2815 02:17:26,055 --> 02:17:27,763 Un tas neatstās pozitīvu iespaidu — jūs nebūsiet apmierināts ar šo 2816 02:17:27,763 --> 02:17:29,472 sintaksi. 2817 02:17:29,472 --> 02:17:32,309 Bet ļaujiet man vismaz paskaidrot, ko mēs darām. 2818 02:17:32,309 --> 02:17:35,785 Izrādās, ka JSON ir tikai labāks veids kopumā, vispārīgāks, 2819 02:17:35,785 --> 02:17:39,261 daudzfunkcionālāks, no lietotāja neatkarīgs un valodas neatkarīgs 2820 02:17:39,261 --> 02:17:42,738 veids, kā atgriezt datus no servera, jo tas ir tikai teksts. 2821 02:17:42,738 --> 02:17:45,249 Tāpēc nav svarīgi, vai izmantojat Python, C, C++, JavaScript, vai 2822 02:17:45,249 --> 02:17:47,760 Ruby, vai PHP, vai ko citu. 2823 02:17:47,760 --> 02:17:51,490 Visas šīs valodas var apstrādāt JSON informāciju. 2824 02:17:51,490 --> 02:17:54,270 Un patiešām šeit ir daži JavaScript, kas tieši to dara. 2825 02:17:54,270 --> 02:17:56,250 Tas pats kods ir sākotnēji. 2826 02:17:56,250 --> 02:17:58,229 Es deklarēju mainīgo, ko sauc par ievadi, kas dod man piekļuvi 2827 02:17:58,229 --> 02:18:00,209 lietotāja tekstlodziņam. 2828 02:18:00,209 --> 02:18:04,150 Es klausos ievadi, piemēram, taustiņu nospiešanu uz augšu un uz leju. 2829 02:18:04,150 --> 02:18:07,770 Un, kad tas notiek, es izsaucu šo anonīmo funkciju. 2830 02:18:07,770 --> 02:18:09,570 Es ienesu datus no servera, izmantojot tieši tādu pašu kodu kā 2831 02:18:09,570 --> 02:18:11,370 iepriekš. 2832 02:18:11,370 --> 02:18:15,639 Search?q=office vai jebko citu. 2833 02:18:15,639 --> 02:18:19,616 Un tad tas ir tikai tagad jauns kods, ko es izmantoju, lai pārveidotu 2834 02:18:19,616 --> 02:18:23,593 šos JSON datus savā HTML formātā, neatkarīgi no tā, vai tas ir 2835 02:18:23,593 --> 02:18:27,570 nesakārtots saraksts vai sakārtots saraksts, tabula vai jebkas cits. 2836 02:18:27,570 --> 02:18:28,719 Ko es daru? 2837 02:18:28,719 --> 02:18:31,200 Man ir mainīgais ar nosaukumu HTML inicializēts ar neko. 2838 02:18:31,200 --> 02:18:33,420 Tāpēc sākotnēji man nav HTML. 2839 02:18:33,420 --> 02:18:37,209 Pēc tam es atkārtoju katru ID šajos šovos. 2840 02:18:37,209 --> 02:18:39,259 Tāpēc es integrēju katru no IMDb unikālajiem identifikatoriem pa 2841 02:18:39,259 --> 02:18:41,309 vienam. 2842 02:18:41,309 --> 02:18:47,070 Un tad es ieeju šovā tā ID atrašanās vietā un paņemu tā nosaukumu. 2843 02:18:47,070 --> 02:18:52,840 Un tas ir-- aizmirstiet to uz mirkli. 2844 02:18:52,840 --> 02:18:58,055 Pēc tam es ņemu šo HTML mainīgo, savienoju vai pievienoju tam savu li 2845 02:18:58,055 --> 02:19:03,270 tagu, kā arī virsrakstu un aizvērto li tagu. 2846 02:19:03,270 --> 02:19:06,279 Un es to izlaižu, jo tas kļuva biedējoši diezgan ātri, taču izrādās, 2847 02:19:06,279 --> 02:19:09,289 ka, ja dažos TV šovos tiešām ir leņķiekavas, tas var pilnībā sabojāt 2848 02:19:09,289 --> 02:19:12,299 manu HTML. 2849 02:19:12,299 --> 02:19:15,785 Tātad izrādās, ka jūs varētu ļoti īsi atcerēties, ka pagājušajā 2850 02:19:15,785 --> 02:19:19,271 nedēļā mums bija autortiesību simbols, izmantojot HTML elementu, 2851 02:19:19,271 --> 02:19:22,757 izmantojot &; un numura zīmi un 169 semikolu-- izrādās, ka ir arī 2852 02:19:22,757 --> 02:19:26,243 citas šādas noslēpumainas rakstzīmju secības, kas attēlo citādi 2853 02:19:26,243 --> 02:19:29,730 bīstamas vai nedrukājamas rakstzīmes. 2854 02:19:29,730 --> 02:19:32,943 Līdzīgi kā šis, kas var maldināt datoru, domājot, ka tas atrodas 2855 02:19:32,943 --> 02:19:36,156 atzīmes sākumā, un simbolu &, kas līdzīgi var likt datoram domāt, ka 2856 02:19:36,156 --> 02:19:39,370 tas ir elements, kas tas nav. 2857 02:19:39,370 --> 02:19:41,480 Bet īsi sakot, par laimi, ir bibliotēkas, kas lielāko daļu no tā dara 2858 02:19:41,480 --> 02:19:43,590 jūsu vietā. 2859 02:19:43,590 --> 02:19:47,271 Mūsu vajadzībām, tagad, kad jūs saprotat mazliet HTTP, tagad, kad jūs 2860 02:19:47,271 --> 02:19:50,953 saprotat mazliet HTML, CSS un JavaScript, kuriem visiem ir savas 2861 02:19:50,953 --> 02:19:54,635 lomas, varat tos izmantot, lai sāktu veidot savas tīmekļa 2862 02:19:54,635 --> 02:19:58,316 lietojumprogrammas, tāpat kā 9. problēmu kopas gadījumā, savienojot 2863 02:19:58,316 --> 02:20:01,998 visas šīs valodas un veidojot pilnvērtīgas tīmekļa 2864 02:20:01,998 --> 02:20:05,680 lietojumprogrammas, mobilās lietojumprogrammas vai jebko citu. 2865 02:20:05,680 --> 02:20:08,430 Un tam, manuprāt, mēs esam gatavi. 2866 02:20:08,430 --> 02:20:11,950 Un pirmajā šeit augšā var būt arī šie sīkfaili. 2867 02:20:11,950 --> 02:20:14,280 Tiksimies nākamreiz mūsu pēdējā CS50 lekcijā. 2868 02:20:14,280 --> 02:20:16,730 [SKAN MŪZIKA]