1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:03,227 [MUSIC nagpe-play] 3 00:00:03,227 --> 00:00:04,705 4 00:00:04,705 --> 00:00:05,830 EZRA Zigmond: Hi, sa lahat. 5 00:00:05,830 --> 00:00:08,020 Salamat para sa darating sa labas ngayon. 6 00:00:08,020 --> 00:00:10,660 Seminar na ito ay "Python Web Apps sa prasko. " 7 00:00:10,660 --> 00:00:14,510 >> Kaya, ako pagpunta sa pakikipag-usap nang kaunti tungkol sa kung bakit 8 00:00:14,510 --> 00:00:17,400 baka gusto mong gamitin ang prasko upang gumawa ng web apps na may Python, bilang kabaligtaran 9 00:00:17,400 --> 00:00:21,556 sa ilang iba pang mga balangkas out doon, tulad ng Django, kung saan ay ang pinaka-kilalang. 10 00:00:21,556 --> 00:00:24,330 Subtitle ay "at peewee, "kung saan ay isang bagay na 11 00:00:24,330 --> 00:00:27,250 kami ay pagpunta sa makipag-usap tungkol sa kung paano makipag-ugnayan sa SQL database. 12 00:00:27,250 --> 00:00:29,610 Ito ay ginagawang talagang maganda. 13 00:00:29,610 --> 00:00:32,390 >> Kaya, narito ang isang mabilis na rundown ng kung ano ang gusto kong balikan. 14 00:00:32,390 --> 00:00:35,520 Kaya, una, isa lamang sa slide na magiging quickstart, 15 00:00:35,520 --> 00:00:38,530 na kung saan ay kung paano makakuha ng lahat ng bagay i-set up sa iyong computer. 16 00:00:38,530 --> 00:00:41,760 Pupunta ako sa nagpapakita ito sa aking mga lokal Mac machine, 17 00:00:41,760 --> 00:00:45,220 dahil lang iyon kung saan ko na gawin ito bago, ako pinaka-komportable sa ito, 18 00:00:45,220 --> 00:00:48,510 ngunit ito ay tiyak posible sa CD50 IDE. 19 00:00:48,510 --> 00:00:52,050 >> Kaya, matapos na, gusto ko na ipakilala kung ano ang prasko ay, 20 00:00:52,050 --> 00:00:55,089 at kumbinsihin sa iyo kung bakit dapat mong gamitin ito sa unang lugar. 21 00:00:55,089 --> 00:00:56,880 Pagkatapos, kukunin ko na magbigay ng isang mabilis na halimbawa ng kung ano ang iyong 22 00:00:56,880 --> 00:01:00,550 maaaring gawin sa prasko, isang mabilis na halimbawa ng kung ano ang maaari mong gawin sa peewee, 23 00:01:00,550 --> 00:01:05,010 at pagkatapos ay ako ay magpapakita ng isang mas mo kumpletong halimbawa application 24 00:01:05,010 --> 00:01:07,520 na ako magkasama na kami maaaring maglakad sa pamamagitan ng sama-sama. 25 00:01:07,520 --> 00:01:10,040 >> At pagkatapos ay sa wakas, sa huling slide, mayroon akong 26 00:01:10,040 --> 00:01:12,730 ang ilang mga mapagkukunan na ang pagtingin mo sa online para sa karagdagang impormasyon. 27 00:01:12,730 --> 00:01:15,560 Ito ay hindi isang kumpletong tutorial sa kung paano gamitin prasko. 28 00:01:15,560 --> 00:01:18,140 At makikita ko pag-asa na mag-iwan ilang oras para sa mga katanungan. 29 00:01:18,140 --> 00:01:21,050 Kahit sino nanonood nang lokal, lamang tulad ng, shout out sa gitna 30 00:01:21,050 --> 00:01:22,340 kung ikaw ay may anumang mga katanungan. 31 00:01:22,340 --> 00:01:27,150 >> Kaya mabilis stuff pag-install, kung gusto mong upang sundin kasama, 32 00:01:27,150 --> 00:01:29,240 o kung nais mong makakuha ng ito up sa iyong sariling machine, 33 00:01:29,240 --> 00:01:32,440 Pupunta ako sa maging gamit Python 2.7.10. 34 00:01:32,440 --> 00:01:35,860 Flask gumagana sa Python 3, pero gusto ko 35 00:01:35,860 --> 00:01:38,660 gamit Python 2, dahil mayroong ilang Python pakete na 36 00:01:38,660 --> 00:01:40,910 hindi pa gumagana sa 3. 37 00:01:40,910 --> 00:01:44,800 Kung pip iyong na-install, na kung saan ay isang Python package manager, 38 00:01:44,800 --> 00:01:48,190 Sa tingin ko na kung ang iyong Python ay mas malaki kaysa sa o katumbas ng 2.7.9, 39 00:01:48,190 --> 00:01:52,220 install mo ito nagagawa, ito ay napakadaling i-install ang mga pakete. 40 00:01:52,220 --> 00:01:54,990 >> Maaari mong huwag pip install Flask, tuldukan install peewee, 41 00:01:54,990 --> 00:01:58,600 karaniwang kailangan mong patakbuhin sudo lamang upang ang mga pahintulot magtrabaho sa labas. 42 00:01:58,600 --> 00:02:01,080 At, kung ikaw ay gumagamit ng super lumang bersyon ng Python, 43 00:02:01,080 --> 00:02:05,100 Inirerekumenda ko ang pag-update ng iyong Python, o gamit EasyInstall upang i-install pip. 44 00:02:05,100 --> 00:02:09,180 45 00:02:09,180 --> 00:02:11,120 Kaya, ang susunod na tanong ay, kung ano ang prasko? 46 00:02:11,120 --> 00:02:13,280 At sa palagay ko, ang unang isang makatwirang katanungan ko ba 47 00:02:13,280 --> 00:02:15,585 para sa isang mahabang panahon ay, kung ano ang isang web app? 48 00:02:15,585 --> 00:02:17,960 Dahil na isang salita na ako Sa tingin ay itinapon sa paligid ng isang pulutong 49 00:02:17,960 --> 00:02:19,240 na hindi ko talaga alam. 50 00:02:19,240 --> 00:02:22,340 At sa tingin ko na ang pinakamahusay na halimbawa ng kung ano ang isang web app ay, 51 00:02:22,340 --> 00:02:26,960 talaga ay CS50 Finance, kung saan ito ay hindi talagang isang website lamang, 52 00:02:26,960 --> 00:02:29,320 ngunit ito ay isang bagay na iyong maaaring uri ng makipag-ugnayan sa. 53 00:02:29,320 --> 00:02:31,736 May mga user account at lahat ng uri ng iba't ibang mga bagay. 54 00:02:31,736 --> 00:02:35,010 Kaya, kung saan ang eksaktong ikaw gumuhit ng linya sa pagitan ng kung ano ang isang website, 55 00:02:35,010 --> 00:02:38,780 at kung ano ang isang web app, ay isang uri ng arbitrary, ngunit hulaan ko ang mga ideya, 56 00:02:38,780 --> 00:02:42,110 ito ay isang bagay ng higit sa isang website at ito ay isang kapaki-pakinabang na aplikasyon. 57 00:02:42,110 --> 00:02:46,081 >> Kaya, prasko ay isang framework para paggawa ng web apps gamit Python. 58 00:02:46,081 --> 00:02:48,330 At sana, sa pagtatapos ng mga ito, ako ay kumbinsihin sa iyo 59 00:02:48,330 --> 00:02:52,210 na maaaring tunay na sumulat ng isang bagay tulad ng CS50 Finance gamit Python, na aking 60 00:02:52,210 --> 00:02:53,950 tulad ng isang pulutong ng mas mahusay kaysa sa PHP, personal. 61 00:02:53,950 --> 00:02:57,320 >> Kaya, prasko ay, tumawag sila ng isang microframework, sa pamamagitan ng kung saan, 62 00:02:57,320 --> 00:02:59,800 ang ibig nilang sabihin ay masyadong simple, ngunit extensible. 63 00:02:59,800 --> 00:03:02,980 Kaya, ito ay may lamang kung ano ang kailangan mo, ngunit kung nais mong mas maraming mga tampok, 64 00:03:02,980 --> 00:03:04,522 ito ay madaling dalhin ang mga ito in. 65 00:03:04,522 --> 00:03:06,480 Ngunit dahil lamang ito ay isang microframework, ay hindi 66 00:03:06,480 --> 00:03:08,960 nangangahulugan na ito ay para lamang sa mga maliliit na proyekto. 67 00:03:08,960 --> 00:03:12,590 Mayroon akong isang link dito na nagsasabing na Obama ginamit Prasko sa 2012 68 00:03:12,590 --> 00:03:14,410 para sa kanyang kampanya website, na sana, 69 00:03:14,410 --> 00:03:16,937 ay isang bagay ng isang liham ng paglilipat. 70 00:03:16,937 --> 00:03:18,770 Subalit ang bagay na ako talagang gusto ang tungkol Flask 71 00:03:18,770 --> 00:03:22,401 ay na, ito ay hindi talagang gumawa anumang uri ng mga desisyon para sa iyo. 72 00:03:22,401 --> 00:03:24,150 Dahil lang sa hindi namin pakikipag-usap tungkol sa mga web apps, 73 00:03:24,150 --> 00:03:26,940 Kailangan ko bang ihambing ito sa Ruby sa Daang-bakal at Django, na parehong 74 00:03:26,940 --> 00:03:30,450 ay malaki Framework, ngunit pareho silang gumawa ng pagpapalagay 75 00:03:30,450 --> 00:03:33,600 tungkol sa kung paano nais mong makipag-ugnayan sa mga database, 76 00:03:33,600 --> 00:03:36,900 kung paano mo nais na ipakita ang iyong mga view, at ang mga ito ay talagang 77 00:03:36,900 --> 00:03:38,850 magandang aspeto na iyon. 78 00:03:38,850 --> 00:03:41,490 >> Halimbawa, Ruby sa daang-bakal na ito ay may mga aktibong record system, 79 00:03:41,490 --> 00:03:43,100 kung saan ay isang tunay na ganda paraan upang makipag-ugnayan sa data, 80 00:03:43,100 --> 00:03:45,960 ngunit kung nais mong gamitin ang Ruby sa Daang-bakal, uri ng ikaw ay nakatali sa na. 81 00:03:45,960 --> 00:03:47,835 Ngunit sa prasko, tulad ng makikita ko ipakita sa iyo ng peewee, 82 00:03:47,835 --> 00:03:49,830 Maaari mong gamitin ang anumang uri ng database na nais mo, 83 00:03:49,830 --> 00:03:53,980 at maaari mo lamang hilahin na sa bilang isang extension sa prasko. 84 00:03:53,980 --> 00:03:56,350 >> Kaya na ang dahilan kung bakit ko talaga tulad Flask, ito ay na ito 85 00:03:56,350 --> 00:04:01,170 ay hindi gumawa ng mga pagpapalagay para sa iyo batay sa mga bagay na hindi mo na kailangan talaga. 86 00:04:01,170 --> 00:04:04,440 >> Kaya, kung bakit dapat mong gamitin ang prasko? 87 00:04:04,440 --> 00:04:08,230 Ang kagandahan ay, ito lamang Wala talagang ang pangunahing tampok 88 00:04:08,230 --> 00:04:09,420 binuo sa mga ito na kailangan mo. 89 00:04:09,420 --> 00:04:11,980 Kaya, hindi mo na kailangang mag-alala tungkol sa pag-unawa ng buong bungkos ng mga bagay-bagay 90 00:04:11,980 --> 00:04:13,175 na hindi mo na kailangan talaga. 91 00:04:13,175 --> 00:04:15,060 Hindi mo kailangang mag-alala tungkol sa pag-off ng mga tampok 92 00:04:15,060 --> 00:04:16,620 na hindi mo na kailangan talaga. 93 00:04:16,620 --> 00:04:21,082 >> At, tulad ng nabanggit ko, ito ay sobrang madaling upang idagdag sa mga extension ng mga bagay-bagay 94 00:04:21,082 --> 00:04:21,790 na iyong kailangan. 95 00:04:21,790 --> 00:04:24,700 Ang ilan sa kanila, prasko ay kanilang sariling mga suporta para sa mga ito. 96 00:04:24,700 --> 00:04:28,230 Kaya mayroong isang bagay na tinatawag Flask admin, na salamin na admin 97 00:04:28,230 --> 00:04:32,060 panel na nagbibigay Django, na kung saan ay nagbibigay sa iyo ng isang magandang visual na paraan 98 00:04:32,060 --> 00:04:33,405 upang pangasiwaan ang iyong mga website. 99 00:04:33,405 --> 00:04:35,280 Ngunit muli, kung ikaw ay paggawa ng mga simpleng bagay, 100 00:04:35,280 --> 00:04:39,550 marahil ay hindi mo kailangan ng isang malaking admin panel, kaya tingin ko na super nice. 101 00:04:39,550 --> 00:04:45,940 At ang mga disadvantages ay gayon, ikaw ay may mas mababa kapangyarihan sa labas ng kahon. 102 00:04:45,940 --> 00:04:49,660 Kaya, noong una mong buksan up prasko, at sa inyong Python programa, 103 00:04:49,660 --> 00:04:53,150 i-type lamang sa iyo mula sa prasko import *, o kahit ano, 104 00:04:53,150 --> 00:04:55,957 hindi mo eksaktong makakuha ng lahat ng mga ang mga tampok na maaaring gusto. 105 00:04:55,957 --> 00:04:58,540 At kaya kailangan mong mas malinaw ilista ang mga tampok na gusto mo. 106 00:04:58,540 --> 00:05:01,990 Kaya na ang isa sa kawalan, ngunit ako isipin na para sa pagbuo ng mga maliliit na web 107 00:05:01,990 --> 00:05:04,782 apps tulad ako pagpunta sa pagpapakita mo, na hindi talaga isang problema. 108 00:05:04,782 --> 00:05:07,281 At kung ano ang huling bagay ay dapat na sabihin, na kung saan ay isang typo, 109 00:05:07,281 --> 00:05:10,240 ay na may mas mababa standardized convention para sa kung paano gamitin ang prasko, 110 00:05:10,240 --> 00:05:12,400 dahil lang sa may mga hindi bilang ng maraming mga tao na gamitin ito propesyonal 111 00:05:12,400 --> 00:05:13,191 kumpara sa Django. 112 00:05:13,191 --> 00:05:16,380 Kaya, kung titingnan mo ang isang bagay tulad ng, "paano ang gagawin ko x" sa Django, 113 00:05:16,380 --> 00:05:18,190 ikaw ay malamang na mahanap ito. 114 00:05:18,190 --> 00:05:20,260 >> May magandang disenyo pattern na maaari mong gamitin, 115 00:05:20,260 --> 00:05:22,660 ngunit may Flask, ito ay sort pumunta ng iyong sariling paraan, 116 00:05:22,660 --> 00:05:24,850 dahil lang sa ito ay isang medyo maliit na library. 117 00:05:24,850 --> 00:05:27,100 Kaya ang mga ay ang disadvantages, ngunit sa palagay ko 118 00:05:27,100 --> 00:05:29,370 na ito ay isang magandang library upang gamitin pa rin. 119 00:05:29,370 --> 00:05:31,909 >> Kaya sabihin tumalon lamang ni pakanan papunta prasko. 120 00:05:31,909 --> 00:05:34,200 Ito ay tiyak na hindi pagpunta upang maging isang kumpletong tutorial, 121 00:05:34,200 --> 00:05:37,480 ngunit ito ay upang mabigyan ka ng ideya ng kung paano buuin ang mga bagay-bagay, 122 00:05:37,480 --> 00:05:40,790 at iba tingin mo ay kumportable pagpunta off at pagtingin sa mga babasahin 123 00:05:40,790 --> 00:05:42,570 at paghahanap ng karagdagang impormasyon. 124 00:05:42,570 --> 00:05:48,500 >> Kaya, hayaan mo akong magbukas ng isang talagang simpleng halimbawa sa una, 125 00:05:48,500 --> 00:05:50,737 at ipakita sa iyo kung ano na ang ganito ang hitsura, at pagkatapos ay bibigyan namin ng 126 00:05:50,737 --> 00:05:52,070 break down na ito nang kaunti pa. 127 00:05:52,070 --> 00:05:56,160 >> Kaya ito dito, hayaan mo akong makakuha ito tumatakbo. 128 00:05:56,160 --> 00:06:06,800 129 00:06:06,800 --> 00:06:09,750 So, ako ngayon ang aking mga application na tumatakbo. 130 00:06:09,750 --> 00:06:15,910 Pupunta ako upang buksan ang Safari, at ito ay tumatakbo sa aking mga lokal na host. 131 00:06:15,910 --> 00:06:19,360 Kaya lang ako pagpunta sa gawin ito ng mas malaki. 132 00:06:19,360 --> 00:06:23,960 Ngunit localhost: 5000 133 00:06:23,960 --> 00:06:27,650 >> At kaya, sa ngayon, ang lahat ng ito ay, kapag binisita mo ang mga website, 134 00:06:27,650 --> 00:06:31,490 ito mga print out "Hello Flask," na kung saan ay hindi sobrang kapaki-pakinabang, 135 00:06:31,490 --> 00:06:34,630 ngunit sa palagay ko ay malamig-lamig na sa maliit na file dito, 136 00:06:34,630 --> 00:06:37,390 kami ay may isang tumatakbong web server na pag-print out ang isang bagay. 137 00:06:37,390 --> 00:06:40,500 Kaya, sabihin aktwal na hitsura sa code para sa isang segundo, 138 00:06:40,500 --> 00:06:43,080 at ito break down nang kaunti. 139 00:06:43,080 --> 00:06:45,260 Mabuti para sa lahat ng tao dito ay ang laki? 140 00:06:45,260 --> 00:06:51,560 >> So, sana, ikaw ay medyo kumportable ang paggamit ng Python. 141 00:06:51,560 --> 00:06:55,820 Ako ipagpalagay na maaari naming tumingin sa ang Python at basahin sa pamamagitan nito. 142 00:06:55,820 --> 00:06:59,290 Kung mayroon kang anumang mga katanungan tungkol sa kahit ano, maaari ko ring pumunta sa paglipas na. 143 00:06:59,290 --> 00:07:03,974 >> Kaya ang unang linya ay, mula sa prasko, import namin, prasko na may malaking titik na "F" 144 00:07:03,974 --> 00:07:06,140 na kung saan ay uri ng lahat ng mga pangunahing katangian na kailangan mo. 145 00:07:06,140 --> 00:07:08,890 Tuwing ikaw ay sumusulat isang file at paggamit ng prasko, 146 00:07:08,890 --> 00:07:12,120 ikaw ay pagpunta sa nais mag-import na, dahil lang na may lahat ng mga pangunahing bagay. 147 00:07:12,120 --> 00:07:15,400 Ang susunod na bagay ang ginagawa namin, ay namin tawagan ang function na ito Flask, makatarungan 148 00:07:15,400 --> 00:07:19,270 lumikha ng isang app na bagay, at ikaw ay palaging pagpunta sa nais na gawin iyon. 149 00:07:19,270 --> 00:07:25,960 >> At pagkatapos, tumatalon pababa sa ilalim ng mabilis, ang bahagi na ito dito ay, 150 00:07:25,960 --> 00:07:28,760 'if_name _ == "_ main_"' na kung saan ay uri ng isang Python convention. 151 00:07:28,760 --> 00:07:32,750 Kaya ito ay execute lamang kung ikaw tumakbo ang file na ito nang direkta gamit ang Python. 152 00:07:32,750 --> 00:07:36,040 Pagkatapos, tumawag app.run namin, na kung saan ay talagang simulan ang app pagpunta. 153 00:07:36,040 --> 00:07:39,570 >> Kaya, na ang pangunahing istraktura na magkakaroon ka sa anumang Prasko application, 154 00:07:39,570 --> 00:07:48,550 ay magkakaroon ka ito app = prasko (_NAME_), at pagkatapos app.run. 155 00:07:48,550 --> 00:07:54,940 >> Kaya, ang dalawang bagay na mayroon akong sa dito, ay kung ano ang tawag namin sa mga ruta. 156 00:07:54,940 --> 00:07:57,150 Kaya, sabihin makipag-usap tungkol ipaalam pagruruta nang kaunti pa. 157 00:07:57,150 --> 00:07:58,430 Kukunin ko bumalik sa slide. 158 00:07:58,430 --> 00:08:02,540 >> Kaya ang pinaka-pangunahing konsepto sa prasko ay routing. 159 00:08:02,540 --> 00:08:06,750 At ito ay ang mga ideya na ikaw ay magtalaga ng mga function sa sawa 160 00:08:06,750 --> 00:08:11,280 sa mga partikular na mga address sa iyong web page. 161 00:08:11,280 --> 00:08:13,930 Kaya, kahit kailan mo gusto upang lumikha ng isang bagong ruta, 162 00:08:13,930 --> 00:08:16,500 gamitin mo ito @ app.route function na dekorador. 163 00:08:16,500 --> 00:08:19,770 Kaya, kung hindi ka pamilyar sa function na decorators sa Python, 164 00:08:19,770 --> 00:08:24,160 ito ay ang konsepto na ito na Hinahayaan kang kumuha ng isang function 165 00:08:24,160 --> 00:08:26,800 at palibutan ito sa ibang bagay. 166 00:08:26,800 --> 00:08:30,140 >> Kaya talaga, kung ano ang ibig dekorador, na ito ay tumatagal ang pag-andar na ito sa ibaba, 167 00:08:30,140 --> 00:08:33,409 at ito ay nagdadagdag ng karagdagang impormasyon sa mga ito, ngunit kung ano ang tunay na Flask 168 00:08:33,409 --> 00:08:37,480 ay gumawa na mangyari ay hindi super mahalaga, ngunit kung ano ang mahalaga, 169 00:08:37,480 --> 00:08:43,640 ay na bago ang ruta, ikaw ay ilagay ito @ app.route, at pagkatapos ay 170 00:08:43,640 --> 00:08:46,480 ang address ng ruta, kaya ang slash ay kung ano ang aming 171 00:08:46,480 --> 00:08:48,360 Nakita nang buksan lamang namin ang mga web page. 172 00:08:48,360 --> 00:08:49,580 Kaya na ang homepage. 173 00:08:49,580 --> 00:08:51,037 Ito lang ang ruta slash. 174 00:08:51,037 --> 00:08:52,370 At pagkatapos ay mayroon kang mga ito function. 175 00:08:52,370 --> 00:08:54,453 Ang pangalan ng function ay maaaring maging kahit anong gusto mo. 176 00:08:54,453 --> 00:08:56,930 Hindi nito kailangang palaging kailangang gawin sa ruta. 177 00:08:56,930 --> 00:08:59,440 At pagkatapos, ano man return ang function, ang 178 00:08:59,440 --> 00:09:01,730 dapat ibalik ang pag-andar ng isang string. 179 00:09:01,730 --> 00:09:03,740 At na string Maaari naglalaman ng HTML o anumang bagay, 180 00:09:03,740 --> 00:09:06,920 at iyon ay ang tunay na kung ano ang makukuha bumalik sa iyong web browser tulad ng HTML, 181 00:09:06,920 --> 00:09:08,200 at ito ay render na. 182 00:09:08,200 --> 00:09:12,030 >> Kaya ito ay ang parehong code iyon ay mula sa halimbawa 183 00:09:12,030 --> 00:09:16,430 na ako lang tumakbo, kaya kapag binisita namin slash, ito tawag ng Hello World function, kung saan 184 00:09:16,430 --> 00:09:20,470 nagbabalik lamang ng isang string, Hello prasko, at na ang makakakuha ng naka-print sa screen. 185 00:09:20,470 --> 00:09:27,290 >> Kaya may isa pang halimbawa, na kung saan ay, kapag binisita mo / hello, 186 00:09:27,290 --> 00:09:30,370 ito mga print out Kamusta Salita, na Dapat talagang sabihin, Hello World, 187 00:09:30,370 --> 00:09:32,010 ngunit magpanggap na ay intensyonal ipaalam. 188 00:09:32,010 --> 00:09:35,140 Kaya ng hilahin na up tunay na mabilis na ipaalam. 189 00:09:35,140 --> 00:09:41,290 >> Kaya kung pupunta ka sa localhost / hello, ito ngayong mag-print sa ibang bagay. 190 00:09:41,290 --> 00:09:45,680 Kaya na lang ang isang mabilis na halimbawa ng kung paano maaari kang lumikha ng dalawang magkaibang mga ruta. 191 00:09:45,680 --> 00:09:50,630 >> Kaya, sa ngayon ito ay hindi sobrang kapaki-pakinabang, diyan ay hindi isang buong maraming na maaari mong gawin, 192 00:09:50,630 --> 00:09:55,360 maaari mo lamang gawin ang lahat na may pagkakaroon ng iba't ibang mga pahina ng HTML, 193 00:09:55,360 --> 00:09:58,000 at kapag bumisita ka sa isang partikular na pahina ay naglo-load lang ito sa pahina. 194 00:09:58,000 --> 00:10:00,864 Kaya tingnan natin ang ilang mga karagdagang kapaki-pakinabang na bagay na maaari mong gawin. 195 00:10:00,864 --> 00:10:03,780 Kaya, ang isang bagay na maaaring mayroon ka napansin sa halimbawa na ako hinila 196 00:10:03,780 --> 00:10:07,160 up, ay na ako ay app.run (debug = True). 197 00:10:07,160 --> 00:10:09,580 At kaya, kung ano ang mga ito debug argument ay, ay 198 00:10:09,580 --> 00:10:14,600 na kapag nagpatakbo ka ng iyong web server, kapag ikaw ay nasa iyong mga application, 199 00:10:14,600 --> 00:10:18,100 kung babaguhin mo ang isang file, ito ay awtomatikong i-reload ang server. 200 00:10:18,100 --> 00:10:21,160 >> At kaya hindi mo talaga kung restart Python, na kung saan ay sobrang kapaki-pakinabang. 201 00:10:21,160 --> 00:10:24,020 Maaari ko bang ipakita na. 202 00:10:24,020 --> 00:10:26,960 Hayaan akong makuha ang aking code may typo sa loob nito, 203 00:10:26,960 --> 00:10:30,420 at magpanggap na typo ay ilagay doon sadyang para nakapagtuturo layunin. 204 00:10:30,420 --> 00:10:31,625 Kaya sabihin magdagdag ng ito pabalik sa. 205 00:10:31,625 --> 00:10:33,140 Kaya ngayon sinasabi nito Hello World. 206 00:10:33,140 --> 00:10:34,410 Ay i-save ko ito. 207 00:10:34,410 --> 00:10:36,540 At kung hilahin namin back up mga terminal, makikita mo 208 00:10:36,540 --> 00:10:39,520 sabihin na ito ay i-restart, dahil nakita ito sa isang pagbabago, 209 00:10:39,520 --> 00:10:43,620 at kaya ngayon kapag reload namin ang pahinang ito, ito ay i-print out ang tamang bagay. 210 00:10:43,620 --> 00:10:45,630 >> Kaya debug ay sobrang kapaki-pakinabang para sa na. 211 00:10:45,630 --> 00:10:48,740 Gayundin, kung mayroon kang anumang mga uri ng isang crash, kaya 212 00:10:48,740 --> 00:10:54,370 hayaan mo akong gumawa ng pag-crash ang application na ito sa pamamagitan ng pagkakaroon ng hindi ito ay babalik ng isang string. 213 00:10:54,370 --> 00:10:57,540 Kaya, sabihin kung ito lamang bumalik None para sa ilang kadahilanan. 214 00:10:57,540 --> 00:11:00,810 At pagkatapos ay kapag binisita ko ang pahina, ito lamang crash, 215 00:11:00,810 --> 00:11:04,465 ngunit ang server ay hindi lang basta pag-crash, ito ang tunay na nagbibigay sa iyo ng isang sobrang kapaki-pakinabang sa likod 216 00:11:04,465 --> 00:11:06,490 bakas ng lahat ng bagay na nangyaring mali. 217 00:11:06,490 --> 00:11:10,050 At kung ano ang talagang maganda, ay na sa anumang hakbang na ito sa trace back, 218 00:11:10,050 --> 00:11:14,260 maaari mong buksan up ng isang interactive magbigay ng pera dito, at ang uri ng mga print out kung ano 219 00:11:14,260 --> 00:11:17,780 variable na gusto mong tingnan ang. 220 00:11:17,780 --> 00:11:21,054 >> At kaya debugging ay talagang kapaki-pakinabang para sa pag-uunawa out 221 00:11:21,054 --> 00:11:23,470 kung ano ang nangyayari sa iyong server, sa halip na lamang ang nakakakita 222 00:11:23,470 --> 00:11:28,201 isang bagay sa PHP tulad ng isang 500 panloob error ng server, na kung saan ay sobrang walang silbi. 223 00:11:28,201 --> 00:11:30,700 Ang isang bagay na dapat malaman, ay na kung inilagay mo ang iyong app online 224 00:11:30,700 --> 00:11:34,260 kaya makikita ng publiko, ikaw hindi mo nais na mag-iwan ng debug mode on, 225 00:11:34,260 --> 00:11:37,320 dahil ang mga tao ay maaaring aktwal na gamitin ang console na na ako 226 00:11:37,320 --> 00:11:39,150 nagpakita sa iyo upang maipatupad arbitrary code. 227 00:11:39,150 --> 00:11:42,120 >> Kaya maaaring i-print ang mga ito out tulad ng anumang lihim na code na mayroon ka sa doon, 228 00:11:42,120 --> 00:11:44,755 maaari silang tumingin sa eksakto kung paano ang iyong website ay gumagana. 229 00:11:44,755 --> 00:11:46,630 Kaya ito ay talagang kapaki-pakinabang para sa pagsubok, ngunit palagi 230 00:11:46,630 --> 00:11:50,090 tiyakin na kumuha ng ito bago nag-publish ka ng kahit ano online. 231 00:11:50,090 --> 00:11:56,640 >> Kaya kapag ikaw ay gumagamit ng isang bagay tulad ng PHP, may mga ideya na ito 232 00:11:56,640 --> 00:11:58,920 na maaari mong ipasa impormasyon sa pagitan ng mga pahina ng web 233 00:11:58,920 --> 00:12:03,620 sa pamamagitan ng paglagay ng impormasyon na talagang sa URL, kung saan ay isang Kumuha ng kahilingan, 234 00:12:03,620 --> 00:12:07,490 ngunit sa prasko, maaari mong talagang gawin ang isang bagay uri ng mga tulad nito, 235 00:12:07,490 --> 00:12:10,590 sa pamamagitan ng pagkakaroon ng isang ruta na may isang variable bilang bahagi ng mga ito. 236 00:12:10,590 --> 00:12:14,090 >> Kaya kung titingnan mo ito Halimbawa sa screen dito, 237 00:12:14,090 --> 00:12:19,930 kami ay may isang ruta na ('/ hello /'), at sa gayon, kung bisitahin mo 238 00:12:19,930 --> 00:12:23,790 / hello / bagay, na ang isang bagay ay pagpunta sa aktwal na makakuha ng napuno 239 00:12:23,790 --> 00:12:25,490 sa variable na pangalan. 240 00:12:25,490 --> 00:12:27,850 At pansinin na ang pag-andar na nanggagaling sa na ruta 241 00:12:27,850 --> 00:12:31,302 Wala na kumuha sa mga parameter pangalan, upang ito ay talagang 242 00:12:31,302 --> 00:12:32,510 makakuha ng lumipas sa function. 243 00:12:32,510 --> 00:12:34,190 >> At pagkatapos, sa sandaling ikaw ay sa loob ng na function, 244 00:12:34,190 --> 00:12:36,420 maaari mong ituring na tulad ng isang normal na Python variable, 245 00:12:36,420 --> 00:12:39,650 at kaya pagkatapos, ito ay i-print out Hello, at ito 246 00:12:39,650 --> 00:12:42,000 ay punan ang pangalan gamit ang ilang mga string formatting. 247 00:12:42,000 --> 00:12:48,060 >> Kaya si variable bahagi sa isang routing, gamitin mo ang angle bracket pagmamarka. 248 00:12:48,060 --> 00:12:51,220 At opsyonal, maaari mong gamitin ang kung ano ang tinatawag na isang converter. 249 00:12:51,220 --> 00:12:56,840 At kaya, kung ikaw ay ilagay ito annotation sa colon, 250 00:12:56,840 --> 00:13:00,015 maaari mong tukuyin na ito ay isang int, o isang float, o landas, 251 00:13:00,015 --> 00:13:01,640 at ito ay awtomatikong i-convert iyon. 252 00:13:01,640 --> 00:13:05,130 Maaari mo ring gawin ang mga conversion sa loob ng Python function, 253 00:13:05,130 --> 00:13:09,710 sa pamamagitan lamang ng paggamit ng isang cast, ngunit kung minsan ay kung Gusto mo upang matiyak na ito ay isang int, 254 00:13:09,710 --> 00:13:12,080 maaari mong ilagay na rule conversion sa doon. 255 00:13:12,080 --> 00:13:15,930 >> Kaya sabihin pull up ng isang halimbawa ng ilang mga alituntunin variable. 256 00:13:15,930 --> 00:13:21,480 Kaya dito, ito ay may parehong basic istraktura sa mga mula Prasko import 257 00:13:21,480 --> 00:13:25,030 Flask, ang app = prasko (_NAME_), at pagkatapos ito ay tumatakbo sa dulo. 258 00:13:25,030 --> 00:13:28,050 Mayroon kaming mga dalawang magkaibang variable ruta dito. 259 00:13:28,050 --> 00:13:29,900 At ang unang isa, ay ang isa na ako ay nagpakita ng 260 00:13:29,900 --> 00:13:34,230 sa slide, na kung saan ay na ito lamang ay tumatagal sa isang pangalan string 261 00:13:34,230 --> 00:13:35,650 at ito ay i-print out Hello, Name. 262 00:13:35,650 --> 00:13:41,410 >> At pagkatapos, ang pangalawang isa ay gumagamit ng conversion. 263 00:13:41,410 --> 00:13:44,690 Kaya ito ay awtomatikong i-convert ito sa isang int, at pagkatapos ay i-double ang int, 264 00:13:44,690 --> 00:13:46,150 at i-print out na. 265 00:13:46,150 --> 00:13:48,220 At, hindi namin gawin ang anumang uri ng conversion sa loob nito 266 00:13:48,220 --> 00:13:49,594 dahil Prasko siyang bahala sa mga iyon. 267 00:13:49,594 --> 00:13:53,181 Kaya sabihin makakuha ng ito tumatakbo. 268 00:13:53,181 --> 00:13:54,930 Kapag mayroon kang isang Flask application na tumatakbo, 269 00:13:54,930 --> 00:13:58,440 maaari mong Kontrolin-C sa labas ng ito upang itigil ang server na tumatakbo. 270 00:13:58,440 --> 00:14:02,420 At pagkatapos ay ako patakbuhin ang mga variable. 271 00:14:02,420 --> 00:14:11,740 >> Kaya sabihin pumunta sa localhost / hello / ezra at sana, ito ay kamustahin sa akin. 272 00:14:11,740 --> 00:14:14,530 273 00:14:14,530 --> 00:14:20,310 >> Kaya ito ay kinuha sa pangalan ko, sa mga variable ruta, at pinuno ito sa dito. 274 00:14:20,310 --> 00:14:23,950 Kaya ko makikita ring ipakita ang isang mabilis na halimbawa ng pagdodoble. 275 00:14:23,950 --> 00:14:28,600 Kaya't kung ikaw ay pupunta sa / double / 3, ito ay i-print out 6. 276 00:14:28,600 --> 00:14:31,440 Kaya ito nag-alaga sa ang mga conversion para sa amin. 277 00:14:31,440 --> 00:14:34,190 >> Kaya maaari mo ring gawin ito sa float, at espesyal na bagay, 278 00:14:34,190 --> 00:14:37,530 kung kailangan mong tukuyin ang isang bagay tulad ng ng isang landas, na hinahayaan itong tanggapin slashes, 279 00:14:37,530 --> 00:14:39,155 ngunit na dapat hindi karaniwan ay hindi isang isyu. 280 00:14:39,155 --> 00:14:41,480 281 00:14:41,480 --> 00:14:43,820 Sa ngayon kami, mayroon pa rin lamang ay bumabalik 282 00:14:43,820 --> 00:14:46,320 string, na kung saan ay hindi masyadong kawili-wili. 283 00:14:46,320 --> 00:14:48,730 >> Kami ay talagang maaaring bumalik literal na string ng HTML. 284 00:14:48,730 --> 00:14:54,322 Kaya sa mga code maaari naming ipasok ang isang bagay tulad ng mga b-tag upang gawin itong bold, 285 00:14:54,322 --> 00:14:56,030 ngunit karamihan ng panahon na kayo hindi tunay na gusto 286 00:14:56,030 --> 00:14:58,420 na pagsusulat ng HTML code sa iyong Python code. 287 00:14:58,420 --> 00:15:01,940 Ito ay makakakuha ng talagang marumi, at ito ay hindi isang magandang panahon. 288 00:15:01,940 --> 00:15:06,430 >> Flask ay nagpapahintulot sa amin upang paghiwalayin ang mga HTML sa kung ano ang tinatawag na ang Template, 289 00:15:06,430 --> 00:15:09,467 at kaya kung ang iyong iniisip sa mga tuntunin ng mga modelo ng MVC 290 00:15:09,467 --> 00:15:11,550 na ikaw ay pamilyar sa, sana, mula sa trabaho 291 00:15:11,550 --> 00:15:15,520 may CS50 Finance nang kaunti, maaari mong isipin ang Python file 292 00:15:15,520 --> 00:15:19,430 bilang mas ng Kontroler, kung saan sila ay nakikipag-ugnayan sa kahit anong 293 00:15:19,430 --> 00:15:20,970 modelo ng data na maaaring mayroon ka. 294 00:15:20,970 --> 00:15:24,900 >> At pagkatapos ay tumatawag sila upang Views at pagpasa ng impormasyon sa View na 295 00:15:24,900 --> 00:15:28,120 upang punan ang impormasyon sa HTML na nangangailangan nito. 296 00:15:28,120 --> 00:15:30,490 At kung ano ang tawag namin sa mga Views mga Template sa class. 297 00:15:30,490 --> 00:15:35,280 >> Kaya Prasko gumagamit ng ibang Python module na ito ay awtomatikong ay 298 00:15:35,280 --> 00:15:38,620 install kapag PIP mong i-install Flask tinatawag Jinja, kung saan 299 00:15:38,620 --> 00:15:40,885 hinahayaan kang idagdag ang mga anotasyon sa HTML 300 00:15:40,885 --> 00:15:45,140 na nakikita mo sa screen, na nagbibigay-daan ilagay mo sa mga bagay na tulad conditionals, 301 00:15:45,140 --> 00:15:47,230 at mga loop sa HTML. 302 00:15:47,230 --> 00:15:51,140 >> Kaya mukhang isang maliit na bit tulad ng kung paano mo Maaaring gamitin ang PHP sa loob ng isang HTML file, 303 00:15:51,140 --> 00:15:57,380 ngunit ito ay lamang kapag ang Flask Naghahain up server ang file na HTML, 304 00:15:57,380 --> 00:16:01,610 ito ay tatakbo templating engine na ito at i-parse sa pamamagitan na ito at punan ang mga bagay sa. 305 00:16:01,610 --> 00:16:06,650 Kaya may render_template function na Flask na maaari mong makita sa ibaba dito. 306 00:16:06,650 --> 00:16:14,300 At kaya kapag binisita mo ang pahinang ito, ito ay render ito hello.html Template, 307 00:16:14,300 --> 00:16:16,407 at pagkatapos ay punan ang HTML na pahina. 308 00:16:16,407 --> 00:16:18,990 Tumakbo lang ito real Kaya sabihin mabilis, at makita kung ano ang mukhang, 309 00:16:18,990 --> 00:16:21,198 at pagkatapos ay kukunin ko na pumunta sa pamamagitan ng isang maliit na piraso nang mas detalyado. 310 00:16:21,198 --> 00:16:25,380 311 00:16:25,380 --> 00:16:30,260 Kaya, ang iyong Template ay pagpunta upang pumunta sa isang Template folder. 312 00:16:30,260 --> 00:16:33,980 Ito ay awtomatikong pagtingin sa loob ng mga Folder Template para sa na Template. 313 00:16:33,980 --> 00:16:35,615 Kaya buksan up ni ito ipaalam. 314 00:16:35,615 --> 00:16:47,350 315 00:16:47,350 --> 00:16:50,005 Kaya, kukunin ko na tumakbo ang mga halimbawa Templating. 316 00:16:50,005 --> 00:16:52,820 317 00:16:52,820 --> 00:17:03,660 >> Kaya kung pumunta ako sa / hello / ezra, ito ay ang kakila-kilabot, 318 00:17:03,660 --> 00:17:05,930 kasuklam-suklam marquee tag na kong ilagay sa. 319 00:17:05,930 --> 00:17:08,050 Napakabuti, napaka-dynamic. 320 00:17:08,050 --> 00:17:09,349 Ako ay isang malaking fan. 321 00:17:09,349 --> 00:17:13,900 Ngunit ano ang mangyayari kung Pumunta ako lamang, / hello? 322 00:17:13,900 --> 00:17:15,220 Kaya lang ang sinasabi nito Hello World. 323 00:17:15,220 --> 00:17:17,678 Hindi ko ipasa ito ng isang pangalan, at pinuno ang mga ito sa awtomatikong. 324 00:17:17,678 --> 00:17:22,050 Kaya sabihin makita kung paano ito ay na, at kung paano maaari naming kumuha alisan ng marquee siguro. 325 00:17:22,050 --> 00:17:26,240 >> Kaya dito, ito ay isang uri ng isang kawili-wiling halimbawa ng, 326 00:17:26,240 --> 00:17:29,101 kung ikaw ay pamilyar sa kung paano lumipat pahayag ng trabaho sa isang wika. 327 00:17:29,101 --> 00:17:31,350 Sabihin ito ay uri ng tulad ng, na uri ng isang pagbagsak sa pamamagitan ng, 328 00:17:31,350 --> 00:17:34,266 kung saan ang tunay na ikaw na naka-attach sa dalawang iba't ibang mga ruta sa parehong function. 329 00:17:34,266 --> 00:17:41,190 Kaya isama namin ang / hello ruta at ang hello ruta / / name na Hello, 330 00:17:41,190 --> 00:17:45,130 at tukuyin natin using-- hinahayaan kang sawa tukuyin default na function arguments-- 331 00:17:45,130 --> 00:17:48,300 kaya kung walang pangalan, kaya kung pumunta kami sa makatarungan / hello, 332 00:17:48,300 --> 00:17:50,680 ito ay awtomatikong i-filter sa pangalan ay katumbas ng Wala. 333 00:17:50,680 --> 00:17:55,010 >> Kaya nga, nagbibigay kami ng mga Template may pangalan = pangalan, 334 00:17:55,010 --> 00:17:59,510 kaya ito ay pumasa sa mga parameter na pangalan katumbas ng pangalang ito function na parameter, 335 00:17:59,510 --> 00:18:00,730 sa Template. 336 00:18:00,730 --> 00:18:04,040 Iyon pa rin ay hindi ipaliwanag kung paano ang pagpapasya kung upang i-print ang Hello World, 337 00:18:04,040 --> 00:18:05,100 o i-print ang aking pangalan. 338 00:18:05,100 --> 00:18:08,050 Kaya sabihin aktwal na hitsura sa mismong Template, 339 00:18:08,050 --> 00:18:11,610 at makita kung saan na ay nagmumula. 340 00:18:11,610 --> 00:18:18,680 >> Kaya, sa loob ng Template, namin talagang may ilang mga kondisyon na lohika, 341 00:18:18,680 --> 00:18:20,580 kung saan ang ilang mga tao ay magtaltalan, na talagang 342 00:18:20,580 --> 00:18:23,730 hindi dapat magkaroon ng isang pulutong ng mga kondisyon logic sa loob ng iyong Template mismo. 343 00:18:23,730 --> 00:18:26,310 Ito ay dapat na higit pa sa loob ng Controller, ngunit para sa halimbawang ito 344 00:18:26,310 --> 00:18:27,476 ito ay isang bagay na medyo maliit. 345 00:18:27,476 --> 00:18:31,060 Kaya dito, kami ay suriin, kung ang pangalan, kaya kung ang pangalan ay hindi katumbas sa None, 346 00:18:31,060 --> 00:18:33,130 kung ang isang pangalan ay talagang ipinasa sa, pagkatapos namin 347 00:18:33,130 --> 00:18:36,210 sabihin Hello, Pangalanan sa header at ang malaking tolda, 348 00:18:36,210 --> 00:18:41,490 ang lahat ng ito normal HTML, sa kabilang banda, kami ay i-print out Hello, World lang ng normal. 349 00:18:41,490 --> 00:18:45,820 Kaya ng ilang mga bagay-bagay sa paunawa dito tungkol sa kung paano i-format ang templating, 350 00:18:45,820 --> 00:18:49,110 ay na, ang lahat ng mga kondisyon na pahayag, 351 00:18:49,110 --> 00:18:54,475 uri ng tulad ng kung paano namin PHP ito kapag gusto mong ipasok ang ilang PHP, 352 00:18:54,475 --> 00:18:58,380 mong gamitin ang mas mababa-kaysa tanong mark, ito ay isang uri ng kahalintulad dito 353 00:18:58,380 --> 00:19:00,140 kasama ang {%. 354 00:19:00,140 --> 00:19:02,130 >> Kaya dito, ay ang aming kondisyon code. 355 00:19:02,130 --> 00:19:05,920 At pagkatapos ay, kapag ang tunay na nais na literal na suriin ang isang bagay, at i-print 356 00:19:05,920 --> 00:19:08,710 ito out sa screen, ikaw ay gamitin ang double braces. 357 00:19:08,710 --> 00:19:12,310 Kaya dito ay ang double braces, at pagkatapos ay tukuyin natin pangalan, 358 00:19:12,310 --> 00:19:15,500 kaya sa loob ng na, ito ay suriin upang ang pangalan ng variable, na 359 00:19:15,500 --> 00:19:18,860 ay naipasa sa mula sa render function na template, 360 00:19:18,860 --> 00:19:21,484 sa halip na pag-print lamang out, kung namin nakuha ko mapupuksa ang mga ito, 361 00:19:21,484 --> 00:19:23,150 ay ito lamang i-print out ang salitang "pangalan." 362 00:19:23,150 --> 00:19:26,340 Kaya, na ang isang bagay upang panoorin ang para sa. 363 00:19:26,340 --> 00:19:29,792 >> Kaya isa pang bagay na notice ay na, kapag tayo 364 00:19:29,792 --> 00:19:31,500 nais na gamitin ang render_template function, 365 00:19:31,500 --> 00:19:34,490 ang tunay na kami ay may upang i-import ito tahasang mula prasko. 366 00:19:34,490 --> 00:19:36,915 At ito ay isang halimbawa ng modularity ng prasko, 367 00:19:36,915 --> 00:19:39,290 na hindi mo na kailangang mag-import mga bagay na hindi mo na kailangan. 368 00:19:39,290 --> 00:19:41,290 Maaari mo lamang dalhin sa function ka talagang 369 00:19:41,290 --> 00:19:43,450 kailangan, na kung minsan nice, kaya hindi mo 370 00:19:43,450 --> 00:19:46,560 kailangang magkaroon ng lahat ng mga function upo sa paligid na hindi mo ginagamit, 371 00:19:46,560 --> 00:19:49,730 kundi pati na rin, kung nakalimutan mo na ikaw kailangan mag-import render_template, 372 00:19:49,730 --> 00:19:52,660 ikaw ay malamang na makakuha ng isang babala na ipaalam sa iyo ang tungkol sa. 373 00:19:52,660 --> 00:19:56,700 Kaya, iyon ay templating. 374 00:19:56,700 --> 00:20:01,680 >> Kaya, kami ay ipinapakita kung paano mag gumawa ng mga simpleng mga pahina ng web, 375 00:20:01,680 --> 00:20:04,947 at magdagdag ng isang maliit na kaunti pang logic na ito, sa mga tuntunin ng mga variable routing. 376 00:20:04,947 --> 00:20:08,280 Ito ay nagbibigay-daan ka gumawa ng iba't ibang bagay batay sa kung ano ang URL kang pumunta sa, at din pagkatapos, bigyan 377 00:20:08,280 --> 00:20:11,950 ang HTML ng isang maliit na kaunti pang-unawa sa mga tuntunin ng kung paano mo nais na mag-render ng mga bagay. 378 00:20:11,950 --> 00:20:14,210 Hindi mo na kailangang ilagay ang lahat ng iyong HTML sa iyong Python, 379 00:20:14,210 --> 00:20:16,640 ngunit para medyo marami bawat web application, 380 00:20:16,640 --> 00:20:21,480 ikaw ay pagpunta sa gusto ng ilang mga uri ng modelo ng data na nauugnay dito. 381 00:20:21,480 --> 00:20:25,560 >> At kaya ayon sa kaugalian, ito gagawin isang bagay tulad ng isang SQL database. 382 00:20:25,560 --> 00:20:30,280 At maaari mo lamang makipag-ugnayan nang direkta sa SQL. 383 00:20:30,280 --> 00:20:32,190 Python ay, sa tingin ko ang tawag dito. 384 00:20:32,190 --> 00:20:33,040 SQLite 3. 385 00:20:33,040 --> 00:20:38,454 Maaari mong i-import lamang SQLite 3 at execute SQL query direkta, 386 00:20:38,454 --> 00:20:40,870 ngunit hindi ko alam tungkol sa iyo, ngunit ko talagang hindi gusto, lang, 387 00:20:40,870 --> 00:20:42,750 pagsulat ang SQL query. 388 00:20:42,750 --> 00:20:45,350 Ito ay may kaugaliang upang makakuha ng talagang mahaba at kumplikado. 389 00:20:45,350 --> 00:20:49,180 >> At ito, isang bagay na Gusto kong gamitin ang kung ano ang 390 00:20:49,180 --> 00:20:53,610 kilala bilang isang ORM, kung saan ay isang object-pamanggit mapping. 391 00:20:53,610 --> 00:20:56,890 At ang punto ng isang object-pamanggit mapping, 392 00:20:56,890 --> 00:21:00,100 ay na may mga dalawang magkaibang paraan na maaari mong isipin ang tungkol sa mga database. 393 00:21:00,100 --> 00:21:03,240 >> Kaya ang mga halimbawa na Professor Malan karaniwang 394 00:21:03,240 --> 00:21:07,660 gumagamit sa klase, ay ang Excel table, kung saan ang ikaw ay may mga hilera at mga hanay na ito, 395 00:21:07,660 --> 00:21:10,210 at iyon ang talagang kapaki-pakinabang para sa kung paano ito ay kinakatawan sa SQL 396 00:21:10,210 --> 00:21:13,170 at kung paano nakikipag-ugnayan ka sa mga ito, ngunit isa pang paraan na ito ay aktwal na 397 00:21:13,170 --> 00:21:16,390 kapaki-pakinabang na mag-isip tungkol sa mga ito kung minsan, ay sa mga tuntunin ng mga klase at mga bagay. 398 00:21:16,390 --> 00:21:20,420 >> Kaya sa halip ng pag-iisip ng bawat talahanayan bilang pagkakaroon 399 00:21:20,420 --> 00:21:23,040 ito hilera na may mga tiyak na na impormasyon, maaari mong aktwal na 400 00:21:23,040 --> 00:21:26,100 tingin ng mga ito bilang bawat talahanayan ay isang klase, 401 00:21:26,100 --> 00:21:29,810 at pagkatapos ay sa bawat pagkakataon ng mga klase ay may tiyak na mga katangian. 402 00:21:29,810 --> 00:21:35,110 Kaya, sa halimbawang ito, ang mga pagkakataon ng mga ang klase ay ang mga hilera sa talahanayan, 403 00:21:35,110 --> 00:21:37,490 at pagkatapos ay sa bawat ari-arian ng gagawin maging isang haligi sa talahanayan. 404 00:21:37,490 --> 00:21:40,840 >> Kaya, ang ORM na gusto ko gamitin ang tinatawag peewee. 405 00:21:40,840 --> 00:21:43,520 Ito ay talagang maliit, uri ng tulad ng prasko. 406 00:21:43,520 --> 00:21:46,760 Sa tingin ko na sila ay pumunta rin magkasama, ngunit may mga maraming iba pang mga ORMs 407 00:21:46,760 --> 00:21:47,730 na maaari mong gamitin. 408 00:21:47,730 --> 00:21:52,180 Ang isang mas popular na ang isa ay kilala bilang SQLAlchemy, 409 00:21:52,180 --> 00:21:56,050 at hindi ko matandaan kung bakit ako orihinal Pinili peewee paglipas SQLAlchemy, 410 00:21:56,050 --> 00:21:58,311 o gusto kong sabihin sa iyo kung bakit ako sa tingin mo ay ang pinakamahusay na isa, 411 00:21:58,311 --> 00:22:01,060 ngunit lamang namin ay pagpunta sa gamitin ito isa dahil alam ko kung paano gamitin ito. 412 00:22:01,060 --> 00:22:04,760 >> Kaya, isang tanong ay, kung bakit dapat abala sa iyo gamit ang isang ORM, 413 00:22:04,760 --> 00:22:07,552 sa halip ng direkta lamang pagsulat ng SQL query? 414 00:22:07,552 --> 00:22:09,760 At sa tingin ko ang pinakamahusay na mga kaso, ay na hindi mo talaga 415 00:22:09,760 --> 00:22:11,356 kailangang magsulat ng SQL query. 416 00:22:11,356 --> 00:22:14,480 Ito ay lubhang mas madaling, tulad ng makikita ko sa iyo, upang gumawa ng mga bagay tulad ng pagpili, insertion, 417 00:22:14,480 --> 00:22:16,157 pagtanggal, lalo na ang paglikha ng mga talahanayan. 418 00:22:16,157 --> 00:22:17,990 Ito ay lubhang mas madaling magsulat ng isang istraktura ng klase, 419 00:22:17,990 --> 00:22:22,250 kaysa ito ay upang buuin ang isang Lumikha Table statement, ngunit ang isang bagay 420 00:22:22,250 --> 00:22:25,710 na dapat malaman, ay na ang ORM ay subukan ang kanyang pinakamahusay na 421 00:22:25,710 --> 00:22:28,640 upang malaman kung ano ang pinaka mabisa SQL query ay magiging, 422 00:22:28,640 --> 00:22:30,110 ngunit minsan ito ay nakakakuha ito mali. 423 00:22:30,110 --> 00:22:32,660 >> At lalo na kung ikaw ay nagtatrabaho sa isang malaking database, 424 00:22:32,660 --> 00:22:35,557 Maaari mong mapansin na ang isang query na dapat ay tumakbo ng mabilis, 425 00:22:35,557 --> 00:22:36,640 ay aktwal na pagkuha ng mas matagal. 426 00:22:36,640 --> 00:22:40,164 At kung titingnan mo sa ilalim ng hood sa kung paano ang ORM ay interpret na sa SQL, 427 00:22:40,164 --> 00:22:42,080 maaaring ito ay paggawa ng isang bagay talagang walang katotohanan, 428 00:22:42,080 --> 00:22:44,371 dahil lang sa ito ang uri ng mga gestured iyong intensyon mali. 429 00:22:44,371 --> 00:22:48,080 At, nagkaroon ng mga beses kung saan Nagkaroon na ako upang i-override ito, at lamang 430 00:22:48,080 --> 00:22:52,429 gagawin ang aking sariling mga SQL query, lamang dahil ito ay pag-parse sa isang kakaibang paraan. 431 00:22:52,429 --> 00:22:54,220 Kaya, ay may ilang mga overhead, sa loob lamang ng mga paraan 432 00:22:54,220 --> 00:22:58,680 na ito compiles ang iyong pahayag down sa SQL. 433 00:22:58,680 --> 00:23:06,200 >> So, tingnan natin sobrang mabilis sa ipaalam isang simpleng halimbawa ng isang modelo ng data 434 00:23:06,200 --> 00:23:07,350 na maaari mong gamitin. 435 00:23:07,350 --> 00:23:11,880 Kaya, ito ay Python code, at sa gayon ang unang bagay na gusto mong gawin ay mula 436 00:23:11,880 --> 00:23:12,950 peewee import *. 437 00:23:12,950 --> 00:23:15,850 Kaya, hindi katulad ng prasko, kung saan mayroon kang sa lahat ng mga indibidwal na mga module, 438 00:23:15,850 --> 00:23:18,125 at nais mong mag-import ng prasko, at magsulat ng isang Template, at ilang iba pa 439 00:23:18,125 --> 00:23:20,690 na namin makita sa ibang pagkakataon, mula sa peewee, Maaari mong i-import ng lahat ng bagay, 440 00:23:20,690 --> 00:23:22,290 dahil sa ito ay isang magandang maliit na library. 441 00:23:22,290 --> 00:23:26,490 >> Kaya, ang unang bagay na nais mong gawin, ay tunay na lumikha ng database na ito object. 442 00:23:26,490 --> 00:23:31,212 Kaya, mayroon kang db = SqliteDatabase, at pagkatapos ay ang pangalan ng iyong database. 443 00:23:31,212 --> 00:23:33,170 At ito ay tunay na lumikha ng isang database object 444 00:23:33,170 --> 00:23:36,230 na maaari mong makipag-ugnayan sa, na may peewee. 445 00:23:36,230 --> 00:23:40,570 >> At pagkatapos, kami ay ang aktwal na modelo na gusto naming gumawa. 446 00:23:40,570 --> 00:23:42,470 Kaya ang talahanayan gusto naming gumawa. 447 00:23:42,470 --> 00:23:47,270 Kaya, sa loob ng peewee, ang bawat klase ay may sariling table sa loob ng iyong database. 448 00:23:47,270 --> 00:23:52,800 Kaya, ang lahat ng mga klase mamanahin mula sa base model, 449 00:23:52,800 --> 00:23:55,960 at ang mga modelo capital M ay isang bagay na tinukoy sa peewee. 450 00:23:55,960 --> 00:24:02,162 >> Kaya, ang lahat ng iyong mga modelo ay dapat na magmana bilang kanilang pinakamataas superclass, 451 00:24:02,162 --> 00:24:04,620 sila ay dapat na magmana mula sa modelo, ngunit kung ano ang talagang cool, 452 00:24:04,620 --> 00:24:07,610 ay na maaari mong tunay ang iyong modelo magmana mula sa bawat isa. 453 00:24:07,610 --> 00:24:10,530 At ang isang pulutong ng mga oras, ang iyong modelo data ay hindi kinakailangang 454 00:24:10,530 --> 00:24:13,754 gumawa ng isang magandang mana hierarchy, ngunit mga oras kung saan ang kanilang ginagawa, ito ay talagang maganda, 455 00:24:13,754 --> 00:24:15,920 dahil ikaw ang model likas sa isa't isa. 456 00:24:15,920 --> 00:24:19,710 >> Kaya, natukoy namin ito klase 'mag-aaral,' na nagmamana ng isang modelo, 457 00:24:19,710 --> 00:24:21,170 at ito ay may tatlong katangian. 458 00:24:21,170 --> 00:24:24,080 Ito ay may isang ID, na kung saan ay isang PrimaryKeyField, na 459 00:24:24,080 --> 00:24:26,920 ay isang bagay na ibinigay sa pamamagitan peewee, pangalan ay isang CharField, 460 00:24:26,920 --> 00:24:28,490 at isang grade ay isang IntegerField. 461 00:24:28,490 --> 00:24:32,260 Kaya ito ay maaaring o hindi maaaring maging paano CS50 tunay na mga tindahan sa lahat 462 00:24:32,260 --> 00:24:33,650 marka ng mga estudyante. 463 00:24:33,650 --> 00:24:36,060 Hindi ito, ngunit ito ay kung paano ko gagawin iyon. 464 00:24:36,060 --> 00:24:37,920 >> At pagkatapos na ito ay, sa loob ng klaseng ito, at ito 465 00:24:37,920 --> 00:24:41,620 isang bagay na maaari mong gawin sa mga Python, maaari kang magkaroon ng nested mga klase. 466 00:24:41,620 --> 00:24:43,920 At ito ay isang bagay na na kinakailangan ng peewee. 467 00:24:43,920 --> 00:24:47,250 Kaya, ang klase Meta, mayroon kang upang tukuyin na ang database ay 468 00:24:47,250 --> 00:24:49,830 katumbas ng object na nilikha namin sa itaas. 469 00:24:49,830 --> 00:24:54,339 At ito sinasabi kung ano ang file ay ang talahanayan na ito talagang pagpunta sa ay nakapaloob sa. 470 00:24:54,339 --> 00:24:57,130 Kaya ito ay isang bagay na ikaw ay may na gawin sa loob ng lahat ng iyong mga modelo. 471 00:24:57,130 --> 00:24:59,380 Ikaw lamang ang may upang tukuyin ang na sakop ng Meta klase 472 00:24:59,380 --> 00:25:01,400 na database ay katumbas db. 473 00:25:01,400 --> 00:25:03,940 Kaya kung ano ako ay karaniwang gawin, kung mayroon akong ng grupo ng mga iba't-ibang mga modelo, 474 00:25:03,940 --> 00:25:05,910 ay na mayroon akong isang base modelo, na ako ay karaniwang 475 00:25:05,910 --> 00:25:08,839 tumawag lamang sa "base model" na may Meta class, 476 00:25:08,839 --> 00:25:10,380 at itinatakda nito ang database katumbas db. 477 00:25:10,380 --> 00:25:13,710 At pagkatapos ang lahat ng aking mga kasunod na mga modelo magmamana mula sa na base class. 478 00:25:13,710 --> 00:25:16,760 At pagkatapos ay hindi ko kailangang mag-alala tungkol sa pagtatakda ng Meta class. 479 00:25:16,760 --> 00:25:21,490 >> Kaya, kapag ito ay talagang makakakuha ng naipon down sa isang SQL na pahayag, 480 00:25:21,490 --> 00:25:24,875 mukhang ang mga bastos na bagay pababa dito, "Gumawa ng mesa ang mag-aaral ID integer, 481 00:25:24,875 --> 00:25:26,020 " kahit ano. 482 00:25:26,020 --> 00:25:30,002 >> At, sa tingin ko na ito ay mas maikli, ito SQL query karapatan dito, 483 00:25:30,002 --> 00:25:32,960 ngunit kung titingnan mo sa klase na ito dito maaari mong makita kung ano mismo ang nangyayari. 484 00:25:32,960 --> 00:25:36,116 Makikita mo kung anong uri ng mga patlang may mga, kung ano ang kanilang ay tinatawag na, 485 00:25:36,116 --> 00:25:38,115 at sa gayon, sa tingin ko na ang tumitingin sa Python code 486 00:25:38,115 --> 00:25:43,340 ay mas nababasa na marami kaysa sinusubukang isulat ang SQL query. 487 00:25:43,340 --> 00:25:45,990 >> Kaya, upang aktwal na gamitin ang database, 488 00:25:45,990 --> 00:25:48,470 mayroon kaming upang kumonekta sa ito sa loob ng Python. 489 00:25:48,470 --> 00:25:52,770 So, kadalasan ako magsulat ng isang function na tinatawag na initialize_db na ang dalawang bagay. 490 00:25:52,770 --> 00:25:54,880 Ito ay tumatagal sa database object db at ito 491 00:25:54,880 --> 00:25:58,360 nag-uugnay sa mga ito, na bubukas lamang up section sa database. 492 00:25:58,360 --> 00:26:00,860 Kung ikaw ay lamang na tumatakbo kahit na website sa iyong lokal na computer, 493 00:26:00,860 --> 00:26:04,320 ito ay hindi isang super sang-ayon sa mag-alala tungkol sa pagkonekta at disconnecting, 494 00:26:04,320 --> 00:26:06,885 ngunit kung ikaw ay nagpapatakbo ng ito sa isang website, maaari mo 495 00:26:06,885 --> 00:26:10,010 gusto mong siguraduhin na, kapag ang isang user nag-uugnay sa mga ito, kapag isinara nila sa labas 496 00:26:10,010 --> 00:26:12,270 ang website, tanggalin sila upang ikaw hindi magkaroon ng isang grupo ng mga tao na nakakonekta 497 00:26:12,270 --> 00:26:14,480 sa iyong database ng sabay-sabay. 498 00:26:14,480 --> 00:26:16,370 >> At pagkatapos, kapag ikaw ay kumonekta sa database, 499 00:26:16,370 --> 00:26:20,832 na nais mong tawagan db.create_tables, at ilista ang mga modelo para sa kung ano ang gusto mo 500 00:26:20,832 --> 00:26:21,540 upang lumikha ng mga talahanayan. 501 00:26:21,540 --> 00:26:23,950 Kaya dito, gusto ko lang na gumawa nito para sa mag-aaral na ito. 502 00:26:23,950 --> 00:26:28,070 At pagkatapos ay, kung ano ang mahalaga, ay upang tukuyin safe = True karamihan ng oras. 503 00:26:28,070 --> 00:26:30,380 Kaya kung ano ang pahayag na ito ay gawin, ay na ito 504 00:26:30,380 --> 00:26:33,580 lumilikha ng mga talahanayan para sa model ng mag-aaral, ngunit lamang 505 00:26:33,580 --> 00:26:36,109 kung talahanayan na may hindi Nalikha na. 506 00:26:36,109 --> 00:26:37,400 Iyon ay kung ano ang ligtas na tumutukoy. 507 00:26:37,400 --> 00:26:39,150 Kaya ito ay hindi papatungan ang iyong umiiral na table, 508 00:26:39,150 --> 00:26:41,525 ito ay lumikha lamang ng isang bagong mesa kung may ay hindi isa doon. 509 00:26:41,525 --> 00:26:45,090 Kaya, maaari mo lamang lumikha ang mga talahanayan beses gamit ang SQL. 510 00:26:45,090 --> 00:26:49,410 At pagkatapos ay mayroon na database sitting doon, at pagkatapos ay kumonekta sa bawat oras, 511 00:26:49,410 --> 00:26:52,450 ngunit ito ay karaniwang maganda lang na ilagay ito sa create_tables tawag, 512 00:26:52,450 --> 00:26:55,550 nang sa gayon, kung sakaling tatanggalin mo ang iyong kapag database patakbuhin mo ang iyong web 513 00:26:55,550 --> 00:26:57,960 muli app, ito ay muling likhain ito. 514 00:26:57,960 --> 00:27:00,730 >> Kaya, tiyakin na ligtas na lang ay tinukoy upang maging tunay, 515 00:27:00,730 --> 00:27:03,580 o makikita mo ang iyong data lamang pagkuha ng clobbered bawat oras. 516 00:27:03,580 --> 00:27:06,380 At pagkatapos ay, maaari mo lamang tumawag initialize_db na magtatag 517 00:27:06,380 --> 00:27:09,820 isang koneksyon, at lumikha tables kung kinakailangan. 518 00:27:09,820 --> 00:27:13,150 >> Kaya, ang pinaka-karaniwang bagay na kayo ay nais na gawin, 519 00:27:13,150 --> 00:27:15,920 o isa sa mga pinaka-karaniwang mga bagay-bagay, ay ang aktwal na ipasok bagay 520 00:27:15,920 --> 00:27:17,170 sa iyong database. 521 00:27:17,170 --> 00:27:19,430 At ito, sa halip ng pagkakaroon sumulat ng isang insert SA 522 00:27:19,430 --> 00:27:21,990 pahayag sa lahat ng ang mga halaga na tinukoy, 523 00:27:21,990 --> 00:27:24,650 Maaari mong aktwal na tawag function sa ang mag-aaral klase. 524 00:27:24,650 --> 00:27:28,200 Kaya, kapag lumikha ka ng isang klase na nagmamana mula model, 525 00:27:28,200 --> 00:27:30,200 ito ay may ganitong lumikha method. 526 00:27:30,200 --> 00:27:33,870 >> Kaya, gagawin mo klase name.create, at tukuyin mo ang mga parameter 527 00:27:33,870 --> 00:27:35,260 na nais mo upang pumasa sa. 528 00:27:35,260 --> 00:27:39,200 Kaya, kung gusto kong magdagdag ng ilang mga mag-aaral sa aming mga halimbawa CS50 grade book, 529 00:27:39,200 --> 00:27:41,820 Kailangan ko bang ilagay sa David, na may isang napakahusay na grado, siya ay may 95. 530 00:27:41,820 --> 00:27:45,100 At sa sarili ko, kung sino ang hindi paggawa ng kaya na rin sa CS50, mayroon akong isang 50. 531 00:27:45,100 --> 00:27:47,600 At ito, ang ganda ng bagay tungkol kung ano ang ibig lumikha ng function, 532 00:27:47,600 --> 00:27:53,040 ay na ito ay nagbabalik ng mga halimbawa, o ang hilera, na ito na nilikha sa loob ng mga table, 533 00:27:53,040 --> 00:27:55,750 at kaya pagkatapos mong itabi na sa isang variable, at gumagana sa mga ito sa ibang pagkakataon. 534 00:27:55,750 --> 00:27:58,830 Maaari mong baguhin sa paligid, na Kukunin ko ipakita ang isang halimbawa ng. 535 00:27:58,830 --> 00:28:03,050 >> Pansinin na ako ay hindi kailangang tukuyin ang ID, 536 00:28:03,050 --> 00:28:09,340 dahil ito dahil ito ay ang PrimaryKeyField, ito ay awtomatikong 537 00:28:09,340 --> 00:28:10,930 paglakas ito kung hindi mo tukuyin ang mga ito. 538 00:28:10,930 --> 00:28:12,250 At, sa katunayan, ikaw ay malamang na hindi dapat tukuyin ito, 539 00:28:12,250 --> 00:28:14,810 dahil baka hindi mo sinasadyang gumulpi ID ibang tao. 540 00:28:14,810 --> 00:28:16,830 At nais mong gumawa ng siguraduhin na ito ay natatangi. 541 00:28:16,830 --> 00:28:20,662 >> Kaya, talaga, ang pinaka karaniwang bagay na nais mong gawin, 542 00:28:20,662 --> 00:28:22,620 ay malamang na piliin ang ng database sa sandaling ikaw 543 00:28:22,620 --> 00:28:24,078 magkaroon ng isang pulutong ng mga impormasyon sa doon. 544 00:28:24,078 --> 00:28:27,360 At kaya, kung nais mong makakuha ng lahat ng bagay, kaya ang katumbas ng piliin star 545 00:28:27,360 --> 00:28:30,940 mula statement mag-aaral, ito magiging student.select lamang. 546 00:28:30,940 --> 00:28:34,380 At iyon ay magbibigay sa iyo ng likod ng isang array sa lahat ng mag-aaral ng mga bagay sa loob nito 547 00:28:34,380 --> 00:28:35,770 na umulit ka ng higit sa gusto mo. 548 00:28:35,770 --> 00:28:37,019 Maaari kang makakuha ng mga bagay-bagay sa labas ng ito. 549 00:28:37,019 --> 00:28:39,310 At halos lahat ng oras, ikaw hindi lamang ang nais na gawin ang piliin, 550 00:28:39,310 --> 00:28:40,935 talagang gusto mong tukuyin ang isang bagay. 551 00:28:40,935 --> 00:28:44,580 At ito, maaari mong kadena sama ang mga tawag na function, 552 00:28:44,580 --> 00:28:48,830 tulad ng kung paano gagawin mo chain sama-sama ang mga pahayag sa SQL. 553 00:28:48,830 --> 00:28:53,002 Kaya maaari mong gawin student.select (). Kung saan sa halimbawang ito. 554 00:28:53,002 --> 00:28:54,710 At pagkatapos ay, maaari mong tukuyin ang mga kondisyon, 555 00:28:54,710 --> 00:28:57,880 lamang gamit ang normal Python Booleans upang suriin ang mga bagay. 556 00:28:57,880 --> 00:29:02,110 >> Kaya, sa kasong ito, nais mong limitahan kung ano ang iyong pagpili sa, 557 00:29:02,110 --> 00:29:06,790 kung saan student.grade ay katumbas ng 50, at student.name ay katumbas ng Ezra, 558 00:29:06,790 --> 00:29:09,130 kaya lang na kumuha ako sa labas ng ito. 559 00:29:09,130 --> 00:29:11,340 At mapansin, isa talagang mapaglalang bagay dito ay 560 00:29:11,340 --> 00:29:15,570 na, kung nais mong tukuyin ang isang at / at o ang o / o, 561 00:29:15,570 --> 00:29:19,840 sa Python, karaniwan mong ginagamit, Sa tingin ko ang salitang "at" talaga, 562 00:29:19,840 --> 00:29:23,351 ngunit dito mo gamitin ang solong ampersand, na kung saan ay karaniwang isang bitwise operator, 563 00:29:23,351 --> 00:29:25,600 ngunit sa ganitong espesyal na kaso, lamang ang paraan peewee ang ginagawa nito, 564 00:29:25,600 --> 00:29:27,660 gamitin mo ang nag-iisang ampersand upang tukuyin "at." 565 00:29:27,660 --> 00:29:29,451 Iyan ay isang bagay na Ako makakuha ng mixed up ng isang pulutong, 566 00:29:29,451 --> 00:29:32,530 ngunit ito ay hindi dumating up na marami sa pagsasanay. 567 00:29:32,530 --> 00:29:36,350 >> At pagkatapos, sa sandaling mayroon ka ng lahat ng mga ang mga mag-aaral sa labas ng database, 568 00:29:36,350 --> 00:29:39,420 sa sandaling nagawa mo na ikaw ay piliin ang at ang iyong mga damit o kahit na ano, 569 00:29:39,420 --> 00:29:42,334 Maaari mong gamitin ang isang foreach loop, tulad ng normal sa Python, 570 00:29:42,334 --> 00:29:44,500 sa anumang uri ng iterator o sa anumang uri ng array. 571 00:29:44,500 --> 00:29:46,333 Kaya maaari mong gawin, para s sa student.select (). whe 572 00:29:46,333 --> 00:29:52,930 re (Student.grade <75), at iba kalooban ito umulit sa bawat mag-aaral sa talahanayan 573 00:29:52,930 --> 00:29:56,260 na ang grade ay mas mababa sa 75, kung saan sa kasong ito, ay sa akin lamang pa rin. 574 00:29:56,260 --> 00:29:59,218 At pagkatapos ay maaari mong gawin ang isang bagay sa loob ng na loop, tulad ng magpadala sa akin ng isang email 575 00:29:59,218 --> 00:30:01,680 at sabihin sa akin na talagang buksan sa aking Problema Sets. 576 00:30:01,680 --> 00:30:04,550 >> Kaya, isa pang bagay na maaari mong gawin, ay ito ay tunay madali 577 00:30:04,550 --> 00:30:06,460 i-update ang mga hilera sa loob ng table. 578 00:30:06,460 --> 00:30:08,720 Kaya, tandaan bumalik dito, iyong kapag ipinasok ko, 579 00:30:08,720 --> 00:30:11,440 Kinuha ko ang halaga na ibinalik ng student.create, 580 00:30:11,440 --> 00:30:14,920 at itinalaga ko ito sa pangalan na tinatawag na Ezra. 581 00:30:14,920 --> 00:30:18,995 At kaya ngayon, maaari mong baguhin ang mga halaga sa loob ng pagkakataong iyon, 582 00:30:18,995 --> 00:30:20,870 tulad ng gagawin mo sa isang normal class sa Python. 583 00:30:20,870 --> 00:30:25,060 >> Kaya maaari mong itakda ezra.grade = 95 at na i-update ang mga lokal na kopya, 584 00:30:25,060 --> 00:30:28,380 ngunit kung nais niyong magkasala ang pagbabagong iyon sa database, 585 00:30:28,380 --> 00:30:31,410 mayroon kang tumawag ezra.save, kaya tinatawag mo ang .save paraan 586 00:30:31,410 --> 00:30:32,650 sa halimbawa. 587 00:30:32,650 --> 00:30:38,085 >> At kaya ngayon, ako ay matagumpay na nabago ang aking sariling mga grade loob ng database. 588 00:30:38,085 --> 00:30:41,210 Kaya, pagkatapos sabihin natin na ako makakakuha ng nahuli pagbabago ng aking grade sa loob ng database. 589 00:30:41,210 --> 00:30:44,126 Professor Malan ay marahil pagpunta sa gusto mong tanggalin mo ako sa mga klase, 590 00:30:44,126 --> 00:30:48,630 at sa gayon maaari mong tawagin ang .delete halimbawa paraan lamang sa bagay na iyon. 591 00:30:48,630 --> 00:30:51,674 >> Kaya, kung nais mong pumunta sa bumalik sa loop na ito dito, 592 00:30:51,674 --> 00:30:53,465 at talagang, sa halip ng pagpapadala ng mga email sa lahat 593 00:30:53,465 --> 00:30:56,577 ng mag-aaral na grade ay mas mababa sa 75, gusto mo bang tanggalin ang mga ito, 594 00:30:56,577 --> 00:30:58,660 sa loob ng loop dati mo tumawag s.delete halimbawa. 595 00:30:58,660 --> 00:31:04,180 596 00:31:04,180 --> 00:31:07,780 At ang huling bagay na nais mong gawin, ay tuwing ikaw ay magtatag ng isang koneksyon, 597 00:31:07,780 --> 00:31:10,350 at tapos ka na sa iyong trabaho, na nais mong tawagan db.close, 598 00:31:10,350 --> 00:31:13,190 kung saan db ay na database bagay na namin ay may bago. 599 00:31:13,190 --> 00:31:18,290 At gusto mong tiyakin na ang ang lahat ng bagay ay makakakuha ng sarado labas ng. 600 00:31:18,290 --> 00:31:18,790 >> Cool. 601 00:31:18,790 --> 00:31:22,410 Kaya ngayon, mayroon akong isang halimbawa ng application. 602 00:31:22,410 --> 00:31:26,880 Na uri ng mga pre-ginawa ko lahat ng bagay lamang upang doon ay hindi anumang mga live na coding 603 00:31:26,880 --> 00:31:30,220 mga pagkakamali, ngunit maaari naming sa pamamagitan ng paglalakad ito at makita kung paano mo ilagay Flask 604 00:31:30,220 --> 00:31:33,685 at Peewee magkasama, at gumawa ng isang simpleng app. 605 00:31:33,685 --> 00:31:38,680 Tawag ko ito CS50 sigaw, at ito ay uri ng isang simpleng platform blog. 606 00:31:38,680 --> 00:31:41,150 >> Kaya, una, makikita ko bang patakbuhin ang mga ito at ipakita kung ano ang mukhang, 607 00:31:41,150 --> 00:31:42,890 at pagkatapos ay maaari naming tumingin pa sa mga code. 608 00:31:42,890 --> 00:32:00,470 609 00:32:00,470 --> 00:32:02,830 Okay, patakbuhin lang ito kaya hayaan. 610 00:32:02,830 --> 00:32:14,040 611 00:32:14,040 --> 00:32:17,250 Cool, kukunin ko na gawin ito isang maliit na piraso ng mas maliit. 612 00:32:17,250 --> 00:32:20,000 Ito ay hindi masyadong pretty, dahil lang Hindi ko gumawa ng isang pulutong ng CSS, 613 00:32:20,000 --> 00:32:23,255 ngunit kung ano ang ginagawa nito ay, ito ay database na ito ng mga post sa blog, 614 00:32:23,255 --> 00:32:25,630 at ito ay pumunta sa pamamagitan ng lahat ng mga ang mga ito, at ito ay ipakita ang mga ito 615 00:32:25,630 --> 00:32:28,170 sa pahina sa pagkakasunud-sunod ng mga pinakabagong. 616 00:32:28,170 --> 00:32:30,920 At kaya ito ay ang ilan post lang na ako ay naka-save sa database. 617 00:32:30,920 --> 00:32:35,680 >> Kaya kung nais namin na lumikha ng isang bagong post, maaari naming pumunta sa Magdagdag ng Bagong Post, 618 00:32:35,680 --> 00:32:42,720 at maaari naming ipasok ang pamagat ng post, kaya ang isang bagay tulad ng, CS50 seminar. 619 00:32:42,720 --> 00:32:45,360 620 00:32:45,360 --> 00:32:46,735 Wow, talagang tinatangkilik ang mga seminar. 621 00:32:46,735 --> 00:32:51,070 622 00:32:51,070 --> 00:32:52,270 >> Cool. 623 00:32:52,270 --> 00:32:56,060 Pagkatapos ay pindutin mo post, at ito ay Ire-redirect ka pabalik sa home page, 624 00:32:56,060 --> 00:33:00,039 at pagkatapos ay makikita mo na ang pinakabagong post ay idinagdag. 625 00:33:00,039 --> 00:33:01,580 At mayroon pa rin kaming lahat ang mga naroon. 626 00:33:01,580 --> 00:33:08,080 Kaya ngayon, sabihin hakbang sa pamamagitan ng lahat ng ipaalam code at tingnan kung paano ito ay ipinatupad. 627 00:33:08,080 --> 00:33:11,995 >> Kaya, sa tingin ko ang unang bagay na sabihin tingnan ang, ay talagang ang mga modelo. 628 00:33:11,995 --> 00:33:14,120 Ang isang pulutong ng mga oras, kapag ikaw ay pagdisenyo ng isang bagay, 629 00:33:14,120 --> 00:33:17,036 Gusto mong mag-isip muna tungkol sa kung paano ikaw ay pagpunta sa kumakatawan sa iyong data, 630 00:33:17,036 --> 00:33:22,915 at pagkatapos ay disenyo ng mga bagay sa paligid na, upang ang lahat ng bagay na may katuturan. 631 00:33:22,915 --> 00:33:25,290 At iyon ay talagang kung paano ko ginawa ito kapag ako ay paggawa ng mga ito, 632 00:33:25,290 --> 00:33:28,030 Naupo ako at naisip, ano ang gagawin ko gusto sa isang post. 633 00:33:28,030 --> 00:33:32,130 >> Kaya, narito, kami ay ang parehong istraktura na ako ay pagbanggit nang mas maaga, 634 00:33:32,130 --> 00:33:33,755 kung saan tayo db = Sqldatabase ('posts.db'). 635 00:33:33,755 --> 00:33:37,840 636 00:33:37,840 --> 00:33:40,980 Sa katotohanan, marahil ay hindi mo nais sa hard code sa mga database ng iyong pangalan. 637 00:33:40,980 --> 00:33:43,730 Na dapat na marahil ay isang parameter na naka-imbak sa isang lugar, baka 638 00:33:43,730 --> 00:33:45,940 sa isang config file, ngunit sa isang maliit na halimbawa na ito, 639 00:33:45,940 --> 00:33:48,310 okay lang na hard code na in. 640 00:33:48,310 --> 00:33:53,510 >> Kaya ngayon, kami ay may ito Post class, na nagmamana mula sa base model. 641 00:33:53,510 --> 00:33:56,930 At ito ay, muli, ang mga ID = PrimaryKeyField. 642 00:33:56,930 --> 00:34:02,250 Sa totoo lang, kung hindi mo tukuyin, kung ako aktwal got alisan ng ito, 643 00:34:02,250 --> 00:34:07,152 pagkatapos Peewee kami ang bahala sa awtomatikong paglikha na field ID, 644 00:34:07,152 --> 00:34:09,360 at ito ay awtomatikong gawin itong isang PrimaryKey, na 645 00:34:09,360 --> 00:34:12,485 Sa tingin ko ay talagang maganda, dahil kadalasan, na ang isang bagay na gusto mong magkaroon, 646 00:34:12,485 --> 00:34:16,239 pero gusto ko upang ilagay ito sa partikular, kaya lang ako tandaan na ito ay sa doon. 647 00:34:16,239 --> 00:34:19,480 Ngunit kung hindi mo tukuyin iyon, na magiging awtomatikong doon. 648 00:34:19,480 --> 00:34:22,198 >> Kaya nga, ako ay may isang petsa na kung saan ay isang DateTimeField, at ang lahat 649 00:34:22,198 --> 00:34:24,864 mga iba't-ibang larangan, kung ikaw tingnan ang peewee babasahin, 650 00:34:24,864 --> 00:34:28,920 ito ay magbibigay sa iyo ng isang listahan ng mga iba't-ibang uri ng mga patlang na maaari mong gamitin. 651 00:34:28,920 --> 00:34:34,440 Para sa nakararaming bahagi, ito ay kahalintulad sa kung ano ang nais mong makita sa SQL. 652 00:34:34,440 --> 00:34:37,699 Kaya may isang CharField, isang VarCharFields, textfields, 653 00:34:37,699 --> 00:34:40,550 na kung saan ay para sa napaka-haba teksto, tulad ng isang blog post 654 00:34:40,550 --> 00:34:44,460 potensyal na, DateTimeFields, DoubleFields, FloatFields, 655 00:34:44,460 --> 00:34:46,100 lahat ng mga bagay na tulad ng. 656 00:34:46,100 --> 00:34:51,570 >> At maaari mong ipasa sa iba pang mga argumento sa mga ito, na kung saan hindi ko tukuyin dito. 657 00:34:51,570 --> 00:34:55,719 Sabihin nating, halimbawa, ikaw ay hindi nais na payagan ang dalawang mga post na may parehong pamagat, 658 00:34:55,719 --> 00:34:59,672 maaari mong tukuyin ang isang bagay tulad ng mga natatanging = True, 659 00:34:59,672 --> 00:35:02,880 at ito lamang ang isang dagdag na parameter sa larangan na kapag ito compiles ito pababa 660 00:35:02,880 --> 00:35:06,865 sa SQL, ito ay tinukoy na ito ay may na maging kakaiba. 661 00:35:06,865 --> 00:35:09,740 Maaari mo ring tukuyin ang isang bagay tulad hindi null at ang lahat ng iba pang mga bagay 662 00:35:09,740 --> 00:35:11,750 karaniwan mong gawin sa SQL. 663 00:35:11,750 --> 00:35:16,020 Kaya, ito ay isang medyo simple modelo na may mga petsa. 664 00:35:16,020 --> 00:35:19,460 Pansinin dito, sa loob ng DateTimeField, Tinukoy ko kung ano ang default ay. 665 00:35:19,460 --> 00:35:22,560 Tinukoy ko ito upang maging datetime.datetime.now, 666 00:35:22,560 --> 00:35:24,920 dahil sa mga paraan na ito ay makakakuha ng sinusuri, 667 00:35:24,920 --> 00:35:28,750 ito ang tunay na sinusuri ang DateTime.Now kapag 668 00:35:28,750 --> 00:35:32,110 ito ay makakakuha ng ipinasok sa database. 669 00:35:32,110 --> 00:35:34,760 >> Sa tingin ko na, gusto ko i-double check na ito, 670 00:35:34,760 --> 00:35:38,222 ngunit kung ikaw ay isang bagay na tulad nito, at pagkatapos ay ito ay tunay na suriin na ang isang beses, 671 00:35:38,222 --> 00:35:40,180 at pagkatapos ay ang DateTime ay laging pareho. 672 00:35:40,180 --> 00:35:44,240 Kaya, lamang kung ikaw ay gumagawa ng isang bagay may datetimes, double check 673 00:35:44,240 --> 00:35:47,080 na ito ay pag-evaluate nang talagang makakakuha ng nakapasok, o iba pa 674 00:35:47,080 --> 00:35:48,780 ikaw ay maaaring maging nalilito. 675 00:35:48,780 --> 00:35:51,221 >> Ang pamagat ay lamang ng isang CharField, na mayroong 676 00:35:51,221 --> 00:35:53,970 ay mas arguments maaari mong ipasa sa pagtukoy ng eksaktong kung gaano katagal mo 677 00:35:53,970 --> 00:35:56,170 gusto mo itong maging, ngunit dito, hindi ito ay talagang mahalaga. 678 00:35:56,170 --> 00:35:58,687 At Text ay magiging ang teksto ng buong post, 679 00:35:58,687 --> 00:36:01,020 at iyan ay magiging isang TextField lamang dahil nais mong 680 00:36:01,020 --> 00:36:03,370 upang payagan ang mga ito upang maging isang medyo matagal na string. 681 00:36:03,370 --> 00:36:05,970 >> Pagkatapos kami ay may ito Meta subclass na lamang 682 00:36:05,970 --> 00:36:11,250 tumutukoy na gusto namin ang mga database kung saan ito ay aktwal na nagbukas sa 683 00:36:11,250 --> 00:36:14,267 na ang db object na mayroon kami dito. 684 00:36:14,267 --> 00:36:16,350 At huling bagay na kailangan nating dito, ay lamang ang function na ito 685 00:36:16,350 --> 00:36:18,120 na namin ang pagpunta sa gamitin mula sa aming pangunahing app 686 00:36:18,120 --> 00:36:23,970 upang magpasimula ang database upang kumonekta sa mga ito, at pagkatapos sa Lumikha ng talahanayan Post. 687 00:36:23,970 --> 00:36:26,880 >> Ngayon, tingnan natin ang pangunahing app mismo. 688 00:36:26,880 --> 00:36:30,800 Kaya ang isang ito ay ganap ng isang bit mas mahaba kaysa sa mga bago 689 00:36:30,800 --> 00:36:34,840 na nakita natin dati, ngunit sana ay hindi masyadong masama. 690 00:36:34,840 --> 00:36:37,140 Kaya, hayaan mo akong i-extend ito out. 691 00:36:37,140 --> 00:36:38,370 Sige. 692 00:36:38,370 --> 00:36:42,070 >> Kaya, mapapansin at ang top ko import ng buong bungkos ng iba pang mga bagay 693 00:36:42,070 --> 00:36:44,129 mula sa prasko na mayroon kaming hindi talagang makikita bago. 694 00:36:44,129 --> 00:36:46,670 At sana, maaari naming pumunta sa pamamagitan ng ang bawat isa sa mga ito ng isa-isa 695 00:36:46,670 --> 00:36:49,420 at makipag-usap ng kaunti pa tungkol sa kanila, pinagsunod-sunod sa pamamagitan ng halimbawa. 696 00:36:49,420 --> 00:36:51,380 Kaya, kami ay ang prasko, at ang render_template, 697 00:36:51,380 --> 00:36:54,370 na kung saan na nakita natin dati, ang hiling na bagay, 698 00:36:54,370 --> 00:37:00,400 na kung saan ay lumapit kapag tinitingnan namin ang kung paano ang form na aktwal na ako ay nagpapakita 699 00:37:00,400 --> 00:37:01,170 gumagana. 700 00:37:01,170 --> 00:37:04,850 Pag-redirect, na nagbibigay-daan sa pag-redirect ka pabalik mula sa Lumikha ng Bagong Post 701 00:37:04,850 --> 00:37:11,710 i-back sa orihinal na homepage, at pagkatapos ay URL, na kung saan ay isang bagay na nagbibigay-daan sa iyo 702 00:37:11,710 --> 00:37:15,550 malaman kung saan sa website ng isang partikular na pahina ay. 703 00:37:15,550 --> 00:37:17,810 >> Kaya nga, ang susunod na bagay na gagawin ko, ay ko import 704 00:37:17,810 --> 00:37:21,550 lahat ng mga impormasyon mula sa mga Models file na kami ay lamang ng pagtingin sa. 705 00:37:21,550 --> 00:37:23,140 At, oo. 706 00:37:23,140 --> 00:37:28,720 >> Kaya, sa ibang bagay bagong na nanggagaling up kapag ikaw ay pagharap sa, 707 00:37:28,720 --> 00:37:31,850 lalo na mga database, ay na maaari mong tukuyin ang 708 00:37:31,850 --> 00:37:35,110 isang function na ay makakakuha ng tinatawag na bago bawat kahilingan, at pag-andar na nakukuha 709 00:37:35,110 --> 00:37:39,690 tinawag ayon sa bawat kahilingan, gamit na ito request function na decorator app.before. 710 00:37:39,690 --> 00:37:42,324 >> At kaya ito ay naisasagawa nasaan ang function na ito ay. 711 00:37:42,324 --> 00:37:44,240 Na ito ay hindi kailangang maging tinatawag na bago kahilingan, 712 00:37:44,240 --> 00:37:46,281 ngunit kadalasan ay iyon ang isang bagay kapansin-pansin sa mga tawag na ito. 713 00:37:46,281 --> 00:37:48,580 714 00:37:48,580 --> 00:37:51,650 Maaari mong tukuyin ang anumang mga function nais mong makakuha ng tinatawag doon, 715 00:37:51,650 --> 00:37:56,330 kaya tinukoy ko ito initialize_db function na nagkaroon kami pabalik sa Models 716 00:37:56,330 --> 00:38:02,390 file, kaya bago ang bawat kahilingan, ikaw Gusto upang kumonekta sa database. 717 00:38:02,390 --> 00:38:04,560 >> Mayroong dalawang magkaibang mga paraan na maaari mong gawin ito. 718 00:38:04,560 --> 00:38:10,830 Maaari mong gawinapp., I naniniwala ito ay after_request. 719 00:38:10,830 --> 00:38:13,800 At ang mga pagkakaiba sa pagitan ng after_request at teardown_request, 720 00:38:13,800 --> 00:38:17,590 ay na after_request mangyayari lamang kung ang kahilingan ay talagang ay may-bisa. 721 00:38:17,590 --> 00:38:20,440 At kaya, kapag lamang ang hiling ay matagumpay, 722 00:38:20,440 --> 00:38:22,490 kung walang nangyaring mali, ngunit teardown_request 723 00:38:22,490 --> 00:38:26,300 ang mangyayari sa kaso ng isang matagumpay na kahilingan, o sa kaso ng isang error. 724 00:38:26,300 --> 00:38:28,252 >> So, kadalasan, na nais mong gamitin teardown_request, 725 00:38:28,252 --> 00:38:30,460 maliban na lamang kung gusto mong gawin isang bagay, lalo iba't ibang 726 00:38:30,460 --> 00:38:31,470 sa kaso ng isang error. 727 00:38:31,470 --> 00:38:35,122 Ngunit lamang para sa pagsasara ng database, maging ito man ay magtagumpay o kung ito ay nabigo, 728 00:38:35,122 --> 00:38:37,080 ginagawa namin na gusto mong alisin sa pagkakakonekta mula sa database. 729 00:38:37,080 --> 00:38:41,240 Kaya ang tawag dito, db.close sa db object. 730 00:38:41,240 --> 00:38:43,740 >> Pansinin na ang teardown_request tumatagal sa isang exception. 731 00:38:43,740 --> 00:38:46,781 Kaya maaari mong suriin kung nagkaroon talaga ng isang error kapag ito ay isinasara down, 732 00:38:46,781 --> 00:38:49,390 ngunit dito, sana, may ay hindi isang buong pulutong ng mga error, 733 00:38:49,390 --> 00:38:52,720 kaya kami ay lamang ang uri ng hindi papansin na. 734 00:38:52,720 --> 00:38:55,990 >> Okay, at ang iba sa mga ito ay hindi masyadong masama. 735 00:38:55,990 --> 00:39:02,240 Kaya, kapag pumunta kami sa home page, render namin ito home.html Template 736 00:39:02,240 --> 00:39:03,490 na buksan up. 737 00:39:03,490 --> 00:39:06,240 Pass ay sa post pantay-pantay sa, at kung ano ang 738 00:39:06,240 --> 00:39:10,260 ay ay, tandaan na namin ang post na ito modelo, kaya piliin namin ang lahat ng mga post, 739 00:39:10,260 --> 00:39:13,890 at pagkatapos ay isa pang bagay na maaari mong gawin, maaari mong tukuyin ang SAAN sugnay, 740 00:39:13,890 --> 00:39:16,910 maaari mong tukuyin ang isang order sa pamamagitan ng, at kaya ginagawa namin 741 00:39:16,910 --> 00:39:18,820 lahat ng mga post na makakuha ng pinili, at pagkatapos 742 00:39:18,820 --> 00:39:22,590 kami order ng mga ito sa pamamagitan ng post.date.descending. 743 00:39:22,590 --> 00:39:25,030 At iyon ay tukuyin, nang sila ay talagang lumabas, 744 00:39:25,030 --> 00:39:29,250 ang pinakabagong isa ay magiging lubhang unang isa. 745 00:39:29,250 --> 00:39:31,420 >> At pagkatapos, ipasa namin na sa ang template home.html, 746 00:39:31,420 --> 00:39:34,240 kaya sabihin aktwal na magbukas na Template talagang mabilis, 747 00:39:34,240 --> 00:39:36,760 at kumuha ng isang pagtingin sa kung paano na gumagana. 748 00:39:36,760 --> 00:39:42,130 At ito ay hindi mahusay na HTML, ngunit sana, maaari naming tumuon sa mga Python. 749 00:39:42,130 --> 00:39:46,960 >> Kaya mayroong isang link sa Magdagdag ng Bagong Post, at kaya ito ang tumutukoy sa mga ruta 750 00:39:46,960 --> 00:39:51,580 sa loob ng prasko na tayo tukuyin, kung saan ay karapatan dito. 751 00:39:51,580 --> 00:39:56,310 Ito ang bagong ruta post, at tukuyin natin na hanggang dito. 752 00:39:56,310 --> 00:40:00,450 At nang sa gayon ay isang link na pagkatapos ay pumunta sa na ruta sa loob ng prasko server. 753 00:40:00,450 --> 00:40:03,820 >> Ang mas maraming mga kagiliw-giliw na bagay ay ito para sa loop dito. 754 00:40:03,820 --> 00:40:07,685 Kaya tukuyin natin na ito post parameter na 755 00:40:07,685 --> 00:40:09,560 ay dumaan sa render_template function, 756 00:40:09,560 --> 00:40:13,550 para sa bawat post sa post ni bagay na makakakuha ng lumipas sa. 757 00:40:13,550 --> 00:40:16,600 Gusto naming i-print out ang pamagat ng post, sa H1, 758 00:40:16,600 --> 00:40:21,930 at pagkatapos ay sa ibaba, gusto naming i-print out ang post na teksto sa loob ng isang talata. 759 00:40:21,930 --> 00:40:25,710 >> At dito, maaari naming aktwal tumawag sa isang Python function, 760 00:40:25,710 --> 00:40:35,130 upang maaari naming tumawag strftime, ST-RF-time, at maaari mong ipasa sa format string 761 00:40:35,130 --> 00:40:37,064 na nais mong i-print ang data out in. 762 00:40:37,064 --> 00:40:39,980 Kaya ito ay ay medyo magaling na maaari mong talagang itawag sa Python pag-andar 763 00:40:39,980 --> 00:40:41,090 mula sa loob dito. 764 00:40:41,090 --> 00:40:44,370 Hindi mo na kailangang gawin ang pag-format sa ang controller side, dahil talagang, 765 00:40:44,370 --> 00:40:47,770 pag-format ang mga petsa ay isang bagay na nais mong pakikitungo sa loob ng View. 766 00:40:47,770 --> 00:40:51,480 >> At lahat ng mga porsiyento mga bagay-bagay ay hindi sobrang mahalaga. 767 00:40:51,480 --> 00:40:55,270 Kung titingnan mo ang mga babasahin para sa strftime function sa Python, 768 00:40:55,270 --> 00:40:57,040 tinutukoy nito ang lahat ng mga mga bagay-bagay, ngunit na ni 769 00:40:57,040 --> 00:40:59,190 kung paano, kapag kami ay naghahanap sa home page dito, 770 00:40:59,190 --> 00:41:04,440 format ito sa isang masarap na petsa, at ito ang tumutukoy AM o PM, 771 00:41:04,440 --> 00:41:09,410 ngunit karaniwan, kung tayo ay hindi na ito dito, 772 00:41:09,410 --> 00:41:14,024 ikaw ay malamang na makakuha ng ilang mga basura date na hindi hitsura napakabuti. 773 00:41:14,024 --> 00:41:15,940 At pagkatapos ay tukuyin natin ang post.text, maaaring at ako 774 00:41:15,940 --> 00:41:19,460 may maglagay ng isang pares ng mga line break dito, lamang 775 00:41:19,460 --> 00:41:21,820 upang ilagay ang ilang mga puwang sa pagitan ng bawat post. 776 00:41:21,820 --> 00:41:26,270 >> Kaya, tingin ko ang pinaka-mahalaga bagay sa halimbawang ito, 777 00:41:26,270 --> 00:41:28,697 ay na maaari mong gamitin ito para sa loop. 778 00:41:28,697 --> 00:41:30,780 At ito ay kahalintulad sa mga bagay na maaari mong gawin sa PHP. 779 00:41:30,780 --> 00:41:32,905 Maaari mong ulitin sa pamamagitan ng, ang lahat ng bagay ay makakakuha ng lumipas sa, 780 00:41:32,905 --> 00:41:36,719 at sa gayon, sa halip ng pagkakaroon na gawin copy / paste, kopyahin / ilagay ang lahat ng mga HTML, 781 00:41:36,719 --> 00:41:40,010 ikaw lamang na isulat ang mga ito nang isang beses, at pagkatapos ay maaari mong ulitin sa lahat ng mga post. 782 00:41:40,010 --> 00:41:41,510 >> At ito ay isang bagay na pangkaraniwan na nais mong 783 00:41:41,510 --> 00:41:44,510 na gawin, kapag mayroon kang isang pulutong ng mga data, ay na para sa lahat sa iyong data, 784 00:41:44,510 --> 00:41:48,370 na nais mong gawin ng isang katulad na bagay. 785 00:41:48,370 --> 00:41:51,690 At pagkatapos, tandaan lamang, na kapag ikaw nais na i-print out ang isang bagay tahasan 786 00:41:51,690 --> 00:41:54,780 sa HTML, gamitin mo ang double braces dito, 787 00:41:54,780 --> 00:41:57,820 ngunit pagkatapos ay kapag nais mong tukuyin ang ilang impormasyon tungkol sa isang kondisyon, 788 00:41:57,820 --> 00:42:02,430 o tungkol sa isang para sa loop, ikaw gamitin ang porsyento bracket. 789 00:42:02,430 --> 00:42:08,730 >> Kaya, balik sa Python code, kaya na nagpapaliwanag 790 00:42:08,730 --> 00:42:12,242 kung ano ang nangyayari sa pangunahing ruta, kapag pumunta kami doon, 791 00:42:12,242 --> 00:42:14,450 ito lamang ay nagpapakita ng lahat ng mga post, ngunit pagkatapos ay ang tanong 792 00:42:14,450 --> 00:42:17,440 ay, paano namin talagang makakuha ng post sa database, na kung saan 793 00:42:17,440 --> 00:42:18,970 ay isang maliit na kaunti pang mga kagiliw-giliw. 794 00:42:18,970 --> 00:42:23,960 >> Kaya, kapag nag-click ang Bagong Post link, na kung saan nakita namin dito, 795 00:42:23,960 --> 00:42:26,000 Nagre-redirect mo ito sa form na ito. 796 00:42:26,000 --> 00:42:29,580 At ito lamang ay isang simpleng tawag sa render_template function, kung saan pagkatapos ay 797 00:42:29,580 --> 00:42:32,110 pumasa sa bagong post sa HTML form. 798 00:42:32,110 --> 00:42:36,212 Kaya sabihin kumuha ng isang pagtingin sa na. 799 00:42:36,212 --> 00:42:37,420 Kaya ang isang ito ay medyo simple. 800 00:42:37,420 --> 00:42:45,110 Ito ay isang simpleng HTML form, na kung saan ang magiging hitsura ng isang maliit na piraso pamilyar, 801 00:42:45,110 --> 00:42:47,380 batay sa mga form sa CS50 Finance. 802 00:42:47,380 --> 00:42:49,940 At ito, tukuyin natin dito, ang mga aksyon. 803 00:42:49,940 --> 00:42:52,435 At dito, kung ikaw ay nagtatrabaho sa PHP, normal, ito 804 00:42:52,435 --> 00:42:55,930 ay magiging isang bagay tulad ng, create.PHP, ngunit dito 805 00:42:55,930 --> 00:42:59,960 aktwal na namin tukuyin ang isang ruta sa loob ng prasko server. 806 00:42:59,960 --> 00:43:02,520 At ito, ay tumutugma sa rutang ito sa lumikha ng ruta 807 00:43:02,520 --> 00:43:05,680 na mayroon kami dito, na kami ay pumunta sa sa isang segundo. 808 00:43:05,680 --> 00:43:07,630 >> At ito, tukuyin natin na ito ay isang paraan ng post, 809 00:43:07,630 --> 00:43:09,820 dahil gusto naming ipadala ang data na ito form, at karaniwan 810 00:43:09,820 --> 00:43:12,945 kapag kayo ay nagpapadala ng data mula sa isang form, baka gusto mong gamitin ang isang kahilingan ng post, 811 00:43:12,945 --> 00:43:15,760 kaya lang hindi mo end up na may ganitong malaking, mahirap gamitin URL. 812 00:43:15,760 --> 00:43:18,970 Ngunit maaari mo ring gamitin ang isang GET kahilingan, at pumasa ito sa sa mga variable ng routing, 813 00:43:18,970 --> 00:43:21,170 ngunit para sa mga form, ito ay maganda sa isang kahilingan post dito. 814 00:43:21,170 --> 00:43:24,620 At kaya pagkatapos, tulad mo nais gawin sa HTML at PHP, 815 00:43:24,620 --> 00:43:28,420 maaari mong tukuyin ang mga input ng teksto, at maaari mong tukuyin ang pangalan ng mga ito, 816 00:43:28,420 --> 00:43:33,490 at iyon ang pangalan na makakuha ng lumipas sa bagay na kahilingan sa loob ng prasko. 817 00:43:33,490 --> 00:43:36,960 >> At pagkatapos ay isang namin Isumite pindutan na nagsasabing Post. 818 00:43:36,960 --> 00:43:40,760 At dito, Post ay ang pangalan ng button, dahil sa ito ay isang blog post, 819 00:43:40,760 --> 00:43:42,700 ngunit dito, post ay ang paraan kahilingan. 820 00:43:42,700 --> 00:43:47,060 Kaya ang mga ay ang parehong salita pero sa totoo hindi kaugnay. 821 00:43:47,060 --> 00:43:48,460 Oo 822 00:43:48,460 --> 00:43:54,800 >> Balik sa Python code, kapag tinatawag namin ang lumikha ng paraan, 823 00:43:54,800 --> 00:43:57,702 mapapansin dito na maaari mong talagang tukuyin sa loob ng ruta 824 00:43:57,702 --> 00:44:00,650 mga pamamaraan ng kahilingan na nais mong tanggapin, 825 00:44:00,650 --> 00:44:04,770 at kaya dito, tukuyin ko na ako lamang ang nais na tanggapin ang isang paraan ng Post. 826 00:44:04,770 --> 00:44:09,800 Kaya, kung ang tunay kong subukan upang bisitahin ang pahina direkta, na kung saan ay gumagamit ng isang GET kahilingan, 827 00:44:09,800 --> 00:44:11,700 ito ay sabihin sa akin "Hindi pinayagan ang pamamaraan." 828 00:44:11,700 --> 00:44:15,840 >> At ito, ikaw ay may mga pahina, uri ng tulad ng sa pahinang lumikha, na lamang ako 829 00:44:15,840 --> 00:44:20,192 tunay na gamit bilang isang paraan para ang form na ito upang makakuha isinumite, 830 00:44:20,192 --> 00:44:22,900 maaari mong tukuyin na hindi mo gusto mga tao upang ma-pumunta doon 831 00:44:22,900 --> 00:44:25,650 nang direkta sa pamamagitan ng isang kahilingan GET, o kung hindi mo gusto, 832 00:44:25,650 --> 00:44:28,580 para sa ilang kadahilanan, ang isang kahilingan Post, maaari mo lamang tukuyin GET dito, 833 00:44:28,580 --> 00:44:32,720 ngunit sa halimbawang ito, namin lamang gusto ang kahilingan Post na lumabas. 834 00:44:32,720 --> 00:44:38,700 >> Kaya, kapag create_post ay tinatawag na, kapag bisitahin kami na sa pamamagitan ng kahilingan Post, 835 00:44:38,700 --> 00:44:43,600 tuwing pumupunta ka sa isang partikular na ruta, may kahilingang ito object, 836 00:44:43,600 --> 00:44:46,640 at kami ay mag-i-import mga kahilingan sa tuktok very, 837 00:44:46,640 --> 00:44:49,640 ngunit may kahilingang ito bagay na makakakuha ng lumipas sa, 838 00:44:49,640 --> 00:44:53,210 at maaari mong ma-access ang data ng form, kung saan ay awtomatikong makakuha ng puno 839 00:44:53,210 --> 00:44:55,070 kapag ikaw ay magpadala ng isang kahilingan mula sa isang form. 840 00:44:55,070 --> 00:44:56,990 >> At pagkatapos ay, kung ano ang tingin ko ay talagang cool, ay 841 00:44:56,990 --> 00:45:02,840 na ang mga bagay na form upang makakuha ng lumipas in, ay isang diksyunaryo lang sawa na 842 00:45:02,840 --> 00:45:10,560 naglalaman ng, kung access-- mo kaya dito, ipaalam akin hilahin pataas ang HTML sa tabi nito, lamang 843 00:45:10,560 --> 00:45:17,670 upang maaari mong magkaroon ng na bilang isang sanggunian, oo, kaya 844 00:45:17,670 --> 00:45:21,060 ang mga pangalan na aming tinukoy dito para sa iba't-ibang larangan, para 845 00:45:21,060 --> 00:45:23,900 ang pamagat at ang teksto, kami ay pagkatapos lamang gamitin ang mga banda rito 846 00:45:23,900 --> 00:45:27,110 bilang mga indeks sa data ng form. 847 00:45:27,110 --> 00:45:28,950 Kaya na super maginhawa. 848 00:45:28,950 --> 00:45:33,320 >> Kaya nga ang tawag namin post.create, na Lilikha at awtomatikong magsingit 849 00:45:33,320 --> 00:45:36,850 ito ng mga bagong post object papunta sa database. 850 00:45:36,850 --> 00:45:40,690 At sa tingin ko ito lumikha ng function dito ay isang tunay na cool na halimbawa ng kung paano 851 00:45:40,690 --> 00:45:44,900 malakas Prasko ay at nagtatrabaho sa mga ito, dahil kung ikaw ay paggawa ng isang bagay 852 00:45:44,900 --> 00:45:48,660 sa PHP, maaaring mayroon ka na gawin ang isang pulutong ng mga pagpapatunay, 853 00:45:48,660 --> 00:45:51,730 gusto mo na pagkatapos makapagtatag ng koneksyon sa database, 854 00:45:51,730 --> 00:45:55,210 gusto mo na pagkatapos maipatupad ang SQL query, 855 00:45:55,210 --> 00:45:59,550 ngunit dito kami na lang ang ganda ng post.create, na pagkatapos ay maaari naming lamang 856 00:45:59,550 --> 00:46:01,520 makakuha ng impormasyon out ng kahilingan object, 857 00:46:01,520 --> 00:46:05,370 at pagkatapos ay ipasa ang mga ito sa isang bagong mag-post na namin ang paglikha. 858 00:46:05,370 --> 00:46:07,850 >> At pagkatapos, sa huling bagay na gusto naming gawin, 859 00:46:07,850 --> 00:46:09,630 ay upang i-redirect ang mga user pabalik sa bahay. 860 00:46:09,630 --> 00:46:13,020 At kaya kami ay gumagamit na ito Pag-redirect Prasko function. 861 00:46:13,020 --> 00:46:17,770 At ang isang bagay na hindi namin nakita bago, ay ang function na URL. 862 00:46:17,770 --> 00:46:21,970 Kaya ang URL para sa pag-andar ay nagbibigay-daan pumasa ka sa tunay na pangalan 863 00:46:21,970 --> 00:46:26,090 ng isang function sa iyong Python code, sa halip na ang partikular na ruta 864 00:46:26,090 --> 00:46:26,720 na ito ay sa. 865 00:46:26,720 --> 00:46:32,107 >> Kaya maaari ko na lang na kasindali redirect sa isang gumagamit upang mabawasan nang malaki, 866 00:46:32,107 --> 00:46:37,050 na kung saan ay ipadala ito pabalik sa bahay, ngunit gamit ang URL para sa function na ay nice, 867 00:46:37,050 --> 00:46:39,990 dahil kung babaguhin mo ang lokasyon kung saan bagay ang, 868 00:46:39,990 --> 00:46:44,080 kaya sabihin natin na baguhin ko ang bahay na sa / home sa halip, 869 00:46:44,080 --> 00:46:47,040 ito ay pagkatapos ay bumalik pa rin / bahay, dahil ang tunay na napupunta at mukhang up 870 00:46:47,040 --> 00:46:50,770 ang pangalan ng function, at ito ay magbibigay-back mo ang URL para sa na. 871 00:46:50,770 --> 00:46:52,490 >> Kaya, uri ng sa palagay na ikaw ay 872 00:46:52,490 --> 00:46:55,489 mas malamang na baguhin kung saan bagay ay, sa mga pangalan ng mga pag-andar. 873 00:46:55,489 --> 00:46:58,840 Maaari mong gamitin ito talaga magandang URL para sa function. 874 00:46:58,840 --> 00:47:02,470 At ang isang bagay na dapat malaman iyon ay isang maliit na bit nakakalito, 875 00:47:02,470 --> 00:47:05,750 ay na sa tingin mo ay maaaring mo lamang tumawag-redirect sa URL para sa, 876 00:47:05,750 --> 00:47:10,600 pero sa totoo ang lahat ng mga ruta ay may upang bumalik ng ilang mga uri ng mga teksto at HTML, 877 00:47:10,600 --> 00:47:14,360 kaya ang tunay na ikaw ay may sa ibalik ang pag-redirect ng tawag. 878 00:47:14,360 --> 00:47:18,379 Kung hindi man, makakakuha ka ng isang bagay Di-wasto ang tungkol sa mga hindi nagbabalik ng isang string, 879 00:47:18,379 --> 00:47:21,420 dahil ang lahat ng mga ito ay may upang bumalik ang HTML iyong aktwal na nais na mag-render. 880 00:47:21,420 --> 00:47:26,980 >> At kaya, kapag tumawag ka sa pag-redirect, Nagre-redirect mo ito sa pahina, 881 00:47:26,980 --> 00:47:30,270 ngunit ito aktwal na nagbabalik ng mga HTML kailangan mong i-execute na redirect. 882 00:47:30,270 --> 00:47:34,430 883 00:47:34,430 --> 00:47:37,110 Bumalik sa home page. 884 00:47:37,110 --> 00:47:39,200 Kaya kami ay may mga dalawang iba't ibang mga view. 885 00:47:39,200 --> 00:47:40,132 Mayroon kaming mga bahay view. 886 00:47:40,132 --> 00:47:41,590 O, hulaan ko ang dapat kong sabihin ng mga template. 887 00:47:41,590 --> 00:47:44,190 Mayroon kaming mga ito ng dalawang mga template, home template na 888 00:47:44,190 --> 00:47:48,500 ay nagpapakita ng lahat ng aming mga post, at pagkatapos kami ay may sa ad na ito bagay, 889 00:47:48,500 --> 00:47:52,970 at kapag nag-click ka sa post, ito napupunta sa isang bagong ruta sa loob ng prasko, 890 00:47:52,970 --> 00:47:55,920 ngunit na ang ruta ay hindi kinakailangang magkaroon ng isang katumbas na template. 891 00:47:55,920 --> 00:47:59,290 892 00:47:59,290 --> 00:48:01,560 Hindi mo na kailangang makita anumang bagay, ngunit maaari mo pa ring 893 00:48:01,560 --> 00:48:04,090 may trabaho na ito ng pagpunta sa likod ng mga eksena. 894 00:48:04,090 --> 00:48:07,450 At pagkatapos mong makakuha-redirect i-back sa home page. 895 00:48:07,450 --> 00:48:12,230 At tiyak, ito ay madali upang gumana sa ilang mga nicer CSS sa template 896 00:48:12,230 --> 00:48:15,580 at gumawa ng mga ito hitsura ng maraming nicer, ngunit ang lahat ng mga pangunahing logic 897 00:48:15,580 --> 00:48:18,590 ay doon sa Python. 898 00:48:18,590 --> 00:48:20,020 >> Ang anumang mga katanungan tungkol sa mga halimbawa nito? 899 00:48:20,020 --> 00:48:22,760 Alam kong may isang pulutong ng mga iba't-ibang mga bagay na nangyayari doon, 900 00:48:22,760 --> 00:48:25,341 isang pulutong ng mga bagay-bagay na hindi namin nakita bago, ngunit tulad ng anumang bagay. 901 00:48:25,341 --> 00:48:25,840 Oo. 902 00:48:25,840 --> 00:48:28,346 >> Madla 1: Mayroon ba kayong gumawa ng kahit ano espesyal na sa pagkuskos ng data na 903 00:48:28,346 --> 00:48:29,600 pagdating sa mula sa form? 904 00:48:29,600 --> 00:48:31,109 Napansin ko ang sinabi mo lang ang "lumikha," 905 00:48:31,109 --> 00:48:33,900 EZRA Zigmond: Oo, kaya iyon talaga, na ang isang tunay na magandang point. 906 00:48:33,900 --> 00:48:36,350 Kaya ang tanong ay, gawin mo kailangan mong suriin at siguraduhin 907 00:48:36,350 --> 00:48:39,190 na ang data ay wasto, at gawin ang anumang uri ng pagkayod 908 00:48:39,190 --> 00:48:41,840 upang matiyak na ito ay may-bisa, dahil tulad ng makikita mo dito, 909 00:48:41,840 --> 00:48:42,660 Hindi ko na ginagawa iyon. 910 00:48:42,660 --> 00:48:48,140 Kaya sabihin makita kung ano ang mangyayari kung nag-post ako blangko ang isang bagay. 911 00:48:48,140 --> 00:48:51,190 Kaya, ito ay aktwal na gumawa lamang ng isang blangko post at punan ang DateTime. 912 00:48:51,190 --> 00:48:55,990 >> Kaya sa katotohanan, gusto mo marahil nais na gawin ang isang bagay tulad ng, 913 00:48:55,990 --> 00:49:04,749 siguro tukuyin kung ang pamagat ay katumbas ng ang walang laman na string, at pagkatapos ay hindi gawin ito. 914 00:49:04,749 --> 00:49:07,290 O, lamang gawin ito kung ang pamagat ay hindi katumbas ng mga walang laman na string. 915 00:49:07,290 --> 00:49:10,330 Kaya ito ay hindi aktwal na awtomatikong alagaan na pagkayod 916 00:49:10,330 --> 00:49:12,820 para sa iyo, kaya kailangan mo pa ring gawin iyon. 917 00:49:12,820 --> 00:49:14,330 Oo, magandang katanungan. 918 00:49:14,330 --> 00:49:18,497 >> Madla 2: Gumagana ba ito scrub para sa sequel iniksyon? 919 00:49:18,497 --> 00:49:19,890 Alam mo ba? 920 00:49:19,890 --> 00:49:22,830 >> EZRA Zigmond: Sana, peewee ay na. 921 00:49:22,830 --> 00:49:25,830 Sa tingin ko ito ay tiyak na maging isang pretty masamang library kung hindi ito gawin iyon. 922 00:49:25,830 --> 00:49:29,511 923 00:49:29,511 --> 00:49:32,690 Hindi ko alam kung eksakto. 924 00:49:32,690 --> 00:49:34,820 Gusto ko na tingnan ang query na binuo ito. 925 00:49:34,820 --> 00:49:38,980 Sa tingin ko na, kung nag-type ko sa isang blog post na uri ng mga tumingin 926 00:49:38,980 --> 00:49:46,370 tulad ng isang atake SQL iniksyon, bagay na tulad nito, kung ito 927 00:49:46,370 --> 00:49:49,370 ay tulad ng isang patlang ng password o isang bagay, maaari mong gawin ang isang bagay tulad nito. 928 00:49:49,370 --> 00:49:53,410 >> Sa tingin ko na ay pa rin makakuha ng literal na nai-post, 929 00:49:53,410 --> 00:49:59,200 ngunit sa tingin ko na ang ginagawa peewee ilang uri ng pagkayod ng data 930 00:49:59,200 --> 00:50:01,680 bago ito aktwal na executes ito. 931 00:50:01,680 --> 00:50:04,510 >> Madla 1: field na teksto ay dinisenyo upang kumuha ng plain text, i-right? 932 00:50:04,510 --> 00:50:05,710 >> EZRA Zigmond: Oo, ito ay. 933 00:50:05,710 --> 00:50:06,465 Oo. 934 00:50:06,465 --> 00:50:09,590 Kaya sa tingin ko na ang lahat ng mga, sa gayon ito ay tamang pag-uugali, na gawin iyon, 935 00:50:09,590 --> 00:50:12,170 ngunit sa tingin ko na peewee sana ay gawin 936 00:50:12,170 --> 00:50:13,780 ilang uri ng proteksyon sa kanilang pagtatapos. 937 00:50:13,780 --> 00:50:16,090 At kung nais mong double check na, may 938 00:50:16,090 --> 00:50:19,530 mga paraan kapag bumuo ka ng isang query. 939 00:50:19,530 --> 00:50:22,622 kaya hindi mo na kailangang direkta execute ito. 940 00:50:22,622 --> 00:50:24,330 Gusto ko na kumuha ng isang tingnan babasahin, 941 00:50:24,330 --> 00:50:27,930 ngunit maaari mong aktwal na makita ang SQL na ito ay bumubuo ng, 942 00:50:27,930 --> 00:50:30,840 at kumuha ng isang pagtingin sa na, at gumawa siguraduhin na ito ay tumatakas na mga bagay. 943 00:50:30,840 --> 00:50:33,700 >> Ang isa pang dahilan kung bakit maaari mo nais na tingnan ang SQL 944 00:50:33,700 --> 00:50:37,920 na peewee ay outputting, ay kung mga bagay-bagay na tila sa maaari pagpunta tunay mabagal, 945 00:50:37,920 --> 00:50:41,090 maaari kang kumuha ng hitsura at makita kung ano ito ay ang tunay na ginagawa, dahil ito ay paminsan-minsan 946 00:50:41,090 --> 00:50:44,670 madaling sinasadyang magdagdag in, ang paraan isulat mo ito, 947 00:50:44,670 --> 00:50:47,880 maaari mo sinasadyang magkaroon ito pumili muna ang buong database, 948 00:50:47,880 --> 00:50:50,230 at pagkatapos ay gawin ang ilang mga operasyon uri sa na, kapag kayo ay talagang 949 00:50:50,230 --> 00:50:51,320 sinadya upang pumili ng isang subset. 950 00:50:51,320 --> 00:50:53,560 >> At ito, kung ang mga bagay ay hindi lubos pagpunta karapatan, 951 00:50:53,560 --> 00:50:57,300 ito ay mabuti upang tingnan sa kahilingan na ang tunay na nagsisimula pa nabuo. 952 00:50:57,300 --> 00:50:57,800 Oo. 953 00:50:57,800 --> 00:51:02,100 >> Madla 2: Kapag kayo ay unang nagsimula, ilagay mo sa port bilang 5000. 954 00:51:02,100 --> 00:51:02,904 >> EZRA Zigmond: Oo. 955 00:51:02,904 --> 00:51:06,070 Madla 2: Ay ang default na may peewee, o ay isang bagay na maaari mong baguhin? 956 00:51:06,070 --> 00:51:10,870 EZRA Zigmond: Oo, kaya ang port ay default sa prasko. 957 00:51:10,870 --> 00:51:13,061 Kung nagpapatakbo ka ng mga ito nang walang pagtukoy sa anumang bagay, 958 00:51:13,061 --> 00:51:14,310 ito ay awtomatikong gawin na. 959 00:51:14,310 --> 00:51:16,060 Naniniwala ako, gusto ko i-double check na ito, 960 00:51:16,060 --> 00:51:19,130 ngunit maaari mong tukuyin na sa app.run, Sa tingin ko ay maaari mong gawin ang isang bagay tulad ng, 961 00:51:19,130 --> 00:51:19,629 port = 8080. 962 00:51:19,629 --> 00:51:22,375 963 00:51:22,375 --> 00:51:23,750 Ni bigyan na ang isang subukan real mabilis Hayaan. 964 00:51:23,750 --> 00:51:29,100 965 00:51:29,100 --> 00:51:32,230 Oo, kaya maaari mo lamang tukuyin ang port = 8080, at ito ay tumakbo ito doon, 966 00:51:32,230 --> 00:51:36,130 na sa palagay ko, kung iyong nais na patakbuhin ito sa IDE, hindi ko na sinubukan na ito out, 967 00:51:36,130 --> 00:51:38,527 ngunit sa tingin ko na kung ikaw tumakbo ito sa port 8080, 968 00:51:38,527 --> 00:51:40,360 gusto mo marahil ay maaaring upang ma-access ang server, 969 00:51:40,360 --> 00:51:41,870 tulad ng sa iyo ay para sa mga website. 970 00:51:41,870 --> 00:51:44,390 >> Oo, ngunit ito ay madaling na baguhin na kung ikaw 971 00:51:44,390 --> 00:51:48,540 magkaroon ng anumang uri ng tulad ng port-forwarding mga bagay na kailangan mong gawin. 972 00:51:48,540 --> 00:51:50,410 >> Anumang iba pang mga katanungan? 973 00:51:50,410 --> 00:51:50,916 Oo? 974 00:51:50,916 --> 00:51:53,416 Madla 1: So, nakita ko sa iyong modelo na, tulad ng nabanggit mo, 975 00:51:53,416 --> 00:51:55,647 kailangan mong tukuyin ang database para sa bawat bagay. 976 00:51:55,647 --> 00:51:58,105 Huwag mong mangyari na malaman, ay na gawin itong talagang madali kung ikaw 977 00:51:58,105 --> 00:52:03,210 magkaroon ng maraming SQLite database na kayo nais na gamitin para sa isang solong web app, 978 00:52:03,210 --> 00:52:07,210 na maaari mo lamang tukuyin ang isang kumpol ng iba't-ibang mga sa iyong mga modelo? 979 00:52:07,210 --> 00:52:11,620 >> EZRA Zigmond: Oo, hayaan mo akong buksan na up real mabilis. 980 00:52:11,620 --> 00:52:17,570 Kaya, ikaw ay sinasabi, kung nais mong magkaroon ng ng grupo ng mga iba't-ibang mga bagay, siguro 981 00:52:17,570 --> 00:52:22,670 gusto at ang mga mag-aaral, para sa ilang dahilan, ang isang bagay tulad na? 982 00:52:22,670 --> 00:52:26,870 Oo, kaya tingin ko na ikaw pa rin, ang bawat modelo 983 00:52:26,870 --> 00:52:30,652 ay mayroon na magkaroon lamang pa rin isang database na nakatalaga dito, 984 00:52:30,652 --> 00:52:32,610 ngunit kung nais mong magkaroon ng iba't-ibang mga modelo na 985 00:52:32,610 --> 00:52:35,818 may itinalaga ng iba't ibang mga bagay sa database na ito, maaari mong tiyak na gawin iyon. 986 00:52:35,818 --> 00:52:43,070 Kaya, kung ako ay lumikha ng isang bago, isang bagay na tulad nito, 987 00:52:43,070 --> 00:52:47,000 at ngayon ito ay isang mag-aaral na mukhang kakatwa tulad ng isang blog post, 988 00:52:47,000 --> 00:52:49,390 Kaya kong tukuyin na ang mga database ay katumbas db_2 dito. 989 00:52:49,390 --> 00:52:51,390 Kaya, sa tingin ko na ang pangunahing paraan na maaari mong gawin iyon. 990 00:52:51,390 --> 00:52:54,560 991 00:52:54,560 --> 00:52:56,200 >> Cool. 992 00:52:56,200 --> 00:52:58,410 Anumang iba pang mga katanungan? 993 00:52:58,410 --> 00:53:02,170 >> Kaya lang para tapusin up ng isang maliit na bit, narito ang ilang mga mapagkukunan, 994 00:53:02,170 --> 00:53:06,030 at maipo-post ang mga slides online para makita ang tunay na makakuha sa mga link na ito. 995 00:53:06,030 --> 00:53:08,500 Ang pinakamahusay na mga mapagkukunan ay talagang ang dokumentasyon para Flask 996 00:53:08,500 --> 00:53:09,930 at Peewee sa kanilang sarili. 997 00:53:09,930 --> 00:53:12,940 Ang mga ito ay nakasulat sa tunay mabuti, sa tingin ko. 998 00:53:12,940 --> 00:53:18,180 Kaya, ang Flask website ay dito, at mayroon silang isang quickstart tutorial na 999 00:53:18,180 --> 00:53:20,710 ay lalakad sa pamamagitan ng katulad mga bagay-bagay sa kung ano ako ay lumakad sa pamamagitan ng, 1000 00:53:20,710 --> 00:53:23,560 ngunit kung gusto mo ng anumang uri ng mga review sa mga bagay na ako nagpunta sa loob, 1001 00:53:23,560 --> 00:53:26,200 o naisip mo na ako ipinaliwanag isang bagay sa nakakalitong paraan, 1002 00:53:26,200 --> 00:53:28,390 makikita nila ang may katulad na mga halimbawa. 1003 00:53:28,390 --> 00:53:31,570 >> Peewee ay may dokumentasyon, at mayroon silang isang quickstart tutorial 1004 00:53:31,570 --> 00:53:34,650 na napupunta sa ibabaw ng mga pangunahing mga parameter na gusto mong gamitin. 1005 00:53:34,650 --> 00:53:38,900 Kaya, ang mga bagay na usapan ko ang tungkol sa mga ang mga natatanging, at tumutukoy ng mga default, 1006 00:53:38,900 --> 00:53:42,710 ang iba't ibang mga uri ng mga patlang na maaari mong gamitin, iyon ay magiging lahat doon. 1007 00:53:42,710 --> 00:53:44,690 >> Gayundin, kung mayroon kang mga katanungan tungkol sa peewee, 1008 00:53:44,690 --> 00:53:47,530 at i-post ang mga ito sa stackoverflow, ang tao na ginawa peewee talaga 1009 00:53:47,530 --> 00:53:49,500 pumunta sa at sumasagot sa mga paminsan-minsan. 1010 00:53:49,500 --> 00:53:53,200 Kung may tanong ka, sana makikita niya magagawang upang sagutin ang mga ito, 1011 00:53:53,200 --> 00:53:54,867 dahil isinulat niya ang buong bagay. 1012 00:53:54,867 --> 00:53:56,700 Sa tingin ko na ang lahat ng bagay Nais kong i-cover. 1013 00:53:56,700 --> 00:53:58,930 Salamat para sa darating out. 1014 00:53:58,930 --> 00:54:02,688