1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:03,227 [Muzika] 3 00:00:03,227 --> 00:00:04,705 4 00:00:04,705 --> 00:00:05,830 EZRA Zigmond: Hi, të gjithë. 5 00:00:05,830 --> 00:00:08,020 Faleminderit për të ardhur jashtë sot. 6 00:00:08,020 --> 00:00:10,660 Ky seminar është "Python Web Apps me balonë. " 7 00:00:10,660 --> 00:00:14,510 >> Pra, unë jam duke shkuar për të folur pak në lidhje me pse 8 00:00:14,510 --> 00:00:17,400 ju mund të dëshironi të përdorni balonë për të bërë Apps web me Python, në krahasim 9 00:00:17,400 --> 00:00:21,556 për disa kornizave të tjera atje, si Django, që është më i njohur. 10 00:00:21,556 --> 00:00:24,330 Subtitle është "dhe peewee ", e cila është diçka 11 00:00:24,330 --> 00:00:27,250 ne do të flasim rreth asaj se si për të bashkëvepruar me bazat e të dhënave SQL. 12 00:00:27,250 --> 00:00:29,610 Kjo e bën atë të vërtetë e bukur. 13 00:00:29,610 --> 00:00:32,390 >> Pra, këtu është vetëm një i dobët e shpejtë e asaj që unë dua të shkoj gjatë. 14 00:00:32,390 --> 00:00:35,520 Pra, së pari, vetëm një rrëshqitje që do të jetë QuickStart, 15 00:00:35,520 --> 00:00:38,530 që është se si të merrni gjithçka ngritur në kompjuterin tuaj. 16 00:00:38,530 --> 00:00:41,760 Unë jam duke shkuar për të demonstruar kjo në kompjuterin tim lokale Mac, 17 00:00:41,760 --> 00:00:45,220 vetëm për shkak se kjo është ajo ku unë kam bërë këtë para, unë jam më i kënaqur me të, 18 00:00:45,220 --> 00:00:48,510 por kjo është padyshim e mundur në CD50 IDE. 19 00:00:48,510 --> 00:00:52,050 >> Pra, pas kësaj, unë dua të futur atë balonë është, 20 00:00:52,050 --> 00:00:55,089 dhe të ju bindin pse ju duhet e përdorin atë në vendin e parë. 21 00:00:55,089 --> 00:00:56,880 Pastaj, unë do të jap një të shpejtë Shembulli i asaj që ju 22 00:00:56,880 --> 00:01:00,550 mund të bëjë në balonë, një shembull të shpejtë të asaj që ju mund të bëni në Peewee, 23 00:01:00,550 --> 00:01:05,010 dhe pastaj unë do të ju tregojnë një më shumë shembull aplikim i plotë 24 00:01:05,010 --> 00:01:07,520 që kam vënë së bashku se ne mund të ecin nëpër bashku. 25 00:01:07,520 --> 00:01:10,040 >> Dhe pastaj në fund, në rrëshqitje e fundit, unë kam 26 00:01:10,040 --> 00:01:12,730 disa burime që ju duken në internet për më shumë informacion. 27 00:01:12,730 --> 00:01:15,560 Kjo nuk është një e plotë tutorial se si të përdorin balonë. 28 00:01:15,560 --> 00:01:18,140 Dhe unë do të shpresoj për të lënë disa kohë për pyetje. 29 00:01:18,140 --> 00:01:21,050 Çdokush shikuar në nivel lokal, vetëm si, bërtas në mes 30 00:01:21,050 --> 00:01:22,340 nëse keni ndonjë pyetje. 31 00:01:22,340 --> 00:01:27,150 >> Pra, sende të shpejtë instalimin, në qoftë se ju doni të ndjekin së bashku, 32 00:01:27,150 --> 00:01:29,240 ose në qoftë se ju doni të merrni këtë deri në kompjuterin tuaj, 33 00:01:29,240 --> 00:01:32,440 Unë do të jetë duke përdorur Python 2.7.10. 34 00:01:32,440 --> 00:01:35,860 Termus bën punën me Python 3, por unë si 35 00:01:35,860 --> 00:01:38,660 duke përdorur Python 2, sepse nuk ka disa paketa Python se 36 00:01:38,660 --> 00:01:40,910 nuk punojnë me 3 ende. 37 00:01:40,910 --> 00:01:44,800 Në qoftë se ju keni instaluar veza, e cila është një menaxher paketë Python, 38 00:01:44,800 --> 00:01:48,190 Unë mendoj se në qoftë se Python juaj është më e madhe se ose e barabartë me 2.7.9, 39 00:01:48,190 --> 00:01:52,220 ju keni instaluar tashmë, është e super të lehtë për të instaluar këto paketa. 40 00:01:52,220 --> 00:01:54,990 >> Ju mund të bëni veza instaluar Balonë, veza instaluar Peewee, 41 00:01:54,990 --> 00:01:58,600 zakonisht ju duhet të kandidojë sudo vetëm në mënyrë që lejeve të punës jashtë. 42 00:01:58,600 --> 00:02:01,080 Dhe, nëse ju jeni duke përdorur një super version i vjetër i Python, 43 00:02:01,080 --> 00:02:05,100 Unë rekomandoj përditësimin Python tuaj, ose duke përdorur EasyInstall të instaluar veza. 44 00:02:05,100 --> 00:02:09,180 45 00:02:09,180 --> 00:02:11,120 Pra, pyetja tjetër është, ajo që është balonë? 46 00:02:11,120 --> 00:02:13,280 Dhe unë mendoj se, për herë të parë një pyetje të arsyeshme unë veten 47 00:02:13,280 --> 00:02:15,585 për një kohë të gjatë është, ajo është një app web? 48 00:02:15,585 --> 00:02:17,960 Sepse kjo është një fjalë që unë mendoj se është hedhur rreth shumë 49 00:02:17,960 --> 00:02:19,240 që unë nuk të vërtetë e di. 50 00:02:19,240 --> 00:02:22,340 Dhe unë mendoj se më i miri shembull të asaj që një app web është, 51 00:02:22,340 --> 00:02:26,960 me të vërtetë është CS50 Financave, ku kjo nuk është me të vërtetë vetëm një faqe interneti, 52 00:02:26,960 --> 00:02:29,320 por kjo është diçka që ju mund të lloj të ndërveprojnë me. 53 00:02:29,320 --> 00:02:31,736 Nuk janë llogaritë e përdoruesve dhe të gjitha llojet e gjërave të ndryshme. 54 00:02:31,736 --> 00:02:35,010 Pra, ku pikërisht ju tërheqë Linja mes asaj që është një website, 55 00:02:35,010 --> 00:02:38,780 dhe çfarë është një app web, është lloj i arbitrare, por unë mendoj idenë, 56 00:02:38,780 --> 00:02:42,110 kjo është diçka më shumë se një faqe interneti dhe kjo është një kërkesë e dobishme. 57 00:02:42,110 --> 00:02:46,081 >> Pra, balonë është një kornizë për duke e bërë Apps web duke përdorur Python. 58 00:02:46,081 --> 00:02:48,330 Dhe shpresojmë se, në fund të kësaj, unë do t'ju bind 59 00:02:48,330 --> 00:02:52,210 që ju mund të vërtetë të shkruani diçka si CS50 Financave përdorur Python, të cilat unë 60 00:02:52,210 --> 00:02:53,950 si shumë më mirë se PHP, personalisht. 61 00:02:53,950 --> 00:02:57,320 >> Pra, balonë është, ata e quajnë një microframework, me të cilin, 62 00:02:57,320 --> 00:02:59,800 ata do të thotë se është shumë thjeshtë, por e zgjeruar. 63 00:02:59,800 --> 00:03:02,980 Pra, ajo ka vetëm ajo që ju duhet, por në qoftë se ju doni më shumë karakteristika, 64 00:03:02,980 --> 00:03:04,522 është e lehtë për të sjellë ata në. 65 00:03:04,522 --> 00:03:06,480 Por vetëm për shkak se kjo është një microframework, nuk ka 66 00:03:06,480 --> 00:03:08,960 do të thotë se kjo është vetëm për projekte të vogla. 67 00:03:08,960 --> 00:03:12,590 Unë kam një lidhje këtu që thotë se se Obama përdorur balonë në vitin 2012 68 00:03:12,590 --> 00:03:14,410 për fushatën e tij Faqja e internetit, i cili me shpresë, 69 00:03:14,410 --> 00:03:16,937 është diçka e një miratim. 70 00:03:16,937 --> 00:03:18,770 Por gjëja që unë vërtetë si për balonë 71 00:03:18,770 --> 00:03:22,401 është se, ajo nuk ka të vërtetë të bëjë çdo lloj vendimeve për ju. 72 00:03:22,401 --> 00:03:24,150 Vetëm për shkak se ne jemi duke folur për Apps web, 73 00:03:24,150 --> 00:03:26,940 Unë duhet të krahasojnë atë me Ruby në Binarët dhe Django, dy prej të cilave 74 00:03:26,940 --> 00:03:30,450 janë kornizat e madhe, por ata të dy bëjnë supozime 75 00:03:30,450 --> 00:03:33,600 për mënyrën se si ju doni të ndërveprojnë me bazat e të dhënave, 76 00:03:33,600 --> 00:03:36,900 si ju doni të paraqesë tuaj views, dhe ata janë patjetër 77 00:03:36,900 --> 00:03:38,850 aspekte të mira për këtë. 78 00:03:38,850 --> 00:03:41,490 >> Për shembull, Ruby në binarët ka këtë sistem aktiv rekord, 79 00:03:41,490 --> 00:03:43,100 i cili është një të vërtetë e bukur mënyrë për të bashkëvepruar me të dhëna, 80 00:03:43,100 --> 00:03:45,960 por në qoftë se ju doni të përdorni Ruby në Binarët, ju jeni lloj i lidhur në atë. 81 00:03:45,960 --> 00:03:47,835 Por me balonë, si unë do ju tregojnë me Peewee, 82 00:03:47,835 --> 00:03:49,830 ju mund të përdorni çfarëdo lloj të dhënave që ju doni, 83 00:03:49,830 --> 00:03:53,980 dhe vetëm ju mund të tërheqë atë në si një zgjatje në balonë. 84 00:03:53,980 --> 00:03:56,350 >> Pra, kjo është arsyeja pse unë me të vërtetë si balonë, është se ajo 85 00:03:56,350 --> 00:04:01,170 nuk e bën supozime për ju bazuar në gjëra që ju nuk duhet të vërtetë. 86 00:04:01,170 --> 00:04:04,440 >> Pra, pse duhet të përdorni balonë? 87 00:04:04,440 --> 00:04:08,230 Avantazhet janë, ajo vetëm ka me të vërtetë karakteristikat kryesore 88 00:04:08,230 --> 00:04:09,420 ndërtuar në atë që ju duhet. 89 00:04:09,420 --> 00:04:11,980 Pra, ju nuk duhet të shqetësohen për të kuptuarit e një bandë e tërë e gjërave 90 00:04:11,980 --> 00:04:13,175 që ju nuk keni nevojë të vërtetë. 91 00:04:13,175 --> 00:04:15,060 Ju nuk duhet të keni për t'u shqetësuar për turning off karakteristika 92 00:04:15,060 --> 00:04:16,620 që ju nuk keni nevojë të vërtetë. 93 00:04:16,620 --> 00:04:21,082 >> Dhe, siç e përmenda, kjo është super lehtë për të shtuar në zgjerimet e gjërave 94 00:04:21,082 --> 00:04:21,790 që ju keni nevojë. 95 00:04:21,790 --> 00:04:24,700 Disa prej tyre, balonë ka mbështetjen e tyre për të. 96 00:04:24,700 --> 00:04:28,230 Pra, ka diçka që quhet balonë admin, e cila pasqyron se admin 97 00:04:28,230 --> 00:04:32,060 Paneli që Django ofron, e cila ju jep një mënyrë të bukur vizuale 98 00:04:32,060 --> 00:04:33,405 për të administruar faqen tuaj te internetit. 99 00:04:33,405 --> 00:04:35,280 Por, përsëri, në qoftë se ju jeni bërë diçka e thjeshtë, 100 00:04:35,280 --> 00:04:39,550 ju ndoshta nuk keni nevojë për një admin madh panel, kështu që unë mendoj se është super e bukur. 101 00:04:39,550 --> 00:04:45,940 Dhe të metat janë, që ju keni më pak fuqi jashtë kutisë. 102 00:04:45,940 --> 00:04:49,660 Pra, kur ju së pari të hapur balonë, dhe në programin tuaj Python, 103 00:04:49,660 --> 00:04:53,150 ju vetëm lloji nga balonë importit *, ose çfarëdo, 104 00:04:53,150 --> 00:04:55,957 ju nuk saktësisht të merrni të gjitha karakteristikat që ju mund të dëshironi. 105 00:04:55,957 --> 00:04:58,540 Dhe kështu që ju keni për të më shumë në mënyrë eksplicite lista karakteristikat që ju dëshironi. 106 00:04:58,540 --> 00:05:01,990 Pra, kjo është një disavantazh, por unë mendoj se për ndërtimin e web të vogël 107 00:05:01,990 --> 00:05:04,782 Apps si unë jam duke shkuar për të treguar ju, që nuk është me të vërtetë një problem. 108 00:05:04,782 --> 00:05:07,281 Dhe çfarë është gjëja e fundit duhet të them, e cila është një typo, 109 00:05:07,281 --> 00:05:10,240 është se ka pak të standardizuar konventat për mënyrën se si të përdorin balonë, 110 00:05:10,240 --> 00:05:12,400 vetëm për shkak se nuk ka aq shumë njerëz që e përdorin atë në mënyrë profesionale 111 00:05:12,400 --> 00:05:13,191 krahasuar Django. 112 00:05:13,191 --> 00:05:16,380 Pra, nëse ju shikoni diçka si, "si mund ta bëj x" në Django, 113 00:05:16,380 --> 00:05:18,190 ndoshta ju do të gjeni atë. 114 00:05:18,190 --> 00:05:20,260 >> Ka dizajn të mirë modele ju mund të përdorni, 115 00:05:20,260 --> 00:05:22,660 por me balonë, kjo është lloj i shkojnë rrugën tuaj, 116 00:05:22,660 --> 00:05:24,850 vetëm për shkak se kjo është një bibliotekë mjaft i vogël. 117 00:05:24,850 --> 00:05:27,100 Kështu që ata janë të disavantazhe, por unë mendoj 118 00:05:27,100 --> 00:05:29,370 se kjo është ende një bibliotekë mirë për të përdorur. 119 00:05:29,370 --> 00:05:31,909 >> Pra, le të vetëm kërcej të drejtë në balonë. 120 00:05:31,909 --> 00:05:34,200 Ky është definitivisht nuk do të jetë një tutorial i plotë, 121 00:05:34,200 --> 00:05:37,480 por kjo është për të ju jap një ide se si të strukturës gjëra, 122 00:05:37,480 --> 00:05:40,790 dhe kështu që ju të ndiheni rehat duke shkuar off dhe duke kërkuar në dokumentacionin 123 00:05:40,790 --> 00:05:42,570 dhe gjetja e më shumë. 124 00:05:42,570 --> 00:05:48,500 >> Pra, më lejoni të hapur një të vërtetë shembull i thjeshtë në fillim, 125 00:05:48,500 --> 00:05:50,737 dhe ju se çfarë tregojnë si duket, dhe pastaj ne do të 126 00:05:50,737 --> 00:05:52,070 thyejnë atë poshtë një pak më shumë. 127 00:05:52,070 --> 00:05:56,160 >> Pra, ky këtu, më lejoni të marrë atë drejtimin. 128 00:05:56,160 --> 00:06:06,800 129 00:06:06,800 --> 00:06:09,750 Pra, unë tani kanë kërkesën time running. 130 00:06:09,750 --> 00:06:15,910 Unë jam duke shkuar për të hapur Safari, dhe kjo është kandidon për mikpritësin tim lokale. 131 00:06:15,910 --> 00:06:19,360 Kështu që unë jam vetëm duke shkuar për të bërë këtë më të mëdha. 132 00:06:19,360 --> 00:06:23,960 Por localhost: 5000 133 00:06:23,960 --> 00:06:27,650 >> Dhe kështu, tani, e gjithë kjo e bën është, kur ju vizitoni faqen e internetit, 134 00:06:27,650 --> 00:06:31,490 ajo kopje nga "Përshëndetje balonë" e cila nuk është e dobishme super, 135 00:06:31,490 --> 00:06:34,630 por unë mendoj se është ftohtë që në këtë dosje të vogël këtu, 136 00:06:34,630 --> 00:06:37,390 ne kemi një web server running që është shtypje diçka. 137 00:06:37,390 --> 00:06:40,500 Pra, le të shohim në fakt në kod për një të dytë, 138 00:06:40,500 --> 00:06:43,080 dhe të ndërpreni atë poshtë pak. 139 00:06:43,080 --> 00:06:45,260 Është madhësia e mirë për të gjithë këtu? 140 00:06:45,260 --> 00:06:51,560 >> Pra, shpresojmë se, ju jeni disi të rehatshëm duke përdorur Python. 141 00:06:51,560 --> 00:06:55,820 Unë jam duke supozuar se ne mund të shohim në Python dhe të lexoni nëpërmjet saj. 142 00:06:55,820 --> 00:06:59,290 Nëse keni ndonjë pyetje në lidhje çdo gjë, unë mund të shkoni edhe mbi atë. 143 00:06:59,290 --> 00:07:03,974 >> Kështu në radhën e parë, nga balonë, ne import, balonë me një kapital "F" 144 00:07:03,974 --> 00:07:06,140 e cila është lloj i të gjitha tipare kryesore që ju duhet. 145 00:07:06,140 --> 00:07:08,890 Kurdo që ju jeni me shkrim një skedar dhe përdorimin e balonë, 146 00:07:08,890 --> 00:07:12,120 ju jeni do të duan të importojë atë, vetëm për shkak se i ka të gjitha gjërat kryesore. 147 00:07:12,120 --> 00:07:15,400 Gjë tjetër që ne bëjmë, është që ne e quajnë këtë balonë funksion, vetëm 148 00:07:15,400 --> 00:07:19,270 për të krijuar një objekt app, dhe ju jeni gjithmonë do të dëshironi të bëni atë. 149 00:07:19,270 --> 00:07:25,960 >> Dhe pastaj, duke kërcyer poshtë të fund shpejt, kjo pjesë këtu është, 150 00:07:25,960 --> 00:07:28,760 'if_name _ == "_ main_" "i cili është lloj i një konvente Python. 151 00:07:28,760 --> 00:07:32,750 Pra, kjo do të zbatoj vetëm nëse ju drejtuar këtë fotografi direkt duke përdorur Python. 152 00:07:32,750 --> 00:07:36,040 Pastaj, ne e quajmë app.run, e cila do të në fakt të fillojë app shkuar. 153 00:07:36,040 --> 00:07:39,570 >> Pra, kjo është struktura kryesore që ju do të keni në çdo aplikim balonë, 154 00:07:39,570 --> 00:07:48,550 po ju do të keni këtë App = balonë (_name_), dhe pastaj app.run. 155 00:07:48,550 --> 00:07:54,940 >> Pra, dy gjëra që unë kam në këtu, janë ato që ne e quajmë rrugët. 156 00:07:54,940 --> 00:07:57,150 Pra, le të flasim për kurs pak më shumë. 157 00:07:57,150 --> 00:07:58,430 Unë do të shkoj përsëri në rrëshqitje. 158 00:07:58,430 --> 00:08:02,540 >> Pra, më themelore koncept në balonë është kurs. 159 00:08:02,540 --> 00:08:06,750 Dhe kjo është ideja që ju të caktojë funksione në Python 160 00:08:06,750 --> 00:08:11,280 në adresat e caktuara në faqen tuaj web. 161 00:08:11,280 --> 00:08:13,930 Pra, sa herë që ju dëshironi për të krijuar një rrugë të re, 162 00:08:13,930 --> 00:08:16,500 ju përdorni këtë @ app.route bojaxhi funksion. 163 00:08:16,500 --> 00:08:19,770 Pra, nëse jeni të panjohur me decorators funksion në Python, 164 00:08:19,770 --> 00:08:24,160 Është ky koncept që ju lejon të marrin një funksion 165 00:08:24,160 --> 00:08:26,800 dhe e rrethojnë atë me diçka tjetër. 166 00:08:26,800 --> 00:08:30,140 >> Pra me të vërtetë, çfarë e bën këtë bojaxhi, është se ajo merr funksionin më poshtë saj, 167 00:08:30,140 --> 00:08:33,409 dhe kjo shton më shumë informacion për atë, por ajo që në fakt balonë 168 00:08:33,409 --> 00:08:37,480 ka bërë që të ndodhë nuk është e super vendimtare, por ajo që është e rëndësishme, 169 00:08:37,480 --> 00:08:43,640 është se para se të rrugës, ju vënë këtë @ app.route, dhe pastaj 170 00:08:43,640 --> 00:08:46,480 adresa e rrugës, kështu plagë është ajo që ne 171 00:08:46,480 --> 00:08:48,360 pa kur ne sapo hapur deri web faqe. 172 00:08:48,360 --> 00:08:49,580 Pra, kjo është homepage. 173 00:08:49,580 --> 00:08:51,037 Është vetëm rruga plagë. 174 00:08:51,037 --> 00:08:52,370 Dhe pastaj ju e keni këtë funksion. 175 00:08:52,370 --> 00:08:54,453 Emri i funksionit mund të jetë çdo gjë që ju dëshironi. 176 00:08:54,453 --> 00:08:56,930 Ajo nuk duhet të detyrimisht kanë të bëjnë me rrugën. 177 00:08:56,930 --> 00:08:59,440 Dhe pastaj, çfarëdo kthimi i funksionit së, 178 00:08:59,440 --> 00:09:01,730 funksioni duhet të kthehet një varg. 179 00:09:01,730 --> 00:09:03,740 Dhe kjo mund të string përmban HTML ose ndonjë gjë, 180 00:09:03,740 --> 00:09:06,920 dhe kjo në fakt është ajo që do të merrni u kthye në shfletuesin tuaj të internetit si HTML, 181 00:09:06,920 --> 00:09:08,200 dhe kjo do të bëjë që. 182 00:09:08,200 --> 00:09:12,030 >> Pra, kjo është e njëjta kodi kjo ishte nga shembulli 183 00:09:12,030 --> 00:09:16,430 që unë vetëm u zhvillua, kështu që kur vizitojmë Slash, ajo e quan një funksion Përshëndetje Botërore, e cila 184 00:09:16,430 --> 00:09:20,470 vetëm kthen një varg, Përshëndetje balonë, dhe që merr shtypura në ekran. 185 00:09:20,470 --> 00:09:27,290 >> Pra, ka një tjetër shembull, që është, kur ju vizitoni / hello, 186 00:09:27,290 --> 00:09:30,370 ajo printon nga Përshëndetje Word, i cili duhet të them në fakt, Hello World, 187 00:09:30,370 --> 00:09:32,010 por le të pretendojë se ishte i qëllimshëm. 188 00:09:32,010 --> 00:09:35,140 Pra, le të tërheq lart që vërtetë të shpejtë. 189 00:09:35,140 --> 00:09:41,290 >> Pra, nëse ju shkoni në localhost / hello, ajo tani do të shtypura diçka tjetër. 190 00:09:41,290 --> 00:09:45,680 Pra, kjo është vetëm një shembull të shpejtë se si ju mund të krijoni dy rrugë të ndryshme. 191 00:09:45,680 --> 00:09:50,630 >> Pra, deri më tani kjo nuk është e super të dobishme, nuk është një tërësi shumë ju mund të bëni, 192 00:09:50,630 --> 00:09:55,360 ju mund të bëni vetëm gjithçka që me të paturit e faqe të ndryshme HTML, 193 00:09:55,360 --> 00:09:58,000 dhe kur ju vizitoni një të veçantë faqe ajo vetëm ngarkesa faqe. 194 00:09:58,000 --> 00:10:00,864 Pra, le të shohim disa më shumë gjëra të dobishme që ju mund të bëni. 195 00:10:00,864 --> 00:10:03,780 Pra, një gjë që ju mund të keni vërehet në shembullin që unë nxorrën 196 00:10:03,780 --> 00:10:07,160 lart, është se unë kisha app.run (debug = True). 197 00:10:07,160 --> 00:10:09,580 Dhe kështu, çfarë kjo Argumenti debug bën, është 198 00:10:09,580 --> 00:10:14,600 se kur ju drejtuar web serverin tuaj, kur ju jeni në aplikimin tuaj, 199 00:10:14,600 --> 00:10:18,100 në qoftë se ju të ndryshojë një fotografi, ajo do të automatikisht ringarkoni server. 200 00:10:18,100 --> 00:10:21,160 >> Dhe kështu që ju në fakt nuk duhet të restart Python, e cila është e super të dobishme. 201 00:10:21,160 --> 00:10:24,020 Unë mund të tregojnë se. 202 00:10:24,020 --> 00:10:26,960 Më lejoni të tërheq lart kodin tim me typo në të, 203 00:10:26,960 --> 00:10:30,420 dhe të pretendojë se typo ishte vënë atje qëllimisht për qëllime udhëzuese. 204 00:10:30,420 --> 00:10:31,625 Pra, le të shtoni këtë Kthehu në. 205 00:10:31,625 --> 00:10:33,140 Kështu që tani ai thotë Hello World. 206 00:10:33,140 --> 00:10:34,410 Unë do ta shpëtojë. 207 00:10:34,410 --> 00:10:36,540 Dhe në qoftë se ne tërheq mbrapsht deri terminali, ju do të 208 00:10:36,540 --> 00:10:39,520 thonë se kjo është rifillimi, sepse ajo zbuluar një ndryshim, 209 00:10:39,520 --> 00:10:43,620 dhe kështu që tani kur ne rifreskoni këtë faqe, ajo do të shtypura nga gjënë e duhur. 210 00:10:43,620 --> 00:10:45,630 >> Pra debug është super e dobishme për atë. 211 00:10:45,630 --> 00:10:48,740 Gjithashtu, në qoftë se ju keni ndonjë lloj i një aksident, kështu që 212 00:10:48,740 --> 00:10:54,370 më lejoni të bëjë këtë përplasje aplikimit duke pasur jo ajo kthehet një varg. 213 00:10:54,370 --> 00:10:57,540 Pra, le të vetëm kanë atë Asnjë kthehen për disa arsye. 214 00:10:57,540 --> 00:11:00,810 Dhe atëherë kur kam vizituar këtë faqe, ajo do vetëm të rrëzimit, 215 00:11:00,810 --> 00:11:04,465 por serveri nuk ka vetëm përplasje, atë në fakt ju jep një back super të dobishme 216 00:11:04,465 --> 00:11:06,490 gjurmë e çdo gjë që shkoi keq. 217 00:11:06,490 --> 00:11:10,050 Dhe çfarë është me të vërtetë e bukur, është se në çdo hap në këtë gjurmë prapa, 218 00:11:10,050 --> 00:11:14,260 ju mund të hapë një interaktive shell këtu, dhe lloj të shtypura nga çfarë 219 00:11:14,260 --> 00:11:17,780 variabla ju dëshironi të hidhni një sy në. 220 00:11:17,780 --> 00:11:21,054 >> Dhe kështu debugging është me të vërtetë të dobishme për zbulimin 221 00:11:21,054 --> 00:11:23,470 çfarë po ndodh me tuaj server, në vend se vetëm duke parë 222 00:11:23,470 --> 00:11:28,201 diçka në PHP si një 500 të brendshme gabim server, e cila është e super të padobishme. 223 00:11:28,201 --> 00:11:30,700 Një gjë që të jetë i vetëdijshëm, është se në qoftë se ju vendosni në internet app tuaj 224 00:11:30,700 --> 00:11:34,260 kështu që është e dukshme për publikun, ju nuk duan të largohen mënyrën debug në, 225 00:11:34,260 --> 00:11:37,320 sepse njerëzit mund të vërtetë përdorin atë tastierë që unë 226 00:11:37,320 --> 00:11:39,150 tregoi që për të ekzekutuar kodin arbitrare. 227 00:11:39,150 --> 00:11:42,120 >> Në mënyrë që ata mund të shtypura jashtë si ndonjë kodet sekrete që ju keni në atje, 228 00:11:42,120 --> 00:11:44,755 ata mund të shikojmë pikërisht si faqen tuaj te internetit është duke punuar. 229 00:11:44,755 --> 00:11:46,630 Pra, kjo është me të vërtetë e dobishme për testim, por gjithmonë 230 00:11:46,630 --> 00:11:50,090 të sigurt për të marrë atë para ju të botojë ndonjë gjë online. 231 00:11:50,090 --> 00:11:56,640 >> Pra, kur ju jeni duke përdorur diçka si PHP, nuk është kjo ide 232 00:11:56,640 --> 00:11:58,920 që ju mund të kalojë informacioni mes faqeve të internetit 233 00:11:58,920 --> 00:12:03,620 duke vënë informacion në fakt në URL, e cila është një kërkesë GET, 234 00:12:03,620 --> 00:12:07,490 por në balonë, ju mund të vërtetë bëni diçka lloj të tillë, 235 00:12:07,490 --> 00:12:10,590 duke pasur një rrugë që ka a variable si pjesë e saj. 236 00:12:10,590 --> 00:12:14,090 >> Pra, nëse ju shikoni në këtë Shembulli në ekran këtu, 237 00:12:14,090 --> 00:12:19,930 ne kemi një rrugë që është ('/ Përshëndetje /'), dhe kështu, në qoftë se ju vizitoni 238 00:12:19,930 --> 00:12:23,790 / Përshëndetje / diçka, se diçka do të vërtetë të marrë mbushur 239 00:12:23,790 --> 00:12:25,490 në emrin e variablit. 240 00:12:25,490 --> 00:12:27,850 Dhe vini re se funksioni që vjen me këtë rrugë 241 00:12:27,850 --> 00:12:31,302 duhet të marrë në parametër emrin, në mënyrë që ajo do të në fakt 242 00:12:31,302 --> 00:12:32,510 të kaluar në funksion. 243 00:12:32,510 --> 00:12:34,190 >> Dhe pastaj, një herë ju jeni brenda këtij funksioni, 244 00:12:34,190 --> 00:12:36,420 ju mund të trajtoni se si një variabël normale Python, 245 00:12:36,420 --> 00:12:39,650 dhe kështu pastaj, ajo do të shtypura nga Përshëndetje, dhe ajo 246 00:12:39,650 --> 00:12:42,000 do të plotësoni në emrin e përdorimit disa formatimin string. 247 00:12:42,000 --> 00:12:48,060 >> Pra, për të shtuar pjesë të ndryshueshme në një kurs, ju përdorni kllapa kënd shënuar. 248 00:12:48,060 --> 00:12:51,220 Dhe opsionale, ju mund të përdorni atë që quhet një konvertim. 249 00:12:51,220 --> 00:12:56,840 Dhe kështu, në qoftë se ju vendosni këtë shënim me dy pika, 250 00:12:56,840 --> 00:13:00,015 ju mund të specifikoni se kjo është një int, ose një noton, apo rrugë, 251 00:13:00,015 --> 00:13:01,640 dhe ajo do të konvertohet automatikisht atë. 252 00:13:01,640 --> 00:13:05,130 Ju gjithashtu mund të bëjë konvertimin brenda funksionit Python, 253 00:13:05,130 --> 00:13:09,710 vetëm duke përdorur një cast, por ndonjëherë nëse ju doni të siguruar që kjo është një int, 254 00:13:09,710 --> 00:13:12,080 ju mund të vendosni se Rregulli i konvertimit në atje. 255 00:13:12,080 --> 00:13:15,930 >> Pra, le të tërhequr deri një shembull e disa rregullave të ndryshueshme. 256 00:13:15,930 --> 00:13:21,480 Kështu që këtu, kjo është e njëjta themelore Struktura me nga importi balonë 257 00:13:21,480 --> 00:13:25,030 Faqore, app = balonë (_name_), dhe pastaj kjo është drejtimin në fund. 258 00:13:25,030 --> 00:13:28,050 Ne kemi këto dy të ndryshme Rrugët ndryshueshme këtu. 259 00:13:28,050 --> 00:13:29,900 Dhe i pari, është ai që kam treguar 260 00:13:29,900 --> 00:13:34,230 në rrëshqitje, e cila ishte se ajo merr vetëm në një emër string 261 00:13:34,230 --> 00:13:35,650 dhe ajo do të shtypura nga Hello, Emri. 262 00:13:35,650 --> 00:13:41,410 >> Dhe pastaj, e dyta e përdor konvertimin. 263 00:13:41,410 --> 00:13:44,690 Pra, kjo automatikisht do të kthyer atë në një int, dhe pastaj të dyfishtë int, 264 00:13:44,690 --> 00:13:46,150 dhe të shtypura atë jashtë. 265 00:13:46,150 --> 00:13:48,220 Dhe, ne nuk bëjmë asnjë lloj e konvertimit brenda saj 266 00:13:48,220 --> 00:13:49,594 sepse balonë kujdeset për këtë. 267 00:13:49,594 --> 00:13:53,181 Pra, le të marrë këtë drejtimin. 268 00:13:53,181 --> 00:13:54,930 Kur ju keni një balonë aplikimit running, 269 00:13:54,930 --> 00:13:58,440 Ju mund të kontrollojë-C nga ajo për të ndaluar server running. 270 00:13:58,440 --> 00:14:02,420 Dhe atëherë unë do të kandidojë variablave. 271 00:14:02,420 --> 00:14:11,740 >> Pra, le të shkojnë në localhost / përshëndetje / Ezdras dhe Shpresojmë, kjo do të thonë hello për mua. 272 00:14:11,740 --> 00:14:14,530 273 00:14:14,530 --> 00:14:20,310 >> Pra, ajo mori në emrin tim, në variablin rrugë, dhe e mbushi atë në këtu. 274 00:14:20,310 --> 00:14:23,950 Kështu që unë do të tregoj një mënyrë të shpejtë Shembulli i dyfishimit. 275 00:14:23,950 --> 00:14:28,600 Pra, nëse ju shkoni në / të dyfishtë / 3, ajo do të shtypura nga 6. 276 00:14:28,600 --> 00:14:31,440 Pra, kjo u kujdes konvertimit për ne. 277 00:14:31,440 --> 00:14:34,190 >> Pra, ju gjithashtu mund të bëjë atë me noton, dhe diçka e veçantë, 278 00:14:34,190 --> 00:14:37,530 në qoftë se ju duhet të specifikoni diçka si një rrugë, që ju lejon të pranojë slashe, 279 00:14:37,530 --> 00:14:39,155 por që nuk duhet të zakonisht të jetë një çështje. 280 00:14:39,155 --> 00:14:41,480 281 00:14:41,480 --> 00:14:43,820 Deri tani kemi, ende kemi sapo është kthyer 282 00:14:43,820 --> 00:14:46,320 vargjet, e cila nuk është shumë interesante. 283 00:14:46,320 --> 00:14:48,730 >> Ne fakt mund të kthehet literal string HTML. 284 00:14:48,730 --> 00:14:54,322 Pra, në kodin ne mund të futur diçka si B-tag për ta bërë atë të guximshme, 285 00:14:54,322 --> 00:14:56,030 por shumica e kohës që ju në fakt nuk duan 286 00:14:56,030 --> 00:14:58,420 të jenë të shkruar kodin HTML në kodin tuaj Python. 287 00:14:58,420 --> 00:15:01,940 Ai merr me të vërtetë i çrregullt, dhe kjo nuk është një kohë e mirë. 288 00:15:01,940 --> 00:15:06,430 >> Termus na lejon për të ndarë jashtë HTML në atë që quhet template, 289 00:15:06,430 --> 00:15:09,467 dhe kështu që nëse ju jeni duke menduar në kuptimin e modelit MVC 290 00:15:09,467 --> 00:15:11,550 që ju jeni të njohur me të, me shpresë, nga puna 291 00:15:11,550 --> 00:15:15,520 me CS50 Financa pak, ju mund të mendoni fotografi Python 292 00:15:15,520 --> 00:15:19,430 si më të Kontrolluesi, ku ata janë të ndërveprojnë me çfarëdo 293 00:15:19,430 --> 00:15:20,970 Modeli dhënat që ju mund të keni. 294 00:15:20,970 --> 00:15:24,900 >> Dhe atëherë ata janë duke bërë thirrje për të shikimeve dhe duke kaluar informacionin në atë View 295 00:15:24,900 --> 00:15:28,120 për të plotësuar informacionin e në HTML që ajo ka nevojë. 296 00:15:28,120 --> 00:15:30,490 Dhe ajo që ne e quajmë ato Shikime janë Templates në klasë. 297 00:15:30,490 --> 00:15:35,280 >> Pra, balonë përdor një tjetër Python modul se ajo do të automatikisht 298 00:15:35,280 --> 00:15:38,620 instaluar kur ju instaloni Pip Termus quajtur Jinja, e cila 299 00:15:38,620 --> 00:15:40,885 ju lejon të shtoni këto Annotations në HTML 300 00:15:40,885 --> 00:15:45,140 që ju shihni në ekran, që ju lejon ju vënë në gjëra të tilla si conditionals, 301 00:15:45,140 --> 00:15:47,230 dhe sythe në HTML. 302 00:15:47,230 --> 00:15:51,140 >> Pra, kjo duket pak si si ju mund të përdorin PHP brenda një skedar HTML, 303 00:15:51,140 --> 00:15:57,380 por kjo është vetëm kur balonë server shërben skedar HTML, 304 00:15:57,380 --> 00:16:01,610 ajo do të drejtuar këtë motor templating dhe kuptoj këtë dhe plotësoni gjërat në. 305 00:16:01,610 --> 00:16:06,650 Pra, balonë ka një funksion render_template që ju mund të shihni në fund këtu. 306 00:16:06,650 --> 00:16:14,300 Dhe kështu, kur ju vizitoni këtë faqe, atë do ta bëjnë këtë Template hello.html, 307 00:16:14,300 --> 00:16:16,407 dhe pastaj plotësoni në këtë faqe HTML. 308 00:16:16,407 --> 00:16:18,990 Pra, le të vetëm të drejtuar këtë të vërtetë të shpejtë, dhe të shohim se çfarë ajo duket si, 309 00:16:18,990 --> 00:16:21,198 dhe pastaj unë do të shkoj nëpër një pak më në detaje. 310 00:16:21,198 --> 00:16:25,380 311 00:16:25,380 --> 00:16:30,260 Pra, Templates tuaja janë duke shkuar për të shkuar në një dosje templates. 312 00:16:30,260 --> 00:16:33,980 Kjo automatikisht do të duket brenda Templates dosje për këtë Stampa. 313 00:16:33,980 --> 00:16:35,615 Pra, le të hapur këtë ide. 314 00:16:35,615 --> 00:16:47,350 315 00:16:47,350 --> 00:16:50,005 Pra, unë do të kandidojë shembullin templating. 316 00:16:50,005 --> 00:16:52,820 317 00:16:52,820 --> 00:17:03,660 >> Pra, nëse unë shkoj në / përshëndetje / Ezdras, ajo ka këtë tmerrshme, 318 00:17:03,660 --> 00:17:05,930 tag padurueshëm çadër që kam vënë në. 319 00:17:05,930 --> 00:17:08,050 Very nice, shumë dinamike. 320 00:17:08,050 --> 00:17:09,349 Unë jam një tifoz i madh. 321 00:17:09,349 --> 00:17:13,900 Por çfarë ndodh nëse Unë thjesht shkoni në, / përshëndetje? 322 00:17:13,900 --> 00:17:15,220 Pra, ai vetëm i thotë: Hello World. 323 00:17:15,220 --> 00:17:17,678 Unë nuk e kalojnë një emër, dhe e mbushi atë në mënyrë automatike. 324 00:17:17,678 --> 00:17:22,050 Pra, le të shohim se si ai e bëri atë, dhe si ne mund të shpëtoj prej atij çadër ndoshta. 325 00:17:22,050 --> 00:17:26,240 >> Kështu që këtu, kjo është lloj i një shembull interesant i, 326 00:17:26,240 --> 00:17:29,101 në qoftë se ju jeni të njohur me atë se si kaloni Deklaratat punojnë në një gjuhë. 327 00:17:29,101 --> 00:17:31,350 Thonë se kjo është lloj i si, ky lloj i një rënie përmes, 328 00:17:31,350 --> 00:17:34,266 ku në të vërtetë ju bashkangjitur dy rrugë të ndryshme për të njëjtin funksion. 329 00:17:34,266 --> 00:17:41,190 Pra, ne bashkëngjitni / Noizy rrugë dhe / Përshëndetje / rrugë emër të Përshëndetje, 330 00:17:41,190 --> 00:17:45,130 dhe ne të specifikojë using-- Python ju lejon specifikoni funksion parazgjedhje argumente të 331 00:17:45,130 --> 00:17:48,300 kështu që nëse nuk ka asnjë emër, kështu në qoftë se ne do të shkojmë për të vetëm / hello, 332 00:17:48,300 --> 00:17:50,680 kjo automatikisht do të filtruar për emrin është e barabartë me Asnjë. 333 00:17:50,680 --> 00:17:55,010 >> Kështu pra, ne të merr Template me emrin = emri, 334 00:17:55,010 --> 00:17:59,510 kështu ajo do të kalojë në emrin parametër të barabartë me këtë parametër funksion emri, 335 00:17:59,510 --> 00:18:00,730 në template. 336 00:18:00,730 --> 00:18:04,040 Që ende nuk shpjegon se si është të vendosur nëse do të shtypura Hello World, 337 00:18:04,040 --> 00:18:05,100 ose të shtypura emrin tim. 338 00:18:05,100 --> 00:18:08,050 Pra, le të në fakt duken në template vetë, 339 00:18:08,050 --> 00:18:11,610 dhe të shohim se ku po vijnë nga. 340 00:18:11,610 --> 00:18:18,680 >> Pra, në kuadër të këtij Template, ne në fakt kanë disa logjikën e kushtëzuar, 341 00:18:18,680 --> 00:18:20,580 që disa njerëz do të argumentojnë, ju në të vërtetë 342 00:18:20,580 --> 00:18:23,730 nuk duhet të ketë një shumë e kushtëzuar Logjika brenda template tuaj vetë. 343 00:18:23,730 --> 00:18:26,310 Ajo duhet të jetë më brenda Kontrollues, por për këtë shembull 344 00:18:26,310 --> 00:18:27,476 kjo është diçka shumë e vogël. 345 00:18:27,476 --> 00:18:31,060 Kështu që këtu, ne kontrolloni, nëse emri, kështu në qoftë se emri nuk është e barabartë me Asnjë, 346 00:18:31,060 --> 00:18:33,130 në qoftë se një emër është në fakt kaloi në, atëherë ne do të 347 00:18:33,130 --> 00:18:36,210 thonë Përshëndetje, emri me të header dhe çadër, 348 00:18:36,210 --> 00:18:41,490 e gjithë kjo HTML normale, përndryshe, ne do të shtypura nga Përshëndetje, World vetëm normalisht. 349 00:18:41,490 --> 00:18:45,820 Pra, disa gjëra në njoftim këtu rreth asaj se si ju format templating, 350 00:18:45,820 --> 00:18:49,110 është se, në të gjitha këto Deklaratat e kushtëzuara, 351 00:18:49,110 --> 00:18:54,475 lloj si si ne PHP atë kur ju doni të futur disa PHP, 352 00:18:54,475 --> 00:18:58,380 ju përdorni më pak se fjalë shenjë, kjo është lloj i ngjashëm këtu 353 00:18:58,380 --> 00:19:00,140 me {%. 354 00:19:00,140 --> 00:19:02,130 >> Kështu që këtu, kemi kodin tonë të kushtëzuar. 355 00:19:02,130 --> 00:19:05,920 Dhe pastaj, kur ju të vërtetë duan të fjalë për fjalë të vlerësuar diçka, dhe të shtypura 356 00:19:05,920 --> 00:19:08,710 ajo jashtë në ekran, ju përdorni formatimin e teksteve dyfishtë. 357 00:19:08,710 --> 00:19:12,310 Kështu që këtu janë formatimin e teksteve të dyfishtë, dhe pastaj ne të specifikojë emrin, 358 00:19:12,310 --> 00:19:15,500 kështu që brenda, ajo do të vlerësojë me emrin e ndryshueshme, e cila 359 00:19:15,500 --> 00:19:18,860 u miratua në nga bëjnë funksion template, 360 00:19:18,860 --> 00:19:21,484 në vend se vetëm printim jashtë, në qoftë se ne u shpëtoj prej tyre, 361 00:19:21,484 --> 00:19:23,150 kjo vetëm do të shtypura nga fjalën "emrin." 362 00:19:23,150 --> 00:19:26,340 Pra, kjo është diçka për të parë për. 363 00:19:26,340 --> 00:19:29,792 >> Pra, një tjetër gjë për të njoftim është se, kur ne 364 00:19:29,792 --> 00:19:31,500 doni të përdorni funksion render_template, 365 00:19:31,500 --> 00:19:34,490 ne fakt kanë për të importuar ajo në mënyrë eksplicite nga balonë. 366 00:19:34,490 --> 00:19:36,915 Dhe ky është një shembull i Modularitet i balonë, 367 00:19:36,915 --> 00:19:39,290 që ju nuk keni për të importuar gjëra që ju nuk keni nevojë. 368 00:19:39,290 --> 00:19:41,290 Ju vetëm mund të sjellë në Funksionet e ju në të vërtetë 369 00:19:41,290 --> 00:19:43,450 kanë nevojë, e cila ndonjëherë është bukur, kështu që ju nuk e bëni 370 00:19:43,450 --> 00:19:46,560 duhet të ketë të gjitha këto funksione ulur rreth se ju nuk jeni duke përdorur, 371 00:19:46,560 --> 00:19:49,730 por edhe, në qoftë se ju harroni se ju nevojë për të importuar render_template, 372 00:19:49,730 --> 00:19:52,660 ju ndoshta do të merrni një paralajmërim që do të le ju e dini në lidhje me atë. 373 00:19:52,660 --> 00:19:56,700 Pra, kjo është templating. 374 00:19:56,700 --> 00:20:01,680 >> Pra, ne kemi treguar se si të të bëjë faqet e thjeshtë web, 375 00:20:01,680 --> 00:20:04,947 dhe shtoni pak më shumë logjikë të ajo, në drejtim të kurs ndryshueshme. 376 00:20:04,947 --> 00:20:08,280 Kjo ju lejon të bëni gjëra të ndryshme në bazë të çfarë URL ju shkoni në, dhe edhe atëherë, japin 377 00:20:08,280 --> 00:20:11,950 HTML pak më shumë kuptim në aspektin se si ju doni të bëjnë gjëra. 378 00:20:11,950 --> 00:20:14,210 Ju nuk keni për të vënë të gjithë HTML tuaj në Python tuaj, 379 00:20:14,210 --> 00:20:16,640 por për shumë e shumë çdo aplikim të internetit, 380 00:20:16,640 --> 00:20:21,480 ju jeni do të duan disa lloj i modelit të të dhënave lidhur me të. 381 00:20:21,480 --> 00:20:25,560 >> Dhe kështu tradicionalisht, kjo do të të jetë diçka si një bazë të dhënash SQL. 382 00:20:25,560 --> 00:20:30,280 Dhe vetëm ju mund të ndërveprojnë drejtpërdrejt me SQL. 383 00:20:30,280 --> 00:20:32,190 Python ka, unë mendoj se ajo që quhet. 384 00:20:32,190 --> 00:20:33,040 SQLite 3. 385 00:20:33,040 --> 00:20:38,454 Ju vetëm mund të importojë SQLite 3 dhe ekzekutuar SQL queries direkt, 386 00:20:38,454 --> 00:20:40,870 por unë nuk e di për ju, por unë me të vërtetë nuk më pëlqen, vetëm, 387 00:20:40,870 --> 00:20:42,750 shkrim nga SQL queries. 388 00:20:42,750 --> 00:20:45,350 Ajo tenton të marrë të vërtetë gjatë dhe i komplikuar. 389 00:20:45,350 --> 00:20:49,180 >> Dhe kështu, diçka që Më pëlqen të përdorin është se çfarë është 390 00:20:49,180 --> 00:20:53,610 njohur si një ORM, i cili është objekt-relacionale hartës. 391 00:20:53,610 --> 00:20:56,890 Dhe pika e një objekt-relacionale mapping, 392 00:20:56,890 --> 00:21:00,100 është se ka dy të ndryshme mënyra që ju mund të mendoni për bazat e të dhënave. 393 00:21:00,100 --> 00:21:03,240 >> Kështu shembullin që Profesor Malan zakonisht 394 00:21:03,240 --> 00:21:07,660 përdor në klasë, është tabela Excel, ku ju keni këto rreshtave dhe këto kolona, 395 00:21:07,660 --> 00:21:10,210 dhe kjo është me të vërtetë e dobishme për se si ajo është e përfaqësuar në SQL 396 00:21:10,210 --> 00:21:13,170 dhe se si ndërveprojnë me të, por një mënyrë tjetër që është e vërtetë 397 00:21:13,170 --> 00:21:16,390 dobishme për të menduar për këtë ndonjëherë, është në drejtim të klasave dhe objekteve. 398 00:21:16,390 --> 00:21:20,420 >> Pra, në vend të të menduarit e çdo tavolinë si ka 399 00:21:20,420 --> 00:21:23,040 ky rresht që ka të caktuar informacion, ju mund të vërtetë 400 00:21:23,040 --> 00:21:26,100 të mendojnë për atë si të çdo tabelë është një klasë, 401 00:21:26,100 --> 00:21:29,810 dhe pastaj çdo shembull i klasë ka veti të caktuara. 402 00:21:29,810 --> 00:21:35,110 Pra, në këtë shembull, rastet e klasa janë rreshtave në tabelë, 403 00:21:35,110 --> 00:21:37,490 dhe pastaj çdo pronë do të jetë një kolonë në tabelën. 404 00:21:37,490 --> 00:21:40,840 >> Kështu, ORM që unë si për të përdorur quhet peewee. 405 00:21:40,840 --> 00:21:43,520 Është me të vërtetë e vogël, lloj si balonë. 406 00:21:43,520 --> 00:21:46,760 Unë mendoj se ata të shkojnë mirë së bashku, por ka shumë të ORMs tjera 407 00:21:46,760 --> 00:21:47,730 që ju mund të përdorni. 408 00:21:47,730 --> 00:21:52,180 Një e më popullor është i njohur si SQLAlchemy, 409 00:21:52,180 --> 00:21:56,050 dhe unë nuk mund të kujtohet pse unë fillimisht zgjodhi Peewee mbi SQLAlchemy, 410 00:21:56,050 --> 00:21:58,311 ose unë do të ju them se pse unë mendoj se është më e mira, 411 00:21:58,311 --> 00:22:01,060 por ne jemi vetëm do të përdorin këtë një sepse unë e di se si të përdorin atë. 412 00:22:01,060 --> 00:22:04,760 >> Pra, një pyetje është, pse duhet të ju shqetësoj duke përdorur një ORM, 413 00:22:04,760 --> 00:22:07,552 në vend të vetëm direkt shkrim SQL queries? 414 00:22:07,552 --> 00:22:09,760 Dhe unë mendoj se rastin më të mirë, është se ju në fakt nuk 415 00:22:09,760 --> 00:22:11,356 duhet të shkruajnë SQL queries. 416 00:22:11,356 --> 00:22:14,480 Është shumë më e lehtë, ndërsa unë do të ju tregojnë për të bëjë gjëra të tilla si përzgjedhja, futje, 417 00:22:14,480 --> 00:22:16,157 fshirje, veçanërisht krijimin e tabelave. 418 00:22:16,157 --> 00:22:17,990 Është shumë më e lehtë për të shkruani një strukturë të klasës, 419 00:22:17,990 --> 00:22:22,250 se ajo është për të strukturohet një krijoni Deklarata tabelë, por një gjë 420 00:22:22,250 --> 00:22:25,710 të jetë i vetëdijshëm, është se ORM do të përpiqet të mirë të saj 421 00:22:25,710 --> 00:22:28,640 të kuptoj se çfarë më efikas SQL query do të jetë, 422 00:22:28,640 --> 00:22:30,110 por ndonjëherë ajo merr atë të gabuar. 423 00:22:30,110 --> 00:22:32,660 >> Dhe sidomos në qoftë se ju jeni duke punuar me një bazë të dhënash të madhe, 424 00:22:32,660 --> 00:22:35,557 ju mund të vëreni se një pyetje që duhet të konkurrojnë të shpejtë, 425 00:22:35,557 --> 00:22:36,640 është në të vërtetë duke marrë më të gjatë. 426 00:22:36,640 --> 00:22:40,164 Dhe në qoftë se ju shikoni nën kapuç se si ORM është interpretuar se në SQL, 427 00:22:40,164 --> 00:22:42,080 ajo mund të jetë duke bërë diçka me të vërtetë qesharake, 428 00:22:42,080 --> 00:22:44,371 vetëm për shkak të lloj shenjë qëllimet tuaja gabuar. 429 00:22:44,371 --> 00:22:48,080 Dhe, ka pasur raste ku Unë kam pasur për të shkelur atë, dhe vetëm 430 00:22:48,080 --> 00:22:52,429 ekzekutuar pyetje timen SQL, vetëm sepse ajo ishte parsing në një mënyrë të çuditshme. 431 00:22:52,429 --> 00:22:54,220 Pra, ka disa lart, vetëm në mënyrë të 432 00:22:54,220 --> 00:22:58,680 se ajo harton tuaj Deklaratat e poshtë në SQL. 433 00:22:58,680 --> 00:23:06,200 >> Pra, le të shohim super të shpejtë në Një shembull i thjeshtë i një modeli të dhënave 434 00:23:06,200 --> 00:23:07,350 që ju mund të përdorni. 435 00:23:07,350 --> 00:23:11,880 Pra, kjo është kodi Python, dhe kështu gjëja e parë që ju doni të bëni është nga 436 00:23:11,880 --> 00:23:12,950 peewee * importit. 437 00:23:12,950 --> 00:23:15,850 Pra, ndryshe nga balonë, ku ju keni të gjitha këto module individuale, 438 00:23:15,850 --> 00:23:18,125 dhe ju doni të importit balonë, dhe shkruaj një template, dhe disa të tjerë 439 00:23:18,125 --> 00:23:20,690 se ne do të shohim më vonë, nga Peewee, ju vetëm mund të importojë çdo gjë, 440 00:23:20,690 --> 00:23:22,290 sepse kjo është një bibliotekë mjaft të vogël. 441 00:23:22,290 --> 00:23:26,490 >> Pra, gjëja e parë që ju doni të bëni, është në fakt krijuar këtë objekt bazës së të dhënave. 442 00:23:26,490 --> 00:23:31,212 Pra, ju keni db = SqliteDatabase, dhe pastaj emrin e bazës së të dhënave. 443 00:23:31,212 --> 00:23:33,170 Dhe kjo do të vërtetë të të krijojë një objekt bazës së të dhënave 444 00:23:33,170 --> 00:23:36,230 që ju mund të ndërveprojnë me të, me Peewee. 445 00:23:36,230 --> 00:23:40,570 >> Dhe atëherë, ne kemi aktuale Modeli që ne duam të krijojmë. 446 00:23:40,570 --> 00:23:42,470 Pra, tabela ne duam të krijojmë. 447 00:23:42,470 --> 00:23:47,270 Pra, në kuadër të Peewee, çdo klasë ka Tabela e vet në bazën e të dhënave tuaja. 448 00:23:47,270 --> 00:23:52,800 Pra, të gjitha klasat trashëgojnë nga modeli bazë, 449 00:23:52,800 --> 00:23:55,960 dhe modeli kryeqyteti M është diçka që është përcaktuar në peewee. 450 00:23:55,960 --> 00:24:02,162 >> Pra, të gjitha modelet tuaj duhet trashëgojnë si superklas tyre më të lartë, 451 00:24:02,162 --> 00:24:04,620 ata duhet të trashëgojnë nga model, por ajo që është me të vërtetë e ftohtë, 452 00:24:04,620 --> 00:24:07,610 është se ju në fakt mund të ketë tuaj Modelet trashëgojnë nga njëri-tjetri. 453 00:24:07,610 --> 00:24:10,530 Dhe një shumë e kohës, tuaj Modelet e të dhënave nuk është e detyruar 454 00:24:10,530 --> 00:24:13,754 të bëjë një hierarki e bukur trashëgimi, por raste ku ata e bëjnë, është e vërtetë e bukur, 455 00:24:13,754 --> 00:24:15,920 sepse ju keni modelin pandarë nga njëri-tjetri. 456 00:24:15,920 --> 00:24:19,710 >> Pra, ne përcaktuam këtë klasë 'Studenti', e cila trashëgon një model, 457 00:24:19,710 --> 00:24:21,170 dhe ajo ka tre veti. 458 00:24:21,170 --> 00:24:24,080 Ajo ka një ID, i cili është a PrimaryKeyField, e cila 459 00:24:24,080 --> 00:24:26,920 është diçka që është dhënë nga Peewee, emri është një CharField, 460 00:24:26,920 --> 00:24:28,490 dhe një notë është një IntegerField. 461 00:24:28,490 --> 00:24:32,260 Pra, kjo mund ose nuk mund të jetë si CS50 në fakt ruan të gjithë 462 00:24:32,260 --> 00:24:33,650 notat e nxënësve. 463 00:24:33,650 --> 00:24:36,060 Kjo nuk është, por kjo është se si unë do të bëjë atë. 464 00:24:36,060 --> 00:24:37,920 >> Dhe atëherë ajo ka brenda kjo klasë, dhe kjo 465 00:24:37,920 --> 00:24:41,620 është diçka që ju mund të bëni me Python, ju mund të ketë klasa mbivendosur. 466 00:24:41,620 --> 00:24:43,920 Dhe kjo është diçka që është e nevojshme nga peewee. 467 00:24:43,920 --> 00:24:47,250 Pra, kjo Meta klasë, ju keni për të specifikuar se baza e të dhënave është 468 00:24:47,250 --> 00:24:49,830 barabartë me objektin se kemi krijuar më sipër. 469 00:24:49,830 --> 00:24:54,339 Dhe kjo thotë se ajo skedë është kjo tabelë në të vërtetë do të jenë të përmbajtura në. 470 00:24:54,339 --> 00:24:57,130 Pra, kjo është diçka që ju keni për të bërë në kuadër të të gjitha modeleve tuaja. 471 00:24:57,130 --> 00:24:59,380 Ju thjesht duhet të specifikojë në këtë klasë Meta 472 00:24:59,380 --> 00:25:01,400 bazës së të dhënave që është e barabartë me db. 473 00:25:01,400 --> 00:25:03,940 Pra, ajo që unë zakonisht e bëjnë, në qoftë se unë kam një bandë e modeleve të ndryshme, 474 00:25:03,940 --> 00:25:05,910 është se unë kam një bazë të model, që unë zakonisht 475 00:25:05,910 --> 00:25:08,839 vetëm thirrje "model bazë" që ka klasë Meta, 476 00:25:08,839 --> 00:25:10,380 dhe ajo vendos bazën e të dhënave të barabartë me db. 477 00:25:10,380 --> 00:25:13,710 Dhe pastaj të gjitha modelet e mia të mëvonshme do të trashëgojnë nga atë klasë bazë. 478 00:25:13,710 --> 00:25:16,760 Dhe atëherë unë nuk duhet të shqetësohen për vendosjen klasën Meta. 479 00:25:16,760 --> 00:25:21,490 >> Pra, kur ky fakt merr hartuar poshtë në një deklaratë SQL, 480 00:25:21,490 --> 00:25:24,875 kjo duket si këtë gjë të keqe poshtë këtu, "CREATE TABLE ID studenti numër i plotë, 481 00:25:24,875 --> 00:25:26,020 " cfaredo. 482 00:25:26,020 --> 00:25:30,002 >> Dhe, unë mendoj se kjo është më e shkurtër, kjo SQL query drejtë këtu, 483 00:25:30,002 --> 00:25:32,960 por në qoftë se ju shikoni në këtë klasë këtu ju mund të shikoni saktësisht se çfarë po ndodh. 484 00:25:32,960 --> 00:25:36,116 Ju mund të shihni se çfarë llojet e fushave ka, çfarë ata janë të janë të thirrur, 485 00:25:36,116 --> 00:25:38,115 dhe kështu, unë mendoj se duke kërkuar në këtë kod Python 486 00:25:38,115 --> 00:25:43,340 është shumë më i lexueshëm se duke u përpjekur për të shkruar këtë query SQL. 487 00:25:43,340 --> 00:25:45,990 >> Pra, në mënyrë që në fakt përdorin bazën e të dhënave, 488 00:25:45,990 --> 00:25:48,470 ne duhet të lidheni me atë brenda Python. 489 00:25:48,470 --> 00:25:52,770 Pra, unë zakonisht shkruaj një funksion të quajtur initialize_db se ka dy gjëra. 490 00:25:52,770 --> 00:25:54,880 Ai merr në bazën e të dhënave db objekt dhe kjo 491 00:25:54,880 --> 00:25:58,360 lidhet me të, e cila hapet vetëm deri seksionin në bazën e të dhënave. 492 00:25:58,360 --> 00:26:00,860 Nëse jeni vetëm duke pse Faqja e internetit në kompjuterin tuaj lokal, 493 00:26:00,860 --> 00:26:04,320 kjo nuk është një punë e super të madhe për t'u shqetësuar në lidhje me lidh dhe shkyçja, 494 00:26:04,320 --> 00:26:06,885 por në qoftë se ju do të vrapojnë ajo në një faqe interneti, ju 495 00:26:06,885 --> 00:26:10,010 doni të bëni të sigurtë që, sa herë që një përdorues lidhet me të, kur ata të ngushtë jashtë 496 00:26:10,010 --> 00:26:12,270 Faqja e internetit, ata shkëputje kështu që ju nuk kanë një bandë e njerëzve të lidhur 497 00:26:12,270 --> 00:26:14,480 në bazën e të dhënave tuaj të gjitha përnjëherë. 498 00:26:14,480 --> 00:26:16,370 >> Dhe pastaj, kur ju të lidheni me bazën e të dhënave, 499 00:26:16,370 --> 00:26:20,832 ju doni të telefononi db.create_tables, dhe lista e modeleve për atë që ju dëshironi 500 00:26:20,832 --> 00:26:21,540 për krijimin e tabelave. 501 00:26:21,540 --> 00:26:23,950 Kështu që këtu, unë vetëm dua të të krijuar atë për këtë nxënës. 502 00:26:23,950 --> 00:26:28,070 Dhe pastaj, çfarë është e rëndësishme, është që të specifikoni sigurt = e vërtetë më kohë. 503 00:26:28,070 --> 00:26:30,380 Pra, çfarë kjo deklaratë do të bëjmë, është se ajo 504 00:26:30,380 --> 00:26:33,580 krijon tabelat për Modeli student, por vetëm 505 00:26:33,580 --> 00:26:36,109 nëse kjo tabelë nuk ka krijuar tashmë. 506 00:26:36,109 --> 00:26:37,400 Kjo është ajo që specifikon sigurta. 507 00:26:37,400 --> 00:26:39,150 Pra, kjo nuk do të prishësh tavolinë tuaj ekzistues, 508 00:26:39,150 --> 00:26:41,525 ajo vetëm do të krijojë një të ri Tabela në qoftë se nuk është një atje. 509 00:26:41,525 --> 00:26:45,090 Pra, ju mund vetëm të krijojë tabelat herë duke përdorur SQL. 510 00:26:45,090 --> 00:26:49,410 Dhe pastaj të ketë se ulur bazës së të dhënave atje, dhe pastaj lidheni me çdo kohë, 511 00:26:49,410 --> 00:26:52,450 por kjo është zakonisht e bukur vetëm për të vënë në këtë thirrje create_tables, 512 00:26:52,450 --> 00:26:55,550 kështu që, në qoftë se ju ndonjëherë fshini tuaj kur ju drejtuar bazës së të dhënave web tuaj 513 00:26:55,550 --> 00:26:57,960 app përsëri, ajo do të rikrijuar atë. 514 00:26:57,960 --> 00:27:00,730 >> Pra, vetëm sigurohuni që të sigurta është përcaktuar të jetë e vërtetë, 515 00:27:00,730 --> 00:27:03,580 ose ju do të gjeni të dhënat tuaja vetëm duke u clobbered çdo kohë. 516 00:27:03,580 --> 00:27:06,380 Dhe pastaj, ju vetëm mund të telefononi initialize_db për të krijuar 517 00:27:06,380 --> 00:27:09,820 një lidhje, dhe për të krijuar tavolina nëse është e nevojshme. 518 00:27:09,820 --> 00:27:13,150 >> Pra, gjëja më e zakonshme që ju do të dëshironi të bëni, 519 00:27:13,150 --> 00:27:15,920 ose një nga gjërat më të zakonshme, është që në fakt të futur gjëra të 520 00:27:15,920 --> 00:27:17,170 në bazën e të dhënave tuaja. 521 00:27:17,170 --> 00:27:19,430 Dhe kështu, në vend që për të shkruar një insert NË 522 00:27:19,430 --> 00:27:21,990 deklaratë me të gjithë vlerat e përcaktuara, 523 00:27:21,990 --> 00:27:24,650 ju në fakt mund të telefononi funksion në klasën e studentëve. 524 00:27:24,650 --> 00:27:28,200 Pra, kur ju krijoni një klasë që trashëgon nga modeli, 525 00:27:28,200 --> 00:27:30,200 ajo ka kjo të krijojë metodë. 526 00:27:30,200 --> 00:27:33,870 >> Pra, ju bëni klasit name.create, dhe ju specifikoni parametrat 527 00:27:33,870 --> 00:27:35,260 që ju doni të kalojë në. 528 00:27:35,260 --> 00:27:39,200 Pra, në qoftë se unë dua të shtoj disa studentë në shembullin tonë libri klasën CS50, 529 00:27:39,200 --> 00:27:41,820 Unë do të vënë në Davidin, i cili ka një nota shumë të mira, ai ka një 95. 530 00:27:41,820 --> 00:27:45,100 Dhe veten time, kush nuk e bën aq mirë në CS50, unë kam një 50. 531 00:27:45,100 --> 00:27:47,600 Dhe kështu, gjë e bukur për çfarë ky funksion krijojë bën, 532 00:27:47,600 --> 00:27:53,040 është se kthimit shembull, ose rresht, që ajo krijoi në tryezë, 533 00:27:53,040 --> 00:27:55,750 dhe kështu atëherë ju ruani atë në një ndryshueshme, dhe të punojnë me të më vonë. 534 00:27:55,750 --> 00:27:58,830 Ju mund të ndryshojë rreth, e cila Unë do të tregoj një shembull të. 535 00:27:58,830 --> 00:28:03,050 >> Vini re se unë nuk e bëri duhet të specifikojë ID, 536 00:28:03,050 --> 00:28:09,340 sepse pasi ajo është PrimaryKeyField, ajo do të automatikisht 537 00:28:09,340 --> 00:28:10,930 ardhura atë nëse ju nuk e specifikoni atë. 538 00:28:10,930 --> 00:28:12,250 Dhe, në fakt, ju ndoshta nuk duhet të specifikojë atë, 539 00:28:12,250 --> 00:28:14,810 sepse ju mund të aksidentalisht plaçkë ID e dikujt tjetër. 540 00:28:14,810 --> 00:28:16,830 Dhe ju doni të bëni i sigurt se kjo është unik. 541 00:28:16,830 --> 00:28:20,662 >> Pra, në fakt, më gjë e zakonshme ju doni të bëni, 542 00:28:20,662 --> 00:28:22,620 ndoshta zgjidhni nga bazës së të dhënave sapo ju 543 00:28:22,620 --> 00:28:24,078 kanë shumë informacione në atje. 544 00:28:24,078 --> 00:28:27,360 Dhe kështu, në qoftë se ju doni të merrni gjithçka, kështu ekuivalenti i zgjedhur yllit 545 00:28:27,360 --> 00:28:30,940 nga deklarata studentëve, atë vetëm do të jetë student.select. 546 00:28:30,940 --> 00:28:34,380 Dhe që do të ju jap përsëri një grup me të gjithë nxënësit objekteve në të 547 00:28:34,380 --> 00:28:35,770 që ju të iterate mbi ju dëshironi. 548 00:28:35,770 --> 00:28:37,019 Ju mund të merrni gjërat nga ajo. 549 00:28:37,019 --> 00:28:39,310 Dhe shumicën e kohës, ju nuk duan vetëm për të bërë të zgjedhur, 550 00:28:39,310 --> 00:28:40,935 ju në të vërtetë doni të specifikojë diçka. 551 00:28:40,935 --> 00:28:44,580 Dhe kështu, ju mund zinxhir së bashku këto thirrje funksion, 552 00:28:44,580 --> 00:28:48,830 si si ju do zinxhir Mblidhni deklaratat në SQL. 553 00:28:48,830 --> 00:28:53,002 Kështu që ju mund të bëni student.select (). Ku në këtë shembull. 554 00:28:53,002 --> 00:28:54,710 Dhe pastaj, ju mund të përcaktojnë kushtet, 555 00:28:54,710 --> 00:28:57,880 vetëm duke përdorur Python normale Booleans për të kontrolluar gjërat. 556 00:28:57,880 --> 00:29:02,110 >> Pra, në këtë rast, ju doni të kufizojnë atë që ju jeni zgjedhur për të, 557 00:29:02,110 --> 00:29:06,790 ku student.grade eshte e barabarte me 50, dhe student.name është e barabartë me Ezdras, 558 00:29:06,790 --> 00:29:09,130 kështu që vetëm do të merrni më nga ajo. 559 00:29:09,130 --> 00:29:11,340 Dhe vini re, një të vërtetë gjë delikate këtu është 560 00:29:11,340 --> 00:29:15,570 se, në qoftë se ju doni të specifikoni një dhe / ose një ose dhe / ose, 561 00:29:15,570 --> 00:29:19,840 në Python, ju normalisht do të përdorni, Unë mendoj se fjala "dhe" në fakt, 562 00:29:19,840 --> 00:29:23,351 por këtu ju përdorni simbol të vetme, i cili është normalisht një operator bitwise, 563 00:29:23,351 --> 00:29:25,600 por në këtë rast të veçantë, vetëm mënyra peewee bën atë, 564 00:29:25,600 --> 00:29:27,660 ju përdorni vetëm simbol të specifikojë "dhe." 565 00:29:27,660 --> 00:29:29,451 Kjo është diçka që I merrni përzier shumë, 566 00:29:29,451 --> 00:29:32,530 por ajo nuk ka ardhur deri se shumë në praktikë. 567 00:29:32,530 --> 00:29:36,350 >> Dhe pastaj, një herë ju keni të gjithë studentët nga bazën e të dhënave, 568 00:29:36,350 --> 00:29:39,420 Pasi të keni bërë ju jeni zgjedhur dhe veshin tuaj apo çfarëdo, 569 00:29:39,420 --> 00:29:42,334 ju mund të përdorni një lak foreach, ashtu si normale në Python, 570 00:29:42,334 --> 00:29:44,500 me çdo lloj të iterator ose me çdo lloj të vektorit. 571 00:29:44,500 --> 00:29:46,333 Kështu që ju mund të bëni, për s në student.select (). whe 572 00:29:46,333 --> 00:29:52,930 ri (Student.grade <75), dhe kështu që kjo do iterate mbi çdo student në tabelë 573 00:29:52,930 --> 00:29:56,260 klasën e të cilëve është më pak se 75, e cila në këtë rast, është ende vetëm mua. 574 00:29:56,260 --> 00:29:59,218 Dhe pastaj ju mund të bëni diçka brenda që loop, si më dërgoni një email 575 00:29:59,218 --> 00:30:01,680 dhe më të vërtetë të them kthehet në vë mia Problem. 576 00:30:01,680 --> 00:30:04,550 >> Pra, një tjetër gjë që ju mund të bëni, është e vërtetë e lehtë 577 00:30:04,550 --> 00:30:06,460 për të rinovuar rreshtave brenda tryezë. 578 00:30:06,460 --> 00:30:08,720 Pra, mbani mend kthehen këtu, tuaj kur kam futur, 579 00:30:08,720 --> 00:30:11,440 Kam marrë vlerën që ishte kthyer nga student.create, 580 00:30:11,440 --> 00:30:14,920 dhe unë caktuan atë në emër të quajtur Ezra. 581 00:30:14,920 --> 00:30:18,995 Dhe kështu që tani, ju mund të ndryshojë vlera brenda atë rast, 582 00:30:18,995 --> 00:30:20,870 ashtu si ju do një klasë normale në Python. 583 00:30:20,870 --> 00:30:25,060 >> Kështu që ju mund të vendosni ezra.grade = 95 dhe që do update kopje lokale, 584 00:30:25,060 --> 00:30:28,380 por në qoftë se ju në të vërtetë doni të angazhohen se ndryshimi në bazën e të dhënave, 585 00:30:28,380 --> 00:30:31,410 ju keni për të thirrur ezra.save, kështu që ju quhet metoda .save 586 00:30:31,410 --> 00:30:32,650 në shkallë. 587 00:30:32,650 --> 00:30:38,085 >> Dhe kështu që tani, unë kam ndryshuar me sukses klasën ime në bazën e të dhënave. 588 00:30:38,085 --> 00:30:41,210 Pra, atëherë le të themi se kam marrë të kapur ndryshuar klasën time brenda bazën e të dhënave. 589 00:30:41,210 --> 00:30:44,126 Profesor Malan është ndoshta do të duan të më fshini nga klasa, 590 00:30:44,126 --> 00:30:48,630 dhe kështu që ju mund të telefononi .delete Metoda shembull vetëm në atë gjë. 591 00:30:48,630 --> 00:30:51,674 >> Pra, në qoftë se ju të kërkuar për të shkuar përsëri në këtë lak këtu, 592 00:30:51,674 --> 00:30:53,465 dhe në fakt, në vend i dërguar postë elektronike gjithë 593 00:30:53,465 --> 00:30:56,577 e nxënësve të klasës së cilës është më e vogël se 75, ju të kërkuar për të fshini ato, 594 00:30:56,577 --> 00:30:58,660 në këtë lak ju mund të e quajnë shembull s.delete. 595 00:30:58,660 --> 00:31:04,180 596 00:31:04,180 --> 00:31:07,780 Dhe gjëja e fundit që ju doni të bëni, është sa herë që ju të krijuar një lidhje, 597 00:31:07,780 --> 00:31:10,350 dhe ju jeni bërë me punën tuaj, ju doni të telefononi db.close, 598 00:31:10,350 --> 00:31:13,190 ku db është se baza e të dhënave kundërshtojë që kemi pasur më parë. 599 00:31:13,190 --> 00:31:18,290 Dhe ju doni të bëni të sigurtë që çdo gjë merr mbyllën nga. 600 00:31:18,290 --> 00:31:18,790 >> Ftohtë. 601 00:31:18,790 --> 00:31:22,410 Deri tani, unë kam një kërkesë shembull. 602 00:31:22,410 --> 00:31:26,880 Unë e kam lloj i para-bërë gjithçka vetëm kështu që nuk do të ketë ndonjë coding jetojnë 603 00:31:26,880 --> 00:31:30,220 gabime, por ne mund të ecin nëpër ajo dhe të shohim se si ju do të vënë balonë 604 00:31:30,220 --> 00:31:33,685 dhe Peewee së bashku, dhe të bëjë një app thjeshtë. 605 00:31:33,685 --> 00:31:38,680 Unë e quaj atë CS50 përçartje, dhe kjo është lloj i një platforme të thjeshtë blog. 606 00:31:38,680 --> 00:31:41,150 >> Pra, së pari, unë do të drejtuar atë dhe të tregojë se çfarë ajo duket si, 607 00:31:41,150 --> 00:31:42,890 dhe pastaj ne mund të shikoni më shumë në kodin. 608 00:31:42,890 --> 00:32:00,470 609 00:32:00,470 --> 00:32:02,830 Mirë, kështu që le të vetëm të drejtuar këtë. 610 00:32:02,830 --> 00:32:14,040 611 00:32:14,040 --> 00:32:17,250 Cool, unë do të bëj këtë pak më të vogël. 612 00:32:17,250 --> 00:32:20,000 Kjo nuk është shumë e bukur, vetëm për shkak Unë nuk e ka bërë një shumë të CSS, 613 00:32:20,000 --> 00:32:23,255 por atë që bën është, ajo ka Kjo bazë të dhënash e blog posts, 614 00:32:23,255 --> 00:32:25,630 dhe ajo shkon nëpër të gjitha ata, dhe ajo do të shfaqin ato 615 00:32:25,630 --> 00:32:28,170 në faqen e me qëllim të më të fundit. 616 00:32:28,170 --> 00:32:30,920 Dhe kështu këto janë vetëm disa nga postimet që kisha ruajtur në bazën e të dhënave. 617 00:32:30,920 --> 00:32:35,680 >> Pra, nëse ne duam të krijuar një të ri pas, ne mund të shkojnë në Shto një post të ri, 618 00:32:35,680 --> 00:32:42,720 dhe ne mund të hyjë në titullin e pas, kështu që diçka si, seminar CS50. 619 00:32:42,720 --> 00:32:45,360 620 00:32:45,360 --> 00:32:46,735 Wow, me të vërtetë duke shijuar seminar. 621 00:32:46,735 --> 00:32:51,070 622 00:32:51,070 --> 00:32:52,270 >> Ftohtë. 623 00:32:52,270 --> 00:32:56,060 Pastaj ju shtypni post, dhe ajo do të ju përcjellim përsëri në faqen kryesore, 624 00:32:56,060 --> 00:33:00,039 dhe pastaj ju do të shihni se mesazhin e fundit është shtuar. 625 00:33:00,039 --> 00:33:01,580 Dhe ne ende kemi të gjitha ato atje. 626 00:33:01,580 --> 00:33:08,080 Deri tani, le të hap nëpër të gjitha të Kodi dhe të shohim se si kjo është zbatuar. 627 00:33:08,080 --> 00:33:11,995 >> Kështu që, unë mendoj se gjëja e parë që le të hidhini një sy në, është në fakt modele. 628 00:33:11,995 --> 00:33:14,120 Një shumë e kohës, kur ju jeni dizajnimin diçka, 629 00:33:14,120 --> 00:33:17,036 ju doni të mendoni për herë të parë se si ju jeni duke shkuar për të përfaqësuar të dhënat tuaja, 630 00:33:17,036 --> 00:33:22,915 dhe pastaj projektimit gjëra rreth se, kështu që çdo gjë ka kuptim. 631 00:33:22,915 --> 00:33:25,290 Dhe kjo është në fakt si unë e bëri atë kur unë isha duke e bërë këtë, 632 00:33:25,290 --> 00:33:28,030 U ula dhe mendova, çfarë unë dua në një post. 633 00:33:28,030 --> 00:33:32,130 >> Kështu që, këtu, kemi të njëjtën strukturë që unë u përmendur më herët, 634 00:33:32,130 --> 00:33:33,755 ku ne bëjmë db = Sqldatabase ('posts.db'). 635 00:33:33,755 --> 00:33:37,840 636 00:33:37,840 --> 00:33:40,980 Në të vërtetë, ju ndoshta nuk dëshironi të kodit të vështirë në bazat e të dhënave të emrit tënd. 637 00:33:40,980 --> 00:33:43,730 Që ndoshta duhet të jetë një parametër që është ruajtur diku, ndoshta 638 00:33:43,730 --> 00:33:45,940 në një config file, por në një shembull i vogël si kjo, 639 00:33:45,940 --> 00:33:48,310 kjo është në rregull për të kodit të vështirë që në. 640 00:33:48,310 --> 00:33:53,510 >> Deri tani, ne kemi këtë klasë Post, e cila trashëgon nga modeli bazë. 641 00:33:53,510 --> 00:33:56,930 Dhe kjo ka, përsëri, ID = PrimaryKeyField. 642 00:33:56,930 --> 00:34:02,250 Në fakt, në qoftë se ju nuk e specifikon, në qoftë se unë në fakt hoqa qafe të kësaj, 643 00:34:02,250 --> 00:34:07,152 atëherë Peewee ne do të kujdeset për automatikisht duke krijuar atë arë ID, 644 00:34:07,152 --> 00:34:09,360 dhe ajo do të automatikisht të bëjë atë një PrimaryKey, e cila 645 00:34:09,360 --> 00:34:12,485 Unë mendoj se është me të vërtetë e bukur, sepse zakonisht, kjo është diçka që ju dëshironi të keni, 646 00:34:12,485 --> 00:34:16,239 por unë doja të vënë atë në mënyrë të veçantë, vetëm kështu unë kujtoj se kjo është në atje. 647 00:34:16,239 --> 00:34:19,480 Por në qoftë se ju nuk e specifikon se, se do të jetë atje automatikisht. 648 00:34:19,480 --> 00:34:22,198 >> Kështu pra, unë kam një datë që është një DateTimeField, dhe të gjithë 649 00:34:22,198 --> 00:34:24,864 Këto fusha të ndryshme, në qoftë se ju shikoni në dokumentacionin Peewee, 650 00:34:24,864 --> 00:34:28,920 kjo do t'ju japë një listë e ndryshme llojet e fushave që ju mund të përdorni. 651 00:34:28,920 --> 00:34:34,440 Për pjesën më të madhe, kjo është analoge me atë që ju do të shihni në SQL. 652 00:34:34,440 --> 00:34:37,699 Pra, ka një CharField, një VarCharFields, TextFields, 653 00:34:37,699 --> 00:34:40,550 të cilat janë për shumë kohë tekste, si një blog post 654 00:34:40,550 --> 00:34:44,460 potencialisht, DateTimeFields, DoubleFields, FloatFields, 655 00:34:44,460 --> 00:34:46,100 të gjitha gjërat si kjo. 656 00:34:46,100 --> 00:34:51,570 >> Dhe ju mund të kalojë në argumente të tjera për atë, që unë nuk ka saktësuar këtu. 657 00:34:51,570 --> 00:34:55,719 Thuaj, për shembull, ju nuk doni të të lejojë dy Mesazhe të kenë të njëjtin titull, 658 00:34:55,719 --> 00:34:59,672 ju mund të specifikoni diçka si unike = Vërtetë, 659 00:34:59,672 --> 00:35:02,880 dhe kjo është vetëm një parametër shtesë për ara që kur ai përpilon atë 660 00:35:02,880 --> 00:35:06,865 në SQL, ajo do të specifikojë se ajo duhet të jetë unike. 661 00:35:06,865 --> 00:35:09,740 Ju gjithashtu mund të specifikojë diçka si jo null dhe gjitha gjërat e tjera 662 00:35:09,740 --> 00:35:11,750 normalisht ju bëni në SQL. 663 00:35:11,750 --> 00:35:16,020 Pra, kjo është një shumë e thjeshtë model që ka datën. 664 00:35:16,020 --> 00:35:19,460 Vini re këtu, brenda DateTimeField, Unë specifikuar se çfarë parazgjedhur është. 665 00:35:19,460 --> 00:35:22,560 I specifikuar atë që të jetë datetime.datetime.now, 666 00:35:22,560 --> 00:35:24,920 për shkak të mënyrës se kjo merr vlerësuar, 667 00:35:24,920 --> 00:35:28,750 ai në fakt vlerëson datetime.now kur 668 00:35:28,750 --> 00:35:32,110 ajo merr futur në bazën e të dhënave. 669 00:35:32,110 --> 00:35:34,760 >> Unë mendoj se, unë do të kemi të dyfishtë kontrolloni këtë, 670 00:35:34,760 --> 00:35:38,222 por në qoftë se keni kryer diçka si kjo, atëherë kjo në fakt do të vlerësojë se një herë, 671 00:35:38,222 --> 00:35:40,180 dhe pastaj DateTime do të jetë gjithmonë e njëjtë. 672 00:35:40,180 --> 00:35:44,240 Pra, vetëm në qoftë se ju jeni duke bërë diçka me datetimes, kontrolloni të dyfishtë 673 00:35:44,240 --> 00:35:47,080 se është e vlerësuar kur në fakt merr futur, ose tjetër 674 00:35:47,080 --> 00:35:48,780 ju mund të ngatërrohet. 675 00:35:48,780 --> 00:35:51,221 >> Titulli është vetëm një CharField, e cila ka 676 00:35:51,221 --> 00:35:53,970 më shumë argumente ju mund të kalojë në specifikuar saktësisht se sa kohë ju 677 00:35:53,970 --> 00:35:56,170 duan që ajo të jetë, por këtu, ajo nuk ka të vërtetë rëndësi. 678 00:35:56,170 --> 00:35:58,687 Dhe tekst do të jetë teksti i të gjithë post, 679 00:35:58,687 --> 00:36:01,020 dhe kjo do të jetë një TextField vetëm për shkak se ju doni 680 00:36:01,020 --> 00:36:03,370 të lejojë që ajo të jetë një varg goxha të gjatë. 681 00:36:03,370 --> 00:36:05,970 >> Pastaj ne kemi këtë Meta subclass që vetëm 682 00:36:05,970 --> 00:36:11,250 specifikon se ne duam bazën e të dhënave ku kjo është hapur në fakt deri në 683 00:36:11,250 --> 00:36:14,267 të jetë objekt db që ne kemi këtu. 684 00:36:14,267 --> 00:36:16,350 Dhe gjëja e fundit që ne kemi këtu, është vetëm ky funksion 685 00:36:16,350 --> 00:36:18,120 se ne jemi duke shkuar për përdorim nga bota kryesore 686 00:36:18,120 --> 00:36:23,970 të nisja bazën e të dhënave për të lidhur në ajo, dhe pastaj për të krijuar tabelën Post. 687 00:36:23,970 --> 00:36:26,880 >> Tani, le të shohim në vetë aplikacionin kryesore. 688 00:36:26,880 --> 00:36:30,800 Pra, kjo është mjaft e një pak më të gjatë se ato 689 00:36:30,800 --> 00:36:34,840 që ne kemi parë më parë, por shpresojmë se jo shumë e keqe. 690 00:36:34,840 --> 00:36:37,140 Pra, më lejoni të zgjasë këtë. 691 00:36:37,140 --> 00:36:38,370 Mirë. 692 00:36:38,370 --> 00:36:42,070 >> Pra, vini re dhe të lartë unë importuar një bandë e tërë e gjëra të tjera 693 00:36:42,070 --> 00:36:44,129 nga balonë se ne nuk kemi parë me të vërtetë më parë. 694 00:36:44,129 --> 00:36:46,670 Dhe shpresojmë se, ne mund të kalojnë nëpër secili prej tyre një nga një 695 00:36:46,670 --> 00:36:49,420 dhe të flasim pak më shumë në lidhje me ata, të renditura nga shembull. 696 00:36:49,420 --> 00:36:51,380 Pra, ne kemi balonë, dhe render_template, 697 00:36:51,380 --> 00:36:54,370 të cilat ne kemi parë më parë, ky objekt kërkesë, 698 00:36:54,370 --> 00:37:00,400 i cili do të dalë kur ne shohim se si forma që unë ishte treguar në fakt 699 00:37:00,400 --> 00:37:01,170 punon. 700 00:37:01,170 --> 00:37:04,850 Redirect, e cila ju lejon të përcjellim prapa nga Create New Post të 701 00:37:04,850 --> 00:37:11,710 Kthehu në faqen origjinale, dhe pastaj URL, e cila është diçka që ju lejon të 702 00:37:11,710 --> 00:37:15,550 kuptoj se ku mbi Faqja e internetit një faqe të veçantë është. 703 00:37:15,550 --> 00:37:17,810 >> Kështu pra, tjetër gjë që unë bëj, është të importojë 704 00:37:17,810 --> 00:37:21,550 të gjitha informatat nga modelet e fotografi që ne ishim vetëm duke kërkuar në. 705 00:37:21,550 --> 00:37:23,140 Dhe, vërtet. 706 00:37:23,140 --> 00:37:28,720 >> Pra, diçka tjetër të re që vjen deri kur ju jeni që kanë të bëjnë me të, 707 00:37:28,720 --> 00:37:31,850 sidomos bazat e të dhënave, është se ju mund të specifikoni 708 00:37:31,850 --> 00:37:35,110 një funksion që merr quajtur më parë çdo kërkesë, dhe funksion që merr 709 00:37:35,110 --> 00:37:39,690 i quajtur pas çdo kërkese, duke përdorur këtë Kërkesa FUNKSIONI bojaxhi app.before. 710 00:37:39,690 --> 00:37:42,324 >> Dhe kështu kjo do të ekzekutohet kudo ky funksion është. 711 00:37:42,324 --> 00:37:44,240 Kjo nuk duhet të jetë i quajtur më parë të kërkesës, 712 00:37:44,240 --> 00:37:46,281 por zakonisht kjo është diçka ndjeshme për të thirrur atë. 713 00:37:46,281 --> 00:37:48,580 714 00:37:48,580 --> 00:37:51,650 Ju mund të specifikoni çfarëdo funksioni ju doni të merrni aty thërriti, 715 00:37:51,650 --> 00:37:56,330 kështu që unë specifikuar këtë initialize_db funksion që kemi pasur përsëri në modelet 716 00:37:56,330 --> 00:38:02,390 fotografi, kështu që para çdo kërkesë, ju dëshironi të lidheni me bazën e të dhënave. 717 00:38:02,390 --> 00:38:04,560 >> Nuk janë dy të ndryshme mënyra që ju mund ta bëni këtë. 718 00:38:04,560 --> 00:38:10,830 Ju mund të bëniapp., I besoj se është after_request. 719 00:38:10,830 --> 00:38:13,800 Dhe dallimi në mes after_request dhe teardown_request, 720 00:38:13,800 --> 00:38:17,590 është se after_request do të ndodhë vetëm nëse kërkesa në fakt ishte e vlefshme. 721 00:38:17,590 --> 00:38:20,440 Dhe kështu, vetëm nëse Kërkesa ishte i suksesshëm, 722 00:38:20,440 --> 00:38:22,490 në qoftë se asgjë nuk shkoi keq, por teardown_request 723 00:38:22,490 --> 00:38:26,300 ndodh në rastin e një të suksesshëm kërkesë, ose në rastin e një gabimi. 724 00:38:26,300 --> 00:38:28,252 >> Pra, zakonisht, ju doni për të përdorur teardown_request, 725 00:38:28,252 --> 00:38:30,460 nëse nuk doni të bëni diçka, sidomos të ndryshme 726 00:38:30,460 --> 00:38:31,470 në rastin e një gabimi. 727 00:38:31,470 --> 00:38:35,122 Por vetëm për mbylljen e bazës së të dhënave, nëse ka sukses, ose nëse ajo dështon, 728 00:38:35,122 --> 00:38:37,080 ne nuk ju duan të shkëputje nga bazën e të dhënave. 729 00:38:37,080 --> 00:38:41,240 Pra, ajo që quhet, db.close mbi objektin db. 730 00:38:41,240 --> 00:38:43,740 >> Vini re se teardown_request merr në një përjashtim. 731 00:38:43,740 --> 00:38:46,781 Kështu që ju mund të kontrolloni nëse ka ishte në të vërtetë një gabim kur ajo ishte mbyllur, 732 00:38:46,781 --> 00:38:49,390 por këtu, me shpresë, atje nuk janë një shumë e tërë e gabimeve, 733 00:38:49,390 --> 00:38:52,720 kështu që ne jemi vetëm lloj i injoruar atë. 734 00:38:52,720 --> 00:38:55,990 >> Në rregull, dhe pjesa tjetër e ajo nuk është shumë e keqe. 735 00:38:55,990 --> 00:39:02,240 Pra, kur të shkojmë në faqen kryesore, bëmë këtë Template home.html 736 00:39:02,240 --> 00:39:03,490 që do të hapë. 737 00:39:03,490 --> 00:39:06,240 Kalojë është në postin e e barabartë me, dhe çfarë kjo 738 00:39:06,240 --> 00:39:10,260 nuk është, mos harroni ne kemi këtë post model, kështu që ne kemi zgjedhur të gjitha postimet e bëra, 739 00:39:10,260 --> 00:39:13,890 dhe pastaj një tjetër gjë që ju mund të bëni, ju mund të specifikoni klauzolë ku, 740 00:39:13,890 --> 00:39:16,910 ju mund të specifikoni një porositur nga, dhe kështu që ne kemi marrë 741 00:39:16,910 --> 00:39:18,820 të gjitha postet që merrni zgjedhur, dhe pastaj 742 00:39:18,820 --> 00:39:22,590 ne urdhërojë ata nga post.date.descending. 743 00:39:22,590 --> 00:39:25,030 Dhe që do të specifikojë, kur ata në të vërtetë dalin, 744 00:39:25,030 --> 00:39:29,250 një më të fundit do të jetë një shumë e parë. 745 00:39:29,250 --> 00:39:31,420 >> Dhe atëherë, ne të kalojë atë në template home.html, 746 00:39:31,420 --> 00:39:34,240 kështu që le të vërtetë të hapur që Template të vërtetë të shpejtë, 747 00:39:34,240 --> 00:39:36,760 dhe për të marrë një sy se si kjo është duke punuar. 748 00:39:36,760 --> 00:39:42,130 Dhe kjo nuk është HTML i madh, por me shpresë, ne mund të përqëndrohen në Python. 749 00:39:42,130 --> 00:39:46,960 >> Pra, ka një lidhje të shtoni të reja Post, dhe kështu kjo specifikon rrugë 750 00:39:46,960 --> 00:39:51,580 brenda balonë që ne përcaktojnë, e cila është e drejtë këtu. 751 00:39:51,580 --> 00:39:56,310 Kjo është rruga e re postare, dhe ne të specifikojë se deri këtu. 752 00:39:56,310 --> 00:40:00,450 Dhe kështu që është një lidhje që do të shkojë në atë rrugë brenda server balonë. 753 00:40:00,450 --> 00:40:03,820 >> Gjëja më interesante është kjo për lak këtu. 754 00:40:03,820 --> 00:40:07,685 Pra, ne të specifikojë se kjo parametër post që 755 00:40:07,685 --> 00:40:09,560 u miratua në të funksion render_template, 756 00:40:09,560 --> 00:40:13,550 për çdo post në post-së objekt që merr kaluar në. 757 00:40:13,550 --> 00:40:16,600 Ne duam të shtypura nga titulli pas, në H1, 758 00:40:16,600 --> 00:40:21,930 dhe pastaj më poshtë, ne duam të shtypura nga teksti i mesazhit brenda një paragrafi. 759 00:40:21,930 --> 00:40:25,710 >> Dhe këtu, ne mund të vërtetë thërrasë një funksion Python, 760 00:40:25,710 --> 00:40:35,130 kështu që ne mund të telefononi strftime, ST-RF-kohë, dhe ju mund të kalojë në vargun format 761 00:40:35,130 --> 00:40:37,064 që ju doni të shtypura të dhënat në. 762 00:40:37,064 --> 00:40:39,980 Pra, kjo është shumë e bukur që ju mund të në fakt e quajmë këtë funksion Python 763 00:40:39,980 --> 00:40:41,090 nga brenda këtu. 764 00:40:41,090 --> 00:40:44,370 Ju nuk keni për të bërë formatimin në pala kontrollues, sepse me të vërtetë, 765 00:40:44,370 --> 00:40:47,770 formatimin data është diçka që ju doni që të merren brenda View. 766 00:40:47,770 --> 00:40:51,480 >> Dhe të gjitha këto për qind gjërat nuk është super i rëndësishëm. 767 00:40:51,480 --> 00:40:55,270 Nëse ju shikoni dokumentacionin për funksionin strftime në Python, 768 00:40:55,270 --> 00:40:57,040 kjo specifikon të gjitha këto gjëra, por kjo është 769 00:40:57,040 --> 00:40:59,190 sa, kur ne ishim duke kërkuar në faqen kryesore këtu, 770 00:40:59,190 --> 00:41:04,440 ajo Formatet kjo me një e bukur datën, dhe kjo përcakton AM ose PM, 771 00:41:04,440 --> 00:41:09,410 por normalisht, nëse ne nuk kanë këtë këtu, 772 00:41:09,410 --> 00:41:14,024 ju ndoshta do të merrni disa mbeturina datë që nuk duken shumë të mirë. 773 00:41:14,024 --> 00:41:15,940 Dhe pastaj ne specifikojë post.text, dhe unë mund të 774 00:41:15,940 --> 00:41:19,460 kanë vënë një çift të line breaks here, vetëm 775 00:41:19,460 --> 00:41:21,820 për të vënë disa hapësira në mes të çdo post. 776 00:41:21,820 --> 00:41:26,270 >> Kështu që, unë mendoj se më e rëndësishme gjë në këtë shembull, 777 00:41:26,270 --> 00:41:28,697 është se ju mund të përdorni këtë për lak. 778 00:41:28,697 --> 00:41:30,780 Dhe kjo është analoge me gjëra që ju mund të bëni në PHP. 779 00:41:30,780 --> 00:41:32,905 Ju mund të iterate nëpër, çdo gjë merr kaluar në, 780 00:41:32,905 --> 00:41:36,719 dhe kështu, në vend që të bëjnë kopje / paste, kopje / paste të gjitha HTML e, 781 00:41:36,719 --> 00:41:40,010 ju vetëm duhet të shkruani atë një herë, dhe më pas ju mund të iterate mbi të gjitha postet. 782 00:41:40,010 --> 00:41:41,510 >> Dhe kjo është diçka zakonshme që ju doni 783 00:41:41,510 --> 00:41:44,510 për të bërë, kur ju keni një shumë të të dhënave, është se për çdo gjë në të dhënat tuaja, 784 00:41:44,510 --> 00:41:48,370 ju doni të bëni një gjë të ngjashme. 785 00:41:48,370 --> 00:41:51,690 Dhe pastaj, vetëm mos harroni, se kur ju doni të shkruar diçka në mënyrë eksplicite 786 00:41:51,690 --> 00:41:54,780 në HTML, ju përdorni formatimin e teksteve dyfishtë këtu, 787 00:41:54,780 --> 00:41:57,820 por pastaj kur ju doni të specifikoni disa informacione në lidhje me një kusht, 788 00:41:57,820 --> 00:42:02,430 ose rreth një për lak, ju përdorin për qind kllapa. 789 00:42:02,430 --> 00:42:08,730 >> Pra, duke shkuar prapa në Python Kodi, kështu që shpjegon 790 00:42:08,730 --> 00:42:12,242 çfarë po ndodh në kryesore rrugë, kur të shkojmë atje, 791 00:42:12,242 --> 00:42:14,450 kjo vetëm tregon të gjitha Mesazhe të, por pastaj pyetja 792 00:42:14,450 --> 00:42:17,440 po, si nuk kemi të vërtetë të merrni Mesazhe në bazën e të dhënave, e cila 793 00:42:17,440 --> 00:42:18,970 është pak më shumë interesante. 794 00:42:18,970 --> 00:42:23,960 >> Pra, kur ju klikoni mbi New Lidhje Post, që e pamë këtu, 795 00:42:23,960 --> 00:42:26,000 ajo ju përcjellëse të këtij formulari. 796 00:42:26,000 --> 00:42:29,580 Dhe kjo është vetëm një telefonatë e thjeshtë të funksion render_template, e cila më pas 797 00:42:29,580 --> 00:42:32,110 kalon në postin e ri në formë të HTML. 798 00:42:32,110 --> 00:42:36,212 Pra, le të marrin një vështrim në atë. 799 00:42:36,212 --> 00:42:37,420 Pra, kjo është shumë e thjeshtë. 800 00:42:37,420 --> 00:42:45,110 Ajo ka një formë të thjeshtë HTML, i cili do të duket pak e njohur, 801 00:42:45,110 --> 00:42:47,380 bazuar në formularët në CS50 Financave. 802 00:42:47,380 --> 00:42:49,940 Dhe kështu, që ne të specifikojë këtu, veprimin. 803 00:42:49,940 --> 00:42:52,435 Dhe këtu, në qoftë se ju jeni duke punuar me PHP, normalisht, atë 804 00:42:52,435 --> 00:42:55,930 do të jetë diçka si, create.PHP, por këtu 805 00:42:55,930 --> 00:42:59,960 ne fakt specifikoni një rrugë brenda server balonë. 806 00:42:59,960 --> 00:43:02,520 Dhe kështu, korrespondon kjo rrugë për të krijuar rrugë 807 00:43:02,520 --> 00:43:05,680 që ne kemi këtu, të cilat ne do të shkojnë në në një të dytë. 808 00:43:05,680 --> 00:43:07,630 >> Dhe kështu, ne të specifikojë se kjo është një metodë pas, 809 00:43:07,630 --> 00:43:09,820 sepse ne duam të dërgoni Këto të dhëna formë, dhe zakonisht 810 00:43:09,820 --> 00:43:12,945 kur ju jeni dërguar të dhëna nga një formë, ju mund të dëshironi të përdorni një kërkesë pas, 811 00:43:12,945 --> 00:43:15,760 vetëm kështu që ju nuk do të përfundojnë me këtë të madhe, ngathët URL. 812 00:43:15,760 --> 00:43:18,970 Por ju gjithashtu mund të përdorni një kërkesë GET, dhe të kalojë atë në me kurs ndryshueshme, 813 00:43:18,970 --> 00:43:21,170 por për forma, është e mirë të një kërkese postës këtu. 814 00:43:21,170 --> 00:43:24,620 Dhe kështu pastaj, ashtu si ju do të bëjë me HTML dhe PHP, 815 00:43:24,620 --> 00:43:28,420 ju mund të specifikoni këto inpute tekst, dhe ju mund të specifikoni emrin e tyre, 816 00:43:28,420 --> 00:43:33,490 dhe kjo është emri që do të marrë kaluar në objektin e kërkesës brenda balonë. 817 00:43:33,490 --> 00:43:36,960 >> Dhe pastaj ne kemi një Submit buton që thotë Post. 818 00:43:36,960 --> 00:43:40,760 Dhe këtu, Posta është emri i button, sepse kjo është një blog post, 819 00:43:40,760 --> 00:43:42,700 por këtu, pas është metoda kërkesa. 820 00:43:42,700 --> 00:43:47,060 Kështu që ata janë e njëjta fjalë por në fakt pa lidhje. 821 00:43:47,060 --> 00:43:48,460 Vërtet 822 00:43:48,460 --> 00:43:54,800 >> Going back to kodit Python, kur kemi quajtur krijojnë metoda, 823 00:43:54,800 --> 00:43:57,702 vini re këtu se ju mund të në fakt të përcaktojë brenda rrugës 824 00:43:57,702 --> 00:44:00,650 metodat kërkesë se ju doni për të pranuar, 825 00:44:00,650 --> 00:44:04,770 dhe kështu që këtu, unë të specifikojë se unë vetëm duan për të pranuar një metodë Post. 826 00:44:04,770 --> 00:44:09,800 Pra, në qoftë se unë në fakt të përpiqet për të vizitoni faqen direkt, i cili është përdorur një kërkesë marrin, 827 00:44:09,800 --> 00:44:11,700 ai do të më thoni "Metoda nuk lejohet." 828 00:44:11,700 --> 00:44:15,840 >> Dhe kështu, ju keni faqet, lloj si Kjo faqe krijojë, të cilën unë jam vetëm 829 00:44:15,840 --> 00:44:20,192 me të vërtetë duke përdorur si një mënyrë për forma për të marrë të paraqitur, 830 00:44:20,192 --> 00:44:22,900 ju mund të specifikoni se ju nuk e bëni dua që njerëzit të jenë në gjendje për të shkuar atje 831 00:44:22,900 --> 00:44:25,650 direkt nëpërmjet një kërkese të merrni, ose në qoftë se ju nuk doni, 832 00:44:25,650 --> 00:44:28,580 për disa arsye, një kërkesë Post, ju mund vetëm të specifikojë GET këtu, 833 00:44:28,580 --> 00:44:32,720 por në këtë shembull, ne vetëm dëshironi kërkesa Post për të dalë. 834 00:44:32,720 --> 00:44:38,700 >> Pra, kur create_post quhet, kur kemi vizituar se nëpërmjet kërkesës Post, 835 00:44:38,700 --> 00:44:43,600 sa herë që ju të shkoni në një të veçantë rrugë, ka kjo kërkesë objekt, 836 00:44:43,600 --> 00:44:46,640 dhe ne kishim për të importuar Kërkesat në krye, 837 00:44:46,640 --> 00:44:49,640 por ka kjo kërkesë objekt që merr kaluar në, 838 00:44:49,640 --> 00:44:53,210 dhe ju mund të hyni në të dhënat formë, e cila automatikisht do të merrni mbushur 839 00:44:53,210 --> 00:44:55,070 kur ju të dërgoni një kërkesë nga një formë. 840 00:44:55,070 --> 00:44:56,990 >> Dhe pastaj, çfarë unë mendoj është me të vërtetë e ftohtë, është e 841 00:44:56,990 --> 00:45:02,840 se forma objekti për të marrë kaluar në, është vetëm një fjalor Python që 842 00:45:02,840 --> 00:45:10,560 përmban, në qoftë se ju access-- kështu që këtu, le të mua tërheq lart HTML pranë tij, vetëm 843 00:45:10,560 --> 00:45:17,670 kështu që ju mund të keni atë si një referencë, Po, kështu që 844 00:45:17,670 --> 00:45:21,060 emrat që ne të specifikojë këtu për fusha të ndryshme, kështu që 845 00:45:21,060 --> 00:45:23,900 titulli dhe teksti, ne atëherë vetëm përdorni ato gjatë këtu 846 00:45:23,900 --> 00:45:27,110 si indekse në të dhënat formë. 847 00:45:27,110 --> 00:45:28,950 Pra, kjo është super i përshtatshëm. 848 00:45:28,950 --> 00:45:33,320 >> Pra, atëherë ne e quajmë post.create, e cila do të krijojë dhe automatikisht futur 849 00:45:33,320 --> 00:45:36,850 Ky objekt i ri pas në bazën e të dhënave. 850 00:45:36,850 --> 00:45:40,690 Dhe unë mendoj se kjo krijoj funksionin këtu është një shembull i vërtetë cool se si 851 00:45:40,690 --> 00:45:44,900 balonë i fuqishëm është dhe duke punuar me këtë, sepse në qoftë se ju jeni duke bërë diçka 852 00:45:44,900 --> 00:45:48,660 në PHP, ju mund të keni për të të bëjë një shumë të validimit, 853 00:45:48,660 --> 00:45:51,730 ju do të keni për të, atëherë të krijuar një lidhje bazës së të dhënave, 854 00:45:51,730 --> 00:45:55,210 ju do të keni për të, atëherë ekzekutuar query SQL, 855 00:45:55,210 --> 00:45:59,550 por këtu ne vetëm duhet kjo e bukur post.create, të cilat ne mund atëherë vetëm 856 00:45:59,550 --> 00:46:01,520 të marrë informacion nga e kërkesës objektit, 857 00:46:01,520 --> 00:46:05,370 dhe pastaj të kalojë atë në një të ri postoni se ne jemi duke krijuar. 858 00:46:05,370 --> 00:46:07,850 >> Dhe pastaj, shumë e fundit gjë që ne duam të bëjmë, 859 00:46:07,850 --> 00:46:09,630 është që të përcjellim Mbrapsht në shtëpi. 860 00:46:09,630 --> 00:46:13,020 Dhe kështu që ne përdorim këtë Balonë përcjellëse funksion. 861 00:46:13,020 --> 00:46:17,770 Dhe diçka që ne nuk e kishte parë para, ishte ky funksion URL. 862 00:46:17,770 --> 00:46:21,970 Pra, URL për funksionin lejon ju të kalojë në fakt emri 863 00:46:21,970 --> 00:46:26,090 i një funksioni në kodin tuaj Python, në vend se rrugë të veçantë 864 00:46:26,090 --> 00:46:26,720 se kjo është në. 865 00:46:26,720 --> 00:46:32,107 >> Kështu që unë mund të ketë po aq e lehtë ridrejtuar një përdorues për të zvogëluar, 866 00:46:32,107 --> 00:46:37,050 e cila do të dërgoni atë përsëri në shtëpi, por duke përdorur URL për funksion është e bukur, 867 00:46:37,050 --> 00:46:39,990 sepse në qoftë se ju të ndryshojë vendi ku gjërat janë, 868 00:46:39,990 --> 00:46:44,080 kështu që le të themi se kam ndryshuar shtëpi të jetë në / shtëpi në vend të kësaj, 869 00:46:44,080 --> 00:46:47,040 kjo ende më pas do të kthehen / shtëpi, sepse në fakt shkon dhe duket deri 870 00:46:47,040 --> 00:46:50,770 emri i funksionit, dhe ajo do të të japin të mbështesë URL për këtë. 871 00:46:50,770 --> 00:46:52,490 >> Pra, lloj i mbi supozimi se ju jeni 872 00:46:52,490 --> 00:46:55,489 më shumë të ngjarë të ndryshojë ku gjërat janë, se emrat e funksioneve. 873 00:46:55,489 --> 00:46:58,840 Ju mund të përdorni këtë të vërtetë bukur URL për funksionin. 874 00:46:58,840 --> 00:47:02,470 Dhe një gjë që të jetë i vetëdijshëm për që është pak e ndërlikuar, 875 00:47:02,470 --> 00:47:05,750 është se ju mendoni se ju mund vetëm thërrasë përcjellim në URL për, 876 00:47:05,750 --> 00:47:10,600 por në të vërtetë të gjitha rrugët kanë për t'u kthyer një lloj të tekstit dhe HTML, 877 00:47:10,600 --> 00:47:14,360 kështu që ju në të vërtetë keni për të kthimin e thirrjes përcjellëse. 878 00:47:14,360 --> 00:47:18,379 Përndryshe, ju do të merrni diçka pavlefshme për të mos kthyer një varg, 879 00:47:18,379 --> 00:47:21,420 sepse të gjitha këto duhet të kthehen HTML ju të vërtetë duan të bëjnë. 880 00:47:21,420 --> 00:47:26,980 >> Dhe kështu, kur ju telefononi përcjellëse, ajo ju përcjellëse në faqe, 881 00:47:26,980 --> 00:47:30,270 por në fakt ajo kthen HTML ju keni nevojë për të ekzekutuar atë përcjellëse. 882 00:47:30,270 --> 00:47:34,430 883 00:47:34,430 --> 00:47:37,110 Kthehu mbrapa në faqen kryesore. 884 00:47:37,110 --> 00:47:39,200 Pra, ne kemi këto dy pikëpamje të ndryshme. 885 00:47:39,200 --> 00:47:40,132 Ne kemi pikëpamje shtëpi. 886 00:47:40,132 --> 00:47:41,590 Ose, unë mendoj unë duhet të them templates. 887 00:47:41,590 --> 00:47:44,190 Ne kemi këto dy templates, template shtëpi që 888 00:47:44,190 --> 00:47:48,500 tregon të gjitha postimet tona, dhe atëherë kemi këtë gjë ad, 889 00:47:48,500 --> 00:47:52,970 dhe kur ju klikoni këtë post, ajo shkon në një rrugë të re në kuadër të balonë, 890 00:47:52,970 --> 00:47:55,920 por kjo rrugë nuk do të kanë një template përkatëse. 891 00:47:55,920 --> 00:47:59,290 892 00:47:59,290 --> 00:48:01,560 Ju nuk keni për të parë asgjë, por ju prapë mund të 893 00:48:01,560 --> 00:48:04,090 kanë këtë punë do në prapaskenë. 894 00:48:04,090 --> 00:48:07,450 Dhe pastaj ju merrni ridrejtuar Kthehu në faqen kryesore. 895 00:48:07,450 --> 00:48:12,230 Dhe pa dyshim, është e lehtë për të punuar në disa CSS nicer në template 896 00:48:12,230 --> 00:48:15,580 dhe e bëjnë këtë të duket një shumë nicer, por të gjithë e logjikës kryesore 897 00:48:15,580 --> 00:48:18,590 është atje në Python. 898 00:48:18,590 --> 00:48:20,020 >> Ndonjë pyetje në lidhje me këtë shembull? 899 00:48:20,020 --> 00:48:22,760 Unë e di se ka shumë të gjëra të ndryshme ndodh atje, 900 00:48:22,760 --> 00:48:25,341 shumë gjëra që ne nuk e kishte parë para, por si çdo gjë. 901 00:48:25,341 --> 00:48:25,840 Po. 902 00:48:25,840 --> 00:48:28,346 >> AUDIENCA 1: A ju duhet të bëni ndonjë gjë të veçantë për pastrim të dhënave që është 903 00:48:28,346 --> 00:48:29,600 vijnë nga forma? 904 00:48:29,600 --> 00:48:31,109 Kam vënë re se ju vetëm tha "të krijojë" 905 00:48:31,109 --> 00:48:33,900 EZRA Zigmond: Yeah, kështu që kjo është në fakt, kjo është një pikë të vërtetë të mirë. 906 00:48:33,900 --> 00:48:36,350 Pra, pyetja është, a duhet të kontrolloni dhe sigurohuni 907 00:48:36,350 --> 00:48:39,190 që të dhënat është e vlefshme, dhe bëjnë ndonjë lloj të ashpër 908 00:48:39,190 --> 00:48:41,840 për t'u siguruar se ajo është e vlefshme, sepse si ju mund të shihni këtu, 909 00:48:41,840 --> 00:48:42,660 Unë nuk jam duke bërë atë. 910 00:48:42,660 --> 00:48:48,140 Pra, le të shohim se çfarë ndodh në qoftë se unë të postoni diçka bosh. 911 00:48:48,140 --> 00:48:51,190 Pra, kjo do të në fakt vetëm të bëjë një pas bosh dhe plotësoni në dataKoha. 912 00:48:51,190 --> 00:48:55,990 >> Pra, në realitet, ju ndoshta do të dëshironi të bëni diçka si, 913 00:48:55,990 --> 00:49:04,749 ndoshta specifikoni nëse titulli është e barabartë me string i zbrazët, atëherë nuk e bëjmë këtë. 914 00:49:04,749 --> 00:49:07,290 Apo, vetëm të bëjë atë nëse titulli është jo të barabartë me vargun e zbrazët. 915 00:49:07,290 --> 00:49:10,330 Pra, kjo nuk ka të vërtetë automatikisht të kujdeset për atë ashpër 916 00:49:10,330 --> 00:49:12,820 për ju, kështu që ju ende nevojë për të bërë këtë. 917 00:49:12,820 --> 00:49:14,330 Po, pyetje e mirë. 918 00:49:14,330 --> 00:49:18,497 >> AUDIENCA 2: A ka pastrim për injeksion vazhdim? 919 00:49:18,497 --> 00:49:19,890 A e dini se? 920 00:49:19,890 --> 00:49:22,830 >> EZRA Zigmond: Shpresojmë, peewee e bën këtë. 921 00:49:22,830 --> 00:49:25,830 Unë mendoj se do të jetë një goxha Biblioteka keq në qoftë se ajo nuk e ka bërë atë. 922 00:49:25,830 --> 00:49:29,511 923 00:49:29,511 --> 00:49:32,690 Unë nuk e di saktësisht. 924 00:49:32,690 --> 00:49:34,820 Unë do të duhet të shikojmë në query se ajo gjeneruar. 925 00:49:34,820 --> 00:49:38,980 Unë mendoj se, në qoftë se unë shtypur në një blog post se lloj i dukej 926 00:49:38,980 --> 00:49:46,370 si një sulm SQL injeksion, diçka e tillë, nëse kjo 927 00:49:46,370 --> 00:49:49,370 është si një fushë fjalëkalim apo diçka, ju mund të bëni diçka si kjo. 928 00:49:49,370 --> 00:49:53,410 >> Unë mendoj se do të vazhdojë merrni postuar fjalë për fjalë, 929 00:49:53,410 --> 00:49:59,200 por unë mendoj se peewee bën një lloj i ashpër e të dhënave 930 00:49:59,200 --> 00:50:01,680 para se ai në fakt ekzekuton atë. 931 00:50:01,680 --> 00:50:04,510 >> AUDIENCA 1: Kjo fushë tekst është projektuar për të marrë plain text, e drejtë? 932 00:50:04,510 --> 00:50:05,710 >> EZRA Zigmond: Po, ajo është. 933 00:50:05,710 --> 00:50:06,465 Po. 934 00:50:06,465 --> 00:50:09,590 Kështu që unë mendoj se të gjithë e, kështu që kjo është sjellje korrekte, që do të bëjë këtë, 935 00:50:09,590 --> 00:50:12,170 Por unë mendoj se Peewee shpresojmë se ka bërë 936 00:50:12,170 --> 00:50:13,780 një lloj e mbrojtjes në fundin e tyre. 937 00:50:13,780 --> 00:50:16,090 Dhe në qoftë se ju të kërkuar për kontrolloni të dyfishtë që ka 938 00:50:16,090 --> 00:50:19,530 mënyra kur ju të gjenerojë një pyetje. 939 00:50:19,530 --> 00:50:22,622 kështu që ju nuk keni për të ekzekutuar atë direkt. 940 00:50:22,622 --> 00:50:24,330 Unë do të duhet për të marrë një shikoni në dokumentacion, 941 00:50:24,330 --> 00:50:27,930 por ju në fakt mund të shikoni SQL se ajo është gjeneruar, 942 00:50:27,930 --> 00:50:30,840 dhe për të marrë një vështrim në atë dhe të bëjnë i sigurt se ajo është e ikin gjërat. 943 00:50:30,840 --> 00:50:33,700 >> Një tjetër arsye pse ju mund dëshironi të shikoni në SQL 944 00:50:33,700 --> 00:50:37,920 që peewee është kompjuteri, është nëse gjërat duket të jetë duke shkuar me të vërtetë ngadalë, 945 00:50:37,920 --> 00:50:41,090 ju mund të marrë një sy dhe shikoni se çfarë është vërtetë për ta bërë, sepse kjo është ndonjëherë 946 00:50:41,090 --> 00:50:44,670 të lehtë për të shtuar aksidentalisht në, në mënyrë që ju shkruani atë, 947 00:50:44,670 --> 00:50:47,880 ju aksidentalisht mund të keni atë zgjidhni të gjithë bazën e të dhënave të parë, 948 00:50:47,880 --> 00:50:50,230 dhe pastaj të bëjë disa operacion renditjes në se, kur ju me të vërtetë 949 00:50:50,230 --> 00:50:51,320 do të thotë për të zgjedhur një mesin. 950 00:50:51,320 --> 00:50:53,560 >> Dhe kështu, nëse gjërat nuk janë mjaft duke shkuar drejtë, 951 00:50:53,560 --> 00:50:57,300 kjo është e mirë për të marrë një sy në kërkesën që është në të vërtetë duke gjeneruar. 952 00:50:57,300 --> 00:50:57,800 Po. 953 00:50:57,800 --> 00:51:02,100 >> AUDIENCA 2: Kur keni filluar, ju vënë në portin si 5000. 954 00:51:02,100 --> 00:51:02,904 >> EZRA Zigmond: Po. 955 00:51:02,904 --> 00:51:06,070 AUDIENCA 2: A është parazgjedhur me Peewee, apo është diçka që ju mund të ndryshojë? 956 00:51:06,070 --> 00:51:10,870 EZRA Zigmond: Po, kështu që Porti është paracaktuar me balonë. 957 00:51:10,870 --> 00:51:13,061 Nëse keni drejtuar atë pa specifikuar asgjë, 958 00:51:13,061 --> 00:51:14,310 ajo automatikisht do të bëjë atë. 959 00:51:14,310 --> 00:51:16,060 Unë besoj se, unë do të kemi të dyfishtë kontrolloni këtë, 960 00:51:16,060 --> 00:51:19,130 por ju mund të specifikoni se në app.run, Unë mendoj se ju mund të bëni diçka si, 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 Le të japim atë një provoni vërtetë të shpejtë. 964 00:51:23,750 --> 00:51:29,100 965 00:51:29,100 --> 00:51:32,230 Yeah, kështu që ju vetëm mund të specifikoni port = 8080, dhe ajo do të kandidojë atë atje, 966 00:51:32,230 --> 00:51:36,130 që unë mendoj se, në qoftë se ju të kërkuar për të drejtuar atë në IDE, unë nuk e kanë provuar këtë, 967 00:51:36,130 --> 00:51:38,527 por unë mendoj se në qoftë se ju vrapoi atë në portin 8080, 968 00:51:38,527 --> 00:51:40,360 ju ndoshta do të jetë në gjendje për të hyrë në server, 969 00:51:40,360 --> 00:51:41,870 ashtu si ju keni qenë për faqen e internetit. 970 00:51:41,870 --> 00:51:44,390 >> Po, por është e lehtë për të ndryshuar atë në qoftë se ju 971 00:51:44,390 --> 00:51:48,540 kanë ndonjë lloj si port-forwarding gjëra që ju duhet të bëni. 972 00:51:48,540 --> 00:51:50,410 >> Ndonjë pyetje të tjera? 973 00:51:50,410 --> 00:51:50,916 Po? 974 00:51:50,916 --> 00:51:53,416 AUDIENCA 1: Pra, unë pashë në tuaj Modelet që, si ju përmendur, 975 00:51:53,416 --> 00:51:55,647 ju duhet të specifikojë bazës së të dhënave për çdo objekt. 976 00:51:55,647 --> 00:51:58,105 A ju ndodh që të dini, nuk që e bëjnë atë të vërtetë e lehtë në qoftë se ju 977 00:51:58,105 --> 00:52:03,210 kanë shumë të bazave të të dhënave SQLite që ju dëshironi të përdorni për një app të vetme web, 978 00:52:03,210 --> 00:52:07,210 që ju mund vetëm të specifikoni një bandë e ato të ndryshme në modelin tuaj? 979 00:52:07,210 --> 00:52:11,620 >> EZRA Zigmond: Po, le të më hapur se deri vërtetë të shpejtë. 980 00:52:11,620 --> 00:52:17,570 Pra, ju jeni duke thënë, në qoftë se ju dëshironi të keni një bandë e diçka të ndryshme, ndoshta 981 00:52:17,570 --> 00:52:22,670 si dhe studentët, për disa arsye, diçka si kjo? 982 00:52:22,670 --> 00:52:26,870 Yeah, kështu që unë mendoj se ju ende, çdo model 983 00:52:26,870 --> 00:52:30,652 do të duhet të ketë vetëm ende një bazë të dhënash të caktuar në të, 984 00:52:30,652 --> 00:52:32,610 por në qoftë se ju të kërkuar për ketë modele të ndryshme që 985 00:52:32,610 --> 00:52:35,818 kanë caktuar objekte të ndryshme bazës së të dhënave për atë, ju mund të patjetër të bëjë atë. 986 00:52:35,818 --> 00:52:43,070 Pra, në qoftë se unë krijuar një të re, diçka si kjo, 987 00:52:43,070 --> 00:52:47,000 dhe tani kjo është një student që duket kaq të çuditshme si një blog post, 988 00:52:47,000 --> 00:52:49,390 Unë mund të specifikojë se bazës së të dhënave është e barabartë me db_2 këtu. 989 00:52:49,390 --> 00:52:51,390 Kështu që, unë mendoj se është rruga kryesore që ju mund të bëni atë. 990 00:52:51,390 --> 00:52:54,560 991 00:52:54,560 --> 00:52:56,200 >> Ftohtë. 992 00:52:56,200 --> 00:52:58,410 Ndonjë pyetje të tjera? 993 00:52:58,410 --> 00:53:02,170 >> Pra, vetëm për të përfunduar deri pak bit, këtu janë disa burime, 994 00:53:02,170 --> 00:53:06,030 dhe këto slides do të postohen në internet kështu që ju mund të vërtetë të merrni në këto lidhje. 995 00:53:06,030 --> 00:53:08,500 Burimet më të mira janë me të vërtetë dokumentacioni për balonë 996 00:53:08,500 --> 00:53:09,930 dhe Peewee veten. 997 00:53:09,930 --> 00:53:12,940 Ata janë të shkruar me të vërtetë mirë, unë mendoj. 998 00:53:12,940 --> 00:53:18,180 Pra, në faqen e internetit balonë është këtu, dhe ata kanë një QuickStart tutorial se 999 00:53:18,180 --> 00:53:20,710 do të ecin nëpër ngjashme gjëra në atë që unë eci nëpër, 1000 00:53:20,710 --> 00:53:23,560 por në qoftë se ju doni ndonjë lloj të rishikimit nga gjërat që unë shkova mbi, 1001 00:53:23,560 --> 00:53:26,200 apo keni menduar se kam shpjeguar diçka në një mënyrë konfuze, 1002 00:53:26,200 --> 00:53:28,390 ata do të kenë shembuj të ngjashme atje. 1003 00:53:28,390 --> 00:53:31,570 >> Peewee ka dokumentacion, dhe ata kanë një QuickStart tutorial 1004 00:53:31,570 --> 00:53:34,650 që shkon mbi parametrat kryesorë që ju do të dëshironi të përdorni. 1005 00:53:34,650 --> 00:53:38,900 Pra, gjërat kam biseduar në lidhje me e unike, e specifikuar defaults, 1006 00:53:38,900 --> 00:53:42,710 llojet e ndryshme të fushave që ju mund të përdorni, ata të gjithë do të jenë aty. 1007 00:53:42,710 --> 00:53:44,690 >> Gjithashtu, në qoftë se ju keni pyetje në lidhje me Peewee, 1008 00:53:44,690 --> 00:53:47,530 dhe ju postoni ato në StackOverflow, djalosh i cili bëri Peewee fakt 1009 00:53:47,530 --> 00:53:49,500 vazhdon dhe përgjigjet ata ndonjëherë. 1010 00:53:49,500 --> 00:53:53,200 Nëse keni një pyetje, me shpresë ai do të jetë në gjendje për t'iu përgjigjur ajo, 1011 00:53:53,200 --> 00:53:54,867 sepse ai shkroi të gjithë gjë. 1012 00:53:54,867 --> 00:53:56,700 Unë mendoj se kjo është gjithçka Unë të kërkuar për të mbuluar. 1013 00:53:56,700 --> 00:53:58,930 Faleminderit për të ardhur nga. 1014 00:53:58,930 --> 00:54:02,688