1 00:00:00,000 --> 00:00:03,032 DAGS LOIDS: Citā videoklipā mēs jūs iepazīstinājām ar Python un tā 2 00:00:03,032 --> 00:00:06,064 sintaksi, kā arī runājām par to, kā to var izmantot komandrindā, lai 3 00:00:06,064 --> 00:00:09,097 rakstītu programmas, kuras palaist no sava termināļa. 4 00:00:09,097 --> 00:00:10,930 Python ir daudz vairāk nekā tikai tas. 5 00:00:10,930 --> 00:00:14,650 Mēs to varam izmantot arī tīmekļa lietojumprogrammu rakstīšanai. 6 00:00:14,650 --> 00:00:17,640 Ļoti bieži tiek lietotas tīmekļvietņu aizmugures, kas ir rakstītas 7 00:00:17,640 --> 00:00:20,630 Python, jo Python satur daudz vairāk vietējo funkcionalitāti, lai 8 00:00:20,630 --> 00:00:23,620 atbalstītu tādas lietas kā tīklu izveidi, ligzdas savienojumu 9 00:00:23,620 --> 00:00:26,610 atvēršanu, savienojumu uzturēšanu starp divām dažādām vietām 10 00:00:26,610 --> 00:00:29,600 internetā. 11 00:00:29,600 --> 00:00:32,880 Un arī C valodā var veikt šīs lietas, bet C valodā tas ir patiešām 12 00:00:32,880 --> 00:00:36,160 ļoti grūti un patiešām daudz koda. 13 00:00:36,160 --> 00:00:40,105 Ar Python, tā kā tā ir modernāka valoda, kas abstrahē dažas no šīm 14 00:00:40,105 --> 00:00:44,050 garlaicīgajām, nogurdinošajām C valodas detaļām, tādējādi kļūst daudz 15 00:00:44,050 --> 00:00:47,995 vienkāršāk un daudz vieglāk rakstīt sarežģītākas tīmekļa lietotnes ar 16 00:00:47,995 --> 00:00:51,940 Python, nevis izmantot C valodu. 17 00:00:51,940 --> 00:00:55,075 Turklāt ir daudz tādu, ko sauc par tīmekļa satvariem, kas to padara 18 00:00:55,075 --> 00:00:58,210 vēl vienkāršāku, jo tie ņem dažas no Python lietām, kas mums būtu 19 00:00:58,210 --> 00:01:01,346 jādara, un abstrahē tās. 20 00:01:01,346 --> 00:01:04,364 Tātad būtībā jūs varat iedomāties tīmekļa satvaru, piemēram, 21 00:01:04,364 --> 00:01:07,383 bibliotēku, kas ir rakstīta ar Python un kas ir specializējusies, lai 22 00:01:07,383 --> 00:01:10,401 izmantotu un veiktu dažas Python darbības jūsu vietā, kas jums 23 00:01:10,401 --> 00:01:13,420 pretējā gadījumā būtu jādara pašam. 24 00:01:13,420 --> 00:01:16,420 Tīmekļa servera izveidei valodā Python nav tik daudz koda rindiņu, 25 00:01:16,420 --> 00:01:19,420 lai to izdarītu tikai neapstrādātā Python. 26 00:01:19,420 --> 00:01:20,590 Bet tas ir nedaudz garlaicīgi. 27 00:01:20,590 --> 00:01:25,420 Ne tuvu tik garlaicīgs kā C valodā. 28 00:01:20,590 --> 00:01:25,420 Bet izmantojot kādu no šiem dažādajiem tīmekļa satvariem. 29 00:01:25,420 --> 00:01:28,420 Piemēram, Django, Pyramid vai tas, ko mēs izmantojam CS50, kas ir 30 00:01:28,420 --> 00:01:31,420 Flask, padara to daudz vienkāršāku. 31 00:01:31,420 --> 00:01:33,730 Tagad tie satvari visi ir lieliski. 32 00:01:33,730 --> 00:01:38,042 Mēs runājam par Flask iekš CS50 īpaši tāpēc, ka tas ir ļoti viegls un 33 00:01:38,042 --> 00:01:42,355 joprojām ir diezgan bagāts ar funkcijām, kas nozīmē, ka tas labi 34 00:01:42,355 --> 00:01:46,667 darbosies CS50 IDE, kur izmantojat mākoņa infrastruktūru, kā arī jūsu 35 00:01:46,667 --> 00:01:50,980 rīcībā esošās vietas un atmiņas apjomu ierobežo dizains. 36 00:01:50,980 --> 00:01:55,940 Ļoti svarīgi bija izmantot pēc iespējas vieglāku tīmekļa satvaru. 37 00:01:55,940 --> 00:01:58,635 Tātad mēs jau iepriekš esam runājuši par HTML un zinām, ka mēs varam 38 00:01:58,635 --> 00:02:01,330 izmantot HTML, lai izveidotu tīmekļvietnes. 39 00:02:01,330 --> 00:02:04,345 Taču ir viens būtisks ierobežojums, no kā cieš HTML tīmekļvietnes, un 40 00:02:04,345 --> 00:02:07,360 tas ir, ka tās ir statiskas. 41 00:02:07,360 --> 00:02:10,610 Tātad iedomājieties, ka mēs vēlamies izveidot tīmekļvietni, piemēram, 42 00:02:10,610 --> 00:02:13,860 kas parāda pašreizējo laiku, tikai laiku Kembridžā, Masas štatā, 43 00:02:13,860 --> 00:02:17,110 parādot to līdz pēdējai minūtei, teiksim. 44 00:02:17,110 --> 00:02:20,270 Šis ir HTML, kas varētu darīt tieši to. 45 00:02:20,270 --> 00:02:23,500 Tātad pašreizējais laiks Kembridžā ir 14:08. 46 00:02:23,500 --> 00:02:25,330 Tātad 2:08 PM. 47 00:02:25,330 --> 00:02:28,850 Tas ir lieliski uz mirkli. 48 00:02:28,850 --> 00:02:32,570 Bet 2:09 tas vairs nav precīzs. 49 00:02:32,570 --> 00:02:36,576 Tātad, ja esat tīmekļa pārzinis un jums ir lapa, kas ir pilnībā 50 00:02:36,576 --> 00:02:40,582 rakstīta HTML, un jūsu uzdevums ir izveidot precīzu tīmekļvietni, kas 51 00:02:40,582 --> 00:02:44,588 atspoguļo pašreizējo laiku Kembridžā, katru minūti jums ir jāiziet 52 00:02:44,588 --> 00:02:48,594 cauri un jāatjaunina šī lapa, lai tā vienmēr būtu konsekventa un lai 53 00:02:48,594 --> 00:02:52,600 ikreiz, kad lietotājs apmeklē vietni, viņš uzzinātu precīzu laiku. 54 00:02:52,600 --> 00:02:54,410 Tas ir šausmīgi. 55 00:02:54,410 --> 00:02:55,660 Jūs to negribētu darīt. 56 00:02:55,660 --> 00:02:57,510 Un, ja jūs patiešām būtu tīmekļa pārzinis, un tas būtu jūsu darbs, 57 00:02:57,510 --> 00:02:59,360 jūs, iespējams, neizturētu pārāk ilgi, jo jūs burtiski vienkārši 58 00:02:59,360 --> 00:03:01,210 mainītu lietas. 59 00:03:01,210 --> 00:03:04,225 Un iedomājieties, ja mēs dotos uz tuvāko sekundi vai tuvāko 60 00:03:04,225 --> 00:03:07,240 milisekundi, jūs faktiski pat nevarētu to izdarīt. 61 00:03:07,240 --> 00:03:09,895 Vienīgais veids, kā atjaunināt mūsu avotu iekš HTML, ir burtiski 62 00:03:09,895 --> 00:03:12,550 ieiet un rediģēt mūsu HTML. 63 00:03:12,550 --> 00:03:15,866 Tomēr, ja mēs savā kodā iekļaujam Python, mēs varam būt daudz 64 00:03:15,866 --> 00:03:19,183 elastīgāki un varam ļaut mūsu lapām kļūt dinamiskām, neprasot cilvēka 65 00:03:19,183 --> 00:03:22,500 iejaukšanos. 66 00:03:22,500 --> 00:03:27,680 Un galu galā mūsu mērķis šeit ir automatizēt šos procesus, lai mums 67 00:03:27,680 --> 00:03:32,860 nebūtu par tiem jādomā katru dienu, iegrimstot šajās detaļās. 68 00:03:32,860 --> 00:03:35,200 Tāpēc mēs to darīsim tieši ar Flask. 69 00:03:35,200 --> 00:03:38,687 Un šeit ir piemērs tīmekļa lietojumprogrammai ar Flask, kas parādītu 70 00:03:38,687 --> 00:03:42,175 pašreizējo laiku ne tikai Kembridžā, bet arī pašreizējo datumu, 71 00:03:42,175 --> 00:03:45,662 nedēļas dienu, gadu un parādītu šo laiku ar tuvāko sekundes 72 00:03:45,662 --> 00:03:49,150 desmittūkstošdaļu. 73 00:03:49,150 --> 00:03:51,862 Tikai dažas koda rindiņas no Flask. 74 00:03:51,862 --> 00:03:54,070 Import Flask, mēs par to runāsim tikai pēc mirkļa. 75 00:03:54,070 --> 00:03:58,350 Šeit es tikai importēju pāris moduļus, kas ir pieejami arī Python. 76 00:03:58,350 --> 00:04:00,550 Tātad Flask ir viens Python pieejams modulis. 77 00:04:00,550 --> 00:04:04,970 Šeit es importēju datetime moduli un tieši no tā izvelku vienu 78 00:04:04,970 --> 00:04:09,390 funkciju, ko sauc arī par datetime. 79 00:04:09,390 --> 00:04:12,605 Un no pytz vai py timezone moduļa es izvelku vienu funkciju, ko sauc 80 00:04:12,605 --> 00:04:15,820 par laika joslu. 81 00:04:15,820 --> 00:04:18,670 Pēc tam es uzsāku savu Flask izmantošanu. 82 00:04:18,670 --> 00:04:22,478 Un tad es pamatā izmantoju datetime un timezone funkcijas no diviem 83 00:04:22,478 --> 00:04:26,286 importētajiem moduļiem, lai noskaidrotu, kāds ir pašreizējais laiks 84 00:04:26,286 --> 00:04:30,094 laika joslā Amerika/Ņujorka. 85 00:04:30,094 --> 00:04:33,082 Ņujorka atrodas tajā pašā laika joslā kā Kembridža, un tas ir 86 00:04:33,082 --> 00:04:36,070 standarta laika joslas nosaukums. 87 00:04:36,070 --> 00:04:38,110 Tāpēc es tikai izmantošu to. 88 00:04:38,110 --> 00:04:41,165 Tātad es precīzi noskaidroju, kāds ir pašreizējais datums un laiks, 89 00:04:41,165 --> 00:04:44,220 un piešķiru to Python mainīgajam, ko sauc par now. 90 00:04:44,220 --> 00:04:49,170 Un tad es atgriežu kādu virkni, kurā pievienoju to, kas now ir. 91 00:04:49,170 --> 00:04:51,750 Un acīmredzot es to daru ar app.route/. 92 00:04:51,750 --> 00:04:53,400 Mēs par to visu runāsim pēc sekundes. 93 00:04:53,400 --> 00:04:57,435 Bet būtībā es to rakstīju Python tīmekļa lapā, konkrēti, ko sauc par 94 00:04:57,435 --> 00:05:01,470 application.py. 95 00:05:01,470 --> 00:05:04,251 Un tad es palaidu šo lietojumprogrammu un apmeklēju lapu, kas tika 96 00:05:04,251 --> 00:05:07,032 ģenerēta no tās, un tā man pateiks pašreizējo datumu un laiku ar 97 00:05:07,032 --> 00:05:09,814 precizitāti līdz tuvākajai sekundes desmit tūkstošdaļai. 98 00:05:09,814 --> 00:05:11,730 Ja es pārlādētu, tas to atjauninātu katru reizi. 99 00:05:11,730 --> 00:05:13,710 Tas nebūtu statisks, tas kļūtu dinamisks, un man vairs nebūtu 100 00:05:13,710 --> 00:05:15,690 jāiejaucas. 101 00:05:15,690 --> 00:05:18,840 Tas darbotos tik ilgi, kamēr darbotos mans dators, kamēr darbotos 102 00:05:18,840 --> 00:05:21,990 tīmekļa serveris, lai norādītu pašreizējo datumu un laiku. 103 00:05:21,990 --> 00:05:26,570 Un es kā tīmekļa pārzinis varu koncentrēties uz daudz pilnvērtīgākām 104 00:05:26,570 --> 00:05:31,150 un jautrākām lietām nekā HTML avota atjaunināšana ik pēc 60 sekundēm. 105 00:05:31,150 --> 00:05:34,520 Tātad CS50 IDE ir ļoti viegli, sākot lietot Flask. 106 00:05:34,520 --> 00:05:36,762 Vispirms mēs atveram Python failu, un mēs to sauksim par 107 00:05:36,762 --> 00:05:39,004 application.py. 108 00:05:39,004 --> 00:05:41,822 Bet jūs varat to saukt, kā vien vēlaties, taču visos šajos piemēros 109 00:05:41,822 --> 00:05:44,640 mēs to apzīmēsim kā application.py. 110 00:05:44,640 --> 00:05:47,760 Pati pirmā application.py rindiņa būs šāda. 111 00:05:47,760 --> 00:05:50,580 From Flask, import lielais F, Flask. 112 00:05:50,580 --> 00:05:54,060 Tātad flask ar mazo burtu f ir moduļa nosaukums. 113 00:05:54,060 --> 00:05:58,084 Lielais F Flask būs funkcijas nosaukums šajā modulī. 114 00:05:58,084 --> 00:05:59,750 Jo īpaši tā būs klase. 115 00:05:59,750 --> 00:06:02,725 Parasti no mūsu video par Python sintaksi varat atcerēties, ka klases 116 00:06:02,725 --> 00:06:05,700 norādām ar lielo burtu. 117 00:06:05,700 --> 00:06:09,420 Tas ir tas, ko mēs šeit darām, mēs importējam Flask klasi. 118 00:06:09,420 --> 00:06:12,780 Kad tas ir importēts, mums ir jāinicializē lietojumprogramma Flask. 119 00:06:12,780 --> 00:06:16,150 Jūs to redzējāt arī iepriekšējā koda piemērā. 120 00:06:16,150 --> 00:06:18,203 App ir vienāds ar flask atvērējiekavas pasvītra pasvītra name 121 00:06:18,203 --> 00:06:20,257 pasvītra pasvītra. 122 00:06:20,257 --> 00:06:24,340 Pasvītra pasvītra name pasvītra pasvītra ir tikai faila nosaukums. 123 00:06:24,340 --> 00:06:27,395 Tātad būtībā tā ir flask lietojumprogrammas izveide, pamatojoties uz 124 00:06:27,395 --> 00:06:30,450 jebkuru failu, kurā parādās šī koda rindiņa. 125 00:06:30,450 --> 00:06:33,060 Kas, atkal, vienmēr būs gavenokārt application.py. 126 00:06:33,060 --> 00:06:36,445 Tātad būtībā tā ir lietojumprogrammas izveide, lietojumprogramma 127 00:06:36,445 --> 00:06:39,830 Flask no faila application.py. 128 00:06:39,830 --> 00:06:42,480 Pēc tam mums vienkārši ir jāraksta funkcijas, kas mums ir pazīstamas 129 00:06:42,480 --> 00:06:45,130 iekš Python, lai noteiktu mūsu lietojumprogrammas darbību, veicot 130 00:06:45,130 --> 00:06:47,780 dažādas darbības. 131 00:06:47,780 --> 00:06:51,310 Piemēram, šeit ir divas funkcijas, kuras es varētu rakstīt. 132 00:06:51,310 --> 00:06:54,020 Un jūs ievērosiet, ka tas nav nekas jauns. 133 00:06:54,020 --> 00:06:55,450 Tā ir tikai rakstīšana ar Python. 134 00:06:55,450 --> 00:06:57,910 Mēs šeit nerakstām neko īpašu. 135 00:06:57,910 --> 00:07:00,475 Es definēju funkciju, ko sauc par index, kuras vienīgais mērķis ir 136 00:07:00,475 --> 00:07:03,040 atgriezt jūs rādītāja lapā. 137 00:07:03,040 --> 00:07:06,310 Un es definēju vēl vienu funkciju, ko sauc par sample, kuras 138 00:07:06,310 --> 00:07:09,580 vienīgais mērķis ir atgriezt virkni, kas atrodama parauga lapā. 139 00:07:09,580 --> 00:07:13,375 Kā šīs funkcijas saistīt ar savu vietni? 140 00:07:13,375 --> 00:07:15,520 Nu, ko es varu darīt, ir kaut kas līdzīgs šim. 141 00:07:15,520 --> 00:07:17,450 To sauc par dekoratora pielietošanu, un es par to pastāstīšu tikai 142 00:07:17,450 --> 00:07:19,380 pēc mirkļa. 143 00:07:19,380 --> 00:07:21,972 Bet būtībā tas nozīmē to, ka ja es atveru savu tīmekļa 144 00:07:21,972 --> 00:07:24,564 lietojumprogrammas sākumlapu, ko jūs, iespējams, atceraties no mūsu 145 00:07:24,564 --> 00:07:27,157 video par HTTP, ir tikai slīpsvītra. 146 00:07:27,157 --> 00:07:29,668 Tātad, ja es neko citu neierakstu, tas pēc noklusējuma būs index.HTML 147 00:07:29,668 --> 00:07:32,180 vai nekas. 148 00:07:32,180 --> 00:07:34,720 Tas man parādīs, ka atrodaties rādītāja lapā. 149 00:07:34,720 --> 00:07:37,470 Tomēr, ja es dodos uz jebkuru savu tīmekļa lietojumprogrammas adresi, 150 00:07:37,470 --> 00:07:40,220 slīpsvītra sample, man netiks rādīta rādītāja lapa, bet gan parauga 151 00:07:40,220 --> 00:07:42,970 lapa. 152 00:07:42,970 --> 00:07:47,005 Tātad būtībā tas, ko es šeit daru, ir es definēju uzvedību, ko vēlos 153 00:07:47,005 --> 00:07:51,040 parādīt dažādās manas flask lietojumprogrammas lapās. 154 00:07:51,040 --> 00:07:53,130 Tātad atkal tos sauc par dekoratoriem. 155 00:07:53,130 --> 00:07:57,312 Un Flask kontekstā mēs būtībā tikai saistām noteiktu funkciju ar 156 00:07:57,312 --> 00:08:01,495 izpildi, kad apmeklējat noteiktu URL. 157 00:08:01,495 --> 00:08:03,497 Dekoratori patiesībā nav kaut kas tāds, kas Flask ir vietējs, bet 158 00:08:03,497 --> 00:08:05,500 vispārēji gan tie ir vietēji Python . 159 00:08:05,500 --> 00:08:08,080 Bet tas pārsniedz to, ko mēs aplūkojam klasē. 160 00:08:08,080 --> 00:08:11,050 Bet parasti tos izmanto, lai mainītu funkcijas uzvedību vai saistītu 161 00:08:11,050 --> 00:08:14,020 funkciju ar kaut ko. 162 00:08:14,020 --> 00:08:16,725 Bet iekš Flask mēs to izmantosim īpaši, lai saistītu funkcijas ar 163 00:08:16,725 --> 00:08:19,430 noteiktu domēnu apmeklēšanu. 164 00:08:19,430 --> 00:08:21,700 Labi? 165 00:08:21,700 --> 00:08:23,860 Mums arī tad ir nepieciešams-- Tātad tagad esam uzrakstījuši kodu, 166 00:08:23,860 --> 00:08:26,020 index un sample funkcijas. 167 00:08:26,020 --> 00:08:29,470 Tagad mēs vēlamies palaist mūsu lietojumprogrammu Flask. 168 00:08:29,470 --> 00:08:31,840 Mēs to darām trīs soļos, no kuriem pirmie divi jums ir jāpalaiž tikai 169 00:08:31,840 --> 00:08:34,210 vienu reizi. 170 00:08:34,210 --> 00:08:36,700 Pirmā lieta, kas jums jādara, ir eksportēt lietotni Flask. 171 00:08:36,700 --> 00:08:40,960 Lietotne Flask ir sistēmas mainīgais, un tas tiks īpaši saglabāts 172 00:08:40,960 --> 00:08:45,220 jūsu IDE atmiņā, lai, ja kādreiz atkal palaižat lietojumprogrammu, tā 173 00:08:45,220 --> 00:08:49,480 precīzi zinātu, kuru lietojumprogrammu palaist. 174 00:08:49,480 --> 00:08:52,270 Tātad mēs būtībā tikai saglabājam kaut kur atmiņā mūsu Flask 175 00:08:52,270 --> 00:08:55,060 lietojumprogrammas atrašanās vietu. 176 00:08:55,060 --> 00:08:57,610 Tas tiek saglabāts sistēmas mainīgajā. 177 00:08:57,610 --> 00:08:59,505 Tātad export flask app vienāds ar application.py, jo tas ir mūsu 178 00:08:59,505 --> 00:09:01,400 faila nosaukums. 179 00:09:01,400 --> 00:09:03,540 Otrā rinda tehniski nav obligāta, taču tā ir ieteicama, jo īpaši, 180 00:09:03,540 --> 00:09:05,680 sākot darbu. 181 00:09:05,680 --> 00:09:07,580 Export flask debug vienāds ar 1. 182 00:09:07,580 --> 00:09:09,360 1 šeit tikai būtībā nozīmē patiess. 183 00:09:09,360 --> 00:09:12,308 Tātad būtībā jūs to palaidīsiet tā, lai, palaižot flask 184 00:09:12,308 --> 00:09:15,256 lietojumprogrammu savā IDE, jūs redzētu visas darbības, ko tā dara 185 00:09:15,256 --> 00:09:18,205 atkļūdošanas režīmā. 186 00:09:18,205 --> 00:09:19,922 Tātad, ja kaut kas noiet greizi, tas tiks izdrukāts jūsu terminālī, 187 00:09:19,922 --> 00:09:21,640 un jūs to redzēsit. 188 00:09:21,640 --> 00:09:24,400 Nav tā, ka jūsu vietne vienkārši avarēs un jūs nezināsiet, kas notika. 189 00:09:24,400 --> 00:09:27,640 Un pēc šo divu koda rindu izpildes atkal mūsu IDE, tikai izpildot šīs 190 00:09:27,640 --> 00:09:30,880 divas komandas, drīzāk mūsu IDE, flask run. 191 00:09:30,880 --> 00:09:34,330 Un pēc tam tas, kas notiks tieši jūsu IDE, ir paies aptuveni sekunde, 192 00:09:34,330 --> 00:09:37,780 un pēc tam tiks parādīts URL, uz kura varat noklikšķināt un apmeklēt, 193 00:09:37,780 --> 00:09:41,230 kas būs jūsu lietojumprogrammas sākumlapa. 194 00:09:41,230 --> 00:09:43,576 Atkal, pēc pirmās konfigurācijas ar konkrēto lietojumprogrammu, kuru 195 00:09:43,576 --> 00:09:45,923 vēlaties palaist, varat atstāt šīs divas zilās līnijas, jo tās vairs 196 00:09:45,923 --> 00:09:48,270 nebūs vajadzīgas. 197 00:09:48,270 --> 00:09:50,543 Varat vienkārši turpināt rakstīt flask run, un tā turpinās palaist to 198 00:09:50,543 --> 00:09:52,816 pašu lietojumprogrammu atkal un atkal, līdz vairs nevēlaties to 199 00:09:52,816 --> 00:09:55,090 palaist. 200 00:09:55,090 --> 00:09:57,810 Un tad jūs eksportētu citu lietojumprogrammu, eksportētu citu 201 00:09:57,810 --> 00:10:00,530 atkļūdošanas režīmu un tā tālāk. 202 00:10:00,530 --> 00:10:04,596 Tātad ne tikai koda palaišana, kā mēs to darījām iepriekš, tikai tā 203 00:10:04,596 --> 00:10:08,663 izdrukāšana, jūs atrodaties rādītājā un esat pie parauga lapas, mēs 204 00:10:08,663 --> 00:10:12,730 varam arī nodot datus mūsu Flask lietojumprogrammām. 205 00:10:12,730 --> 00:10:14,903 Mēs to varam izdarīt, izmantojot HTTP get, jūs atceraties, nosūtot 206 00:10:14,903 --> 00:10:17,077 datus, izmantojot URL. 207 00:10:17,077 --> 00:10:19,910 Tātad es varētu uzrakstīt funkciju, kas izskatās kaut kas līdzīgs šim. 208 00:10:19,910 --> 00:10:23,006 Tā ir funkcija, ko sauc par show, un tā vietā, lai neizmantotu tādus 209 00:10:23,006 --> 00:10:26,103 parametrus kā index un sample, es pieņemu šeit esošo parametru, ko 210 00:10:26,103 --> 00:10:29,200 sauc par number. 211 00:10:29,200 --> 00:10:32,965 Un es atgriežu jūs nodevāt, un tad es acīmredzot interpolēšu vai 212 00:10:32,965 --> 00:10:36,730 ievietošu kādu skaitli. 213 00:10:36,730 --> 00:10:38,240 No kurienes tāds skaitlis? 214 00:10:38,240 --> 00:10:39,700 Nu, paskaties uz manu dekoratoru šeit. 215 00:10:39,700 --> 00:10:43,600 @app.route slīpsvītra show slīpsvītra. 216 00:10:43,600 --> 00:10:46,525 Un šīs leņķiekavas patiesībā ir svarīgas, mums patiesībā tās ir 217 00:10:46,525 --> 00:10:49,450 jāatstāj, number. 218 00:10:49,450 --> 00:10:53,200 Ja es apmeklētu savu lietojumprogrammu, slīpsvītra show 219 00:10:53,200 --> 00:10:56,950 slīpsvītra 10, lapā tiktu parādīts, ka esat nodevis 10. 220 00:10:56,950 --> 00:11:00,730 Ja es ietu uz slīpsvītra show slīpsvītra 50 , jūs nodevāt 50. 221 00:11:00,730 --> 00:11:04,940 Tādējādi tas ļauj man apkopot informāciju, izmantojot HTTP get, 222 00:11:04,940 --> 00:11:09,150 liekot lietotājam to piegādāt, izmantojot URL. 223 00:11:09,150 --> 00:11:12,345 Mēs varam arī nodot datus, izmantojot HTML formas, kuras tiek 224 00:11:12,345 --> 00:11:15,540 pārsūtītas nevis ar get, bet gan ar kaut ko, ko sauc par post. 225 00:11:15,540 --> 00:11:18,582 Tagad pēc noklusējuma Flask ir konfigurēts, lai pieņemtu tikai HTTP 226 00:11:18,582 --> 00:11:21,624 get pieprasījumus vai informāciju, izmantojot  URL, tāpēc mums ir 227 00:11:21,624 --> 00:11:24,666 jāmaina dažas lietas, lai nodrošinātu, ka Flask atbildēs arī uz 228 00:11:24,666 --> 00:11:27,708 HTTP post pieprasījumiem, piemēram, kad dati tiek iesniegti, 229 00:11:27,708 --> 00:11:30,750 izmantojot formu. 230 00:11:30,750 --> 00:11:33,850 Tātad, ja nonāksit pie 7. problēmu kopas iekš CS50, kas ir CS50 231 00:11:33,850 --> 00:11:36,950 finanses, jūs redzēsit, ka mūsu sadales kodā ir kaut kas, kas 232 00:11:36,950 --> 00:11:40,050 izskatās nedaudz līdzīgs šim. 233 00:11:40,050 --> 00:11:41,920 Tātad tas ir no kurienes tas nāk, ja vēlaties to apskatīt. 234 00:11:41,920 --> 00:11:44,540 Esmu izņēmis dažas lietas, lai šeit ievietotu šīs četras koda 235 00:11:44,540 --> 00:11:47,160 rindiņas slaidā. 236 00:11:47,160 --> 00:11:52,175 Bet šī ir daļa no mūsu sniegtā sample koda , kas pārbauda, vai 237 00:11:52,175 --> 00:11:57,190 lietotājs ir norādījis lietotājvārdu noteiktā laukā. 238 00:11:57,190 --> 00:12:00,420 Tāpēc ievērojiet, ka papildus manā dekoratorā tam, ka tiek norādīts, 239 00:12:00,420 --> 00:12:03,650 kur šī funkcija ir jāsaista, tātad šajā gadījumā ar slīpsvītru login, 240 00:12:03,650 --> 00:12:06,880 es saku ne tikai to, bet jums ir jāpieņem dati, izmantojot get metodi 241 00:12:06,880 --> 00:12:10,110 vai post metodi. 242 00:12:10,110 --> 00:12:12,200 Tātad šādi es to skaidri izsaucu. 243 00:12:12,200 --> 00:12:14,190 Pēc tam es definēju savu login funkciju. 244 00:12:14,190 --> 00:12:20,730 Un es saku, if not request.form.get username. 245 00:12:20,730 --> 00:12:25,860 Diemžēl get izmantošana šeit ir Python blakusparādība. 246 00:12:25,860 --> 00:12:28,590 Tas nenozīmē, ka mēs šeit izmantojam get metodi. 247 00:12:28,590 --> 00:12:31,045 Būtībā tas, ko es lūdzu, ir ej un izgūsti, burtiski izmantojot get 248 00:12:31,045 --> 00:12:33,500 šajā kontekstā. 249 00:12:33,500 --> 00:12:38,670 Ej un izgūsti no formas lauku ar nosaukumu username. 250 00:12:38,670 --> 00:12:42,107 Un šeit es saku, ja tas neeksistē, atvainojieties lietotājam. 251 00:12:42,107 --> 00:12:43,440 Saki, ka viņiem ir jānodrošina lietotājvārds. 252 00:12:43,440 --> 00:12:47,828 Tātad būtībā tiek uzdots jautājums, vai lietotājvārda lauks jebkurā 253 00:12:47,828 --> 00:12:52,217 formā, ko lietotājs iesniedza, lai šeit nokļūtu, vai tas ir tukšs? 254 00:12:52,217 --> 00:12:53,758 Ja tas ir, mums ir jāatvainojas lietotājam un jālūdz viņam kaut ko 255 00:12:53,758 --> 00:12:55,300 atgriezt. 256 00:12:55,300 --> 00:12:59,305 Ja nē, tālāk apskatīsim vēl dažas koda rindiņas, un jūs redzēsit šīs 257 00:12:59,305 --> 00:13:03,310 koda rindiņas PSet 7 sadaleskodā, ja vēlaties to apskatīt. 258 00:13:03,310 --> 00:13:05,950 Tagad mēs varam arī mainīt funkcijas darbību atkarībā no saņemtā HTTP 259 00:13:05,950 --> 00:13:08,590 pieprasījuma veida. 260 00:13:08,590 --> 00:13:10,825 Mēs varam darīt vienu lietu, ja mums ir get pieprasījums, un mēs 261 00:13:10,825 --> 00:13:13,060 varam darīt vienu lietu, ja mēs saņemam post pieprasījumu. 262 00:13:13,060 --> 00:13:15,207 Piemēram, ja mēs saņemam get pieprasījumu, mēs varētu viņiem parādīt 263 00:13:15,207 --> 00:13:17,354 formu. 264 00:13:17,354 --> 00:13:20,142 Bet, ja mēs saņēmām post pieprasījumu, mēs sagaidām, ka viņi ir 265 00:13:20,142 --> 00:13:22,930 snieguši dažus datus, izmantojot formas. 266 00:13:22,930 --> 00:13:25,138 Mēs varam izmantot vienu URL, lai veiktu divas dažādas darbības 267 00:13:25,138 --> 00:13:27,347 atkarībā no tā, kā dati nonāca pie mums. 268 00:13:27,347 --> 00:13:29,548 Un tas ir tas, ko mēs darām, proti, daļu koda es izņēmu iepriekšējā 269 00:13:29,548 --> 00:13:31,750 lapā. 270 00:13:31,750 --> 00:13:36,340 Bet šis kods parādās arī PSet 7 login funkcijā. 271 00:13:36,340 --> 00:13:39,025 Ja pieprasījuma metode bija post, tad es pārbaudīju, vai visi lauki 272 00:13:39,025 --> 00:13:41,710 ir aizpildīti. 273 00:13:41,710 --> 00:13:44,410 Pretējā gadījumā tas, ko es šeit daru, ko else šeit nozīmē, ja 274 00:13:44,410 --> 00:13:47,110 pieprasījuma metode ir get, jo man ir tikai divas metodes, kuras šī 275 00:13:47,110 --> 00:13:49,810 funkcija pieņem, get un post. 276 00:13:49,810 --> 00:13:52,458 Pretējā gadījumā tas, ko es daru pirmajā vietā, ir formas parādīšanu 277 00:13:52,458 --> 00:13:55,106 , formu, kurā es sagaidu, ka viņi ierakstīs. 278 00:13:55,106 --> 00:13:57,318 Kura atkal iesniedz šajā lapā, cerot, ka viņi būs iesnieguši datus, 279 00:13:57,318 --> 00:13:59,530 kurus es varētu izmantot. 280 00:13:59,530 --> 00:14:02,815 Un es apstrādātu šīs funkcijas post daļā, nevis šīs funkcijas get 281 00:14:02,815 --> 00:14:06,100 daļā. 282 00:14:06,100 --> 00:14:08,675 Tātad, if request.method pamatā ļauj man pārbaudīt, kā es ieguvu 283 00:14:08,675 --> 00:14:11,250 datus. 284 00:14:11,250 --> 00:14:14,180 Request ir daļa no Flask, un tas ļaus man redzēt, vai es saņēmu 285 00:14:14,180 --> 00:14:17,110 datus, izmantojot get vai post, un ļaus man veikt dažādas darbības 286 00:14:17,110 --> 00:14:20,040 atkarībā no tā, kurš tas bija. 287 00:14:20,040 --> 00:14:22,625 Flask modulī ir daudz funkciju, kas jums noderēs, turpinot izstrādāt 288 00:14:22,625 --> 00:14:25,210 lietojumprogrammas. 289 00:14:25,210 --> 00:14:29,250 Tātad papildus tam, ka sakāt from Flask import Flask failu sākumā , 290 00:14:29,250 --> 00:14:33,290 jūs varētu teikt from Flask import Flask komats kādu no šiem. 291 00:14:33,290 --> 00:14:35,984 Veicot šo darbību, jūs izlaidīsit iekavas, bet izmantosit iekavas, 292 00:14:35,984 --> 00:14:38,678 kad izsaucat funkcijas. 293 00:14:38,678 --> 00:14:40,680 URL pasvītra for. 294 00:14:40,680 --> 00:14:44,190 Tātad tas ļauj man definēt funkciju un ar to saistīt dekoratoru. 295 00:14:44,190 --> 00:14:47,680 Un varbūt tas dekorators norāda, ka URL šeit ir patiešām garš vai 296 00:14:47,680 --> 00:14:51,170 kāda iemesla dēļ nav tik noderīgs. 297 00:14:51,170 --> 00:14:54,703 Tas, ko es varu darīt šeit, ir tā vietā, lai norādītu precīzu URL, uz 298 00:14:54,703 --> 00:14:58,236 kuru vēlos doties, es varu pateikt, ka es vēlos, lai jūs šeit dotos 299 00:14:58,236 --> 00:15:01,770 uz jebkuras funkcijas URL. 300 00:15:01,770 --> 00:15:03,764 Piemēram, mana login funkcija bija saistīta ar kādu URL, kas bija 301 00:15:03,764 --> 00:15:05,759 apmēram 50 rakstzīmes garš. 302 00:15:05,759 --> 00:15:08,379 Šeit es varētu vienkārši ievadīt, tā vietā, lai rakstītu 303 00:15:08,379 --> 00:15:10,999 50 rakstzīmes garo URL, kur es gribēju to izmantot, es varētu 304 00:15:10,999 --> 00:15:13,620 vienkārši pateikt URL pasvītra for login. 305 00:15:13,620 --> 00:15:17,280 Un, tā kā es to saistu ar dekoratoru, tas vienkārši pievienos to tur. 306 00:15:17,280 --> 00:15:20,780 Tātad tas ir veids, kā saīsināt dažas lietas. 307 00:15:20,780 --> 00:15:23,840 Redirect, kā jūs varētu gaidīt, ir Flask funkcija, kas novirza jūs no 308 00:15:23,840 --> 00:15:26,900 vienas lapas uz otru. 309 00:15:26,900 --> 00:15:29,722 Session ir noderīga HTTP sesijas datiem. 310 00:15:29,722 --> 00:15:31,326 Kā mēs runājām par get un post, iespējams, atceraties, ka ir arī 311 00:15:31,326 --> 00:15:32,930 trešā. 312 00:15:32,930 --> 00:15:35,195 Ir arī daži citi, bet ir vēl viena lieta, ko mēs varētu izmantot, 313 00:15:35,195 --> 00:15:37,460 saukta par sesijas mainīgo. 314 00:15:37,460 --> 00:15:39,550 Tā ne vienmēr ir HTTP lieta, bet parasti tas tiek saglabāts arī tur 315 00:15:39,550 --> 00:15:41,640 esošajās galvenēs. 316 00:15:41,640 --> 00:15:43,165 Un mēs to varam izmantot, piemēram, lai izsekotu, vai lietotājs ir 317 00:15:43,165 --> 00:15:44,690 pieteicies. 318 00:15:44,690 --> 00:15:47,000 Un pastāvīgi pārbaudīt, vai viņi ir pieteikušies, pat ja viņi dodas 319 00:15:47,000 --> 00:15:49,310 uz dažādām mūsu vietnes lapām. 320 00:15:49,310 --> 00:15:51,950 Tātad session tiek izmantota līdzīgi kā globālais mainīgais. 321 00:15:51,950 --> 00:15:54,020 Tas ir pieejams visās lapās. 322 00:15:54,020 --> 00:15:58,560 Ja izveidojat sesiju, varat sesijā saglabāt datus arī lietotājam. 323 00:15:58,560 --> 00:16:03,125 Render template tiek izmantota, lai jūsu vietnē izveidotu lapas, 324 00:16:03,125 --> 00:16:07,690 kurās tiek sajaukts HTML un Python. 325 00:16:07,690 --> 00:16:09,893 Tāpēc es varētu atveidot, piemēram, veidni, kur šī veidne ir forma, 326 00:16:09,893 --> 00:16:12,096 kuru vēlos parādīt lietotājam, veidlapa, par kuru es runāju 327 00:16:12,096 --> 00:16:14,300 iepriekšējā slaidā. 328 00:16:14,300 --> 00:16:18,920 Man varētu būt HTML veidne, kurā esmu uzrakstījis vispārējo formu. 329 00:16:18,920 --> 00:16:22,671 Un es varētu atveidot veidni un atsauci iekavās tās HTML formas , par 330 00:16:22,671 --> 00:16:26,422 kuru es tikko runāju. 331 00:16:26,422 --> 00:16:30,531 Varat arī veikt dažas citas lieliskas lietas, sajaucot HTML un 332 00:16:30,531 --> 00:16:34,640 Python, izmantojot valodu Jinja, kas neietilps šajā videoklipā. 333 00:16:34,640 --> 00:16:36,729 Bet, ja vēlaties iegūt vairāk informācijas par to, ko varat darīt, 334 00:16:36,729 --> 00:16:38,818 izmantojot Flask īso lietošanas pamācību, un jūs patiešām varat 335 00:16:38,818 --> 00:16:40,907 diezgan ātri sākt ar to, URL ir tur. 336 00:16:40,907 --> 00:16:44,192 Un, ja vēlaties uzzināt par Jinja un to, kā varat sajaukt HTML un 337 00:16:44,192 --> 00:16:47,478 Python, lai izveidotu pamata veidnes, kurās varat aizstāt dažas 338 00:16:47,478 --> 00:16:50,764 dažādas lietas atkarībā no tā, ko lietotājs ir iesniedzis, izmantojot 339 00:16:50,764 --> 00:16:54,050 get vai post pieprasījumu. 340 00:16:54,050 --> 00:16:55,940 Tur varat iegūt informāciju par Jinja. 341 00:16:55,940 --> 00:16:58,590 Jinja ir Python iedvesmota sintakse. 342 00:16:58,590 --> 00:17:00,685 Tātad dažas lietas, kas jums zināmas no Python sintakses, būs 343 00:17:00,685 --> 00:17:02,780 svarīgas. 344 00:17:02,780 --> 00:17:05,510 Bet ir arī pāris nelieli pārsteigumi. 345 00:17:05,510 --> 00:17:09,040 Un jūs varat uzzināt vairāk par Jinja, izmantojot šo URL. 346 00:17:09,040 --> 00:17:10,210 Es esmu Dags Loids. 347 00:17:10,210 --> 00:17:12,010 Šis ir CS50.