1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:03,227 [За възпроизвеждане на музика] 3 00:00:03,227 --> 00:00:04,705 4 00:00:04,705 --> 00:00:05,830 Езра ZIGMOND: Здравейте, всички. 5 00:00:05,830 --> 00:00:08,020 Благодаря, че дойдохте днес. 6 00:00:08,020 --> 00:00:10,660 Този семинар е "Python Web Apps с Flask. " 7 00:00:10,660 --> 00:00:14,510 >> Така че, аз отивам да се говори малко за това, защо 8 00:00:14,510 --> 00:00:17,400 може да искате да използвате, за да Flask уеб приложения с Python, за разлика 9 00:00:17,400 --> 00:00:21,556 с някои други рамки там, като Джанго, който е най-добре познати. 10 00:00:21,556 --> 00:00:24,330 Подзаглавието е "и Пи- луи ", което е нещо 11 00:00:24,330 --> 00:00:27,250 ние ще говорим за това как да си взаимодействат с SQL бази данни. 12 00:00:27,250 --> 00:00:29,610 Това го прави много хубаво. 13 00:00:29,610 --> 00:00:32,390 >> Така че, тук е просто един бърз стъпки от това, което аз искам да отида. 14 00:00:32,390 --> 00:00:35,520 Така че, на първо място, само на един слайд че ще бъде QuickStart, 15 00:00:35,520 --> 00:00:38,530 което е как да получите всичко, изправи на вашия компютър. 16 00:00:38,530 --> 00:00:41,760 Отивам да се демонстрира този на моя местен Mac машина, 17 00:00:41,760 --> 00:00:45,220 Просто защото това е мястото, където съм направил това преди, аз съм най-удобно с него, 18 00:00:45,220 --> 00:00:48,510 но това е определено възможно на CD50 IDE. 19 00:00:48,510 --> 00:00:52,050 >> Така че, след това, искам да представим какво Flask е, 20 00:00:52,050 --> 00:00:55,089 и да ви убеди, защо трябва да я използват на първо място. 21 00:00:55,089 --> 00:00:56,880 След това, аз ще дам един бърз пример за това, което 22 00:00:56,880 --> 00:01:00,550 може да се направи в колба, един бърз пример от това, което можете да направите в Пи- луи, 23 00:01:00,550 --> 00:01:05,010 и след това аз ще ви покажа по- пълен пример за приложение 24 00:01:05,010 --> 00:01:07,520 че аз, взети заедно, че ние да преминете през заедно. 25 00:01:07,520 --> 00:01:10,040 >> И накрая, в последния слайд, имам 26 00:01:10,040 --> 00:01:12,730 някои ресурси, които ви изглеждат при повече информация онлайн. 27 00:01:12,730 --> 00:01:15,560 Това не е пълен урок за това как да се използва колба. 28 00:01:15,560 --> 00:01:18,140 И аз ще се надявам да напусне известно време за въпроси. 29 00:01:18,140 --> 00:01:21,050 Всеки, който гледа на местно ниво, просто като, вик в средата 30 00:01:21,050 --> 00:01:22,340 ако имате някакви въпроси. 31 00:01:22,340 --> 00:01:27,150 >> Така че бързото неща инсталация, ако искате да следват заедно, 32 00:01:27,150 --> 00:01:29,240 или ако искате да се получи това на вашия собствен машина, 33 00:01:29,240 --> 00:01:32,440 Отивам да се използване на Python 07.02.10. 34 00:01:32,440 --> 00:01:35,860 Flask върши работа с Python 3, но ми харесва 35 00:01:35,860 --> 00:01:38,660 използване на Python 2, защото има някои Python пакети, които 36 00:01:38,660 --> 00:01:40,910 не работят с 3 все още. 37 00:01:40,910 --> 00:01:44,800 Ако семка сте инсталирали, които е програма за управление на пакетите Python, 38 00:01:44,800 --> 00:01:48,190 Мисля, че ако си Python е по-голямо от или равно на 2.7.9, 39 00:01:48,190 --> 00:01:52,220 Имате ли вече инсталирана, това е супер лесно да инсталирате тези пакети. 40 00:01:52,220 --> 00:01:54,990 >> Можете да се пип инсталиране Колба, пипс инсталирате Пи- луи, 41 00:01:54,990 --> 00:01:58,600 Обикновено трябва да стартирате Sudo просто така че разрешенията да тренират. 42 00:01:58,600 --> 00:02:01,080 И, ако сте с помощта на супер версия на Python стари, 43 00:02:01,080 --> 00:02:05,100 Аз препоръчвам да актуализирате вашия Python, или използване на EasyInstall да инсталирате семка. 44 00:02:05,100 --> 00:02:09,180 45 00:02:09,180 --> 00:02:11,120 Така че, следващият въпрос е, какво е Flask? 46 00:02:11,120 --> 00:02:13,280 И аз предполагам, първо разумен въпрос Чудех 47 00:02:13,280 --> 00:02:15,585 за дълго време е, какво е уеб приложение? 48 00:02:15,585 --> 00:02:17,960 Защото това е дума, която съм мислите, че е хвърлен около една партида 49 00:02:17,960 --> 00:02:19,240 че аз наистина не знам. 50 00:02:19,240 --> 00:02:22,340 И аз мисля, че най-доброто, пример за това какво уеб приложение е, 51 00:02:22,340 --> 00:02:26,960 Наистина е CS50 финансите, където това не е наистина само един сайт, 52 00:02:26,960 --> 00:02:29,320 но това е нещо, което ти можеше някак си взаимодействат с. 53 00:02:29,320 --> 00:02:31,736 Има потребителски акаунти и най-различни неща. 54 00:02:31,736 --> 00:02:35,010 Така че, къде точно рисуваш линия между това, което е уебсайт, 55 00:02:35,010 --> 00:02:38,780 и какво е уеб приложение, е нещо като произволно, но предполагам, че идеята, 56 00:02:38,780 --> 00:02:42,110 това е нещо повече от един уеб сайт и това е полезно приложение. 57 00:02:42,110 --> 00:02:46,081 >> Така че, Flask е рамка за вземане на уеб приложения, използващи Python. 58 00:02:46,081 --> 00:02:48,330 И да се надяваме, до края на това, аз ще ви убедя 59 00:02:48,330 --> 00:02:52,210 че в действителност можете да напиша нещо като CS50 финансите използване на Python, която I 60 00:02:52,210 --> 00:02:53,950 като много по-добре от PHP, лично. 61 00:02:53,950 --> 00:02:57,320 >> Така че, Flask е, те наричат microframework, от които, 62 00:02:57,320 --> 00:02:59,800 те означават, че е много проста, но разтегателна. 63 00:02:59,800 --> 00:03:02,980 Значи, това е точно това, което ви трябва, но ако искате повече функции, 64 00:03:02,980 --> 00:03:04,522 това е лесно да ги приведат инча 65 00:03:04,522 --> 00:03:06,480 Но само защото това е microframework, не го прави 66 00:03:06,480 --> 00:03:08,960 означава, че това е само за малки проекти. 67 00:03:08,960 --> 00:03:12,590 Имам връзка тук, който казва, че Обама използва колба през 2012 г. 68 00:03:12,590 --> 00:03:14,410 за предизборната си кампания сайт, който се надяваме, 69 00:03:14,410 --> 00:03:16,937 е нещо, на заверка. 70 00:03:16,937 --> 00:03:18,770 Но това, което мога Наистина харесвам Flask 71 00:03:18,770 --> 00:03:22,401 е, че тя всъщност не е накарала каквато и да е решения за вас. 72 00:03:22,401 --> 00:03:24,150 Просто, защото ние сме говорим за уеб приложения, 73 00:03:24,150 --> 00:03:26,940 Аз трябва да го сравни с Руби на Rails и Django, и двете от които 74 00:03:26,940 --> 00:03:30,450 са големи рамки, но те и двете се правят предположения 75 00:03:30,450 --> 00:03:33,600 за това как искате да взаимодействат с бази данни, 76 00:03:33,600 --> 00:03:36,900 как искате да представите възгледи, и те са определено 77 00:03:36,900 --> 00:03:38,850 добри аспекти на това. 78 00:03:38,850 --> 00:03:41,490 >> Например, Руби на релси има тази активна система за запис, 79 00:03:41,490 --> 00:03:43,100 което е много хубаво начин за взаимодействие с данни, 80 00:03:43,100 --> 00:03:45,960 но ако искате да използвате Руби на Rails, вие сте нещо като вързани в това. 81 00:03:45,960 --> 00:03:47,835 Но с колба, както аз ще ти покажа с Пи- луи, 82 00:03:47,835 --> 00:03:49,830 можете да използвате каквото и да подреди на база данни, която искате, 83 00:03:49,830 --> 00:03:53,980 и може просто да дръпнете, че в като разширение в стъкленицата. 84 00:03:53,980 --> 00:03:56,350 >> Така че това е защо аз наистина като Flask, това е, че тя 85 00:03:56,350 --> 00:04:01,170 не се правят предположения за вас въз основа на неща, които не се нуждаят от наистина. 86 00:04:01,170 --> 00:04:04,440 >> Така че, защо да използвате Flask? 87 00:04:04,440 --> 00:04:08,230 Предимствата са, че просто има наистина основните характеристики 88 00:04:08,230 --> 00:04:09,420 вграден в него, че имате нужда. 89 00:04:09,420 --> 00:04:11,980 Така че, не е нужно да се притеснявате за разбирането цял куп неща 90 00:04:11,980 --> 00:04:13,175 че вие ​​наистина не се нуждаят. 91 00:04:13,175 --> 00:04:15,060 Вие не трябва да се налага да се притеснявате за изключване на функции 92 00:04:15,060 --> 00:04:16,620 че вие ​​наистина не се нуждаят. 93 00:04:16,620 --> 00:04:21,082 >> И, както вече споменах, това е супер лесно да добавите в продължения на нещата 94 00:04:21,082 --> 00:04:21,790 че ти е нужно. 95 00:04:21,790 --> 00:04:24,700 Някои от тях, колбата собствената си подкрепа за него. 96 00:04:24,700 --> 00:04:28,230 Така че има нещо, наречено Flask администратор, който отразява, че администратор 97 00:04:28,230 --> 00:04:32,060 панел, който осигурява Django, която ви дава хубав визуален начин 98 00:04:32,060 --> 00:04:33,405 да администрира вашия сайт. 99 00:04:33,405 --> 00:04:35,280 Но пак, ако сте вземане на нещо по-просто, 100 00:04:35,280 --> 00:04:39,550 най-вероятно не е нужно голям администратор панел, така че мисля, че е супер приятно. 101 00:04:39,550 --> 00:04:45,940 А недостатъците са, че имате по-малко енергия от кутията. 102 00:04:45,940 --> 00:04:49,660 Така че, когато за първи път отвори стъкленицата, и във вашата програма Python, 103 00:04:49,660 --> 00:04:53,150 можете просто да напишете от Flask внос *, или каквото и да, 104 00:04:53,150 --> 00:04:55,957 не точно получите всички функции, които може да искате. 105 00:04:55,957 --> 00:04:58,540 И така трябва да имате по-ясно изброяват функциите, които искате. 106 00:04:58,540 --> 00:05:01,990 Така че това е един недостатък, но аз Мисля, че за изграждане на малки уеб 107 00:05:01,990 --> 00:05:04,782 приложения като аз ще се показва вие, това всъщност не е проблем. 108 00:05:04,782 --> 00:05:07,281 И това, което е последното нещо, би трябвало да се каже, което е печатна грешка, 109 00:05:07,281 --> 00:05:10,240 е, че има по-малко стандартизирани конвенции за това как да използвате Flask, 110 00:05:10,240 --> 00:05:12,400 Просто защото там не са толкова много хората, които го използват професионално 111 00:05:12,400 --> 00:05:13,191 в сравнение с Django. 112 00:05:13,191 --> 00:05:16,380 Така че, ако търсите нещо подобно, "Как мога да направя х" в Django, 113 00:05:16,380 --> 00:05:18,190 най-вероятно ще го намерите. 114 00:05:18,190 --> 00:05:20,260 >> Има добър дизайн модели можете да използвате, 115 00:05:20,260 --> 00:05:22,660 но с колба, това е нещо като отидете свой собствен начин, 116 00:05:22,660 --> 00:05:24,850 Просто защото това е доста малка библиотека. 117 00:05:24,850 --> 00:05:27,100 Така че тези, които са най- недостатъци, но аз мисля, 118 00:05:27,100 --> 00:05:29,370 че тя все още е добра библиотека, за да използвате. 119 00:05:29,370 --> 00:05:31,909 >> Така че нека просто скочи право в стъкленицата. 120 00:05:31,909 --> 00:05:34,200 Това определено не става да бъде пълен урок, 121 00:05:34,200 --> 00:05:37,480 но това е, за да ви дам една идея за това как да се структурира нещата, 122 00:05:37,480 --> 00:05:40,790 и така да се чувствате комфортно ще изключване и погледнете в документацията 123 00:05:40,790 --> 00:05:42,570 и да научите повече. 124 00:05:42,570 --> 00:05:48,500 >> Така че, нека да отворим една наистина прост пример на първо, 125 00:05:48,500 --> 00:05:50,737 а ти какво, които показват, Изглежда, и след това ще 126 00:05:50,737 --> 00:05:52,070 го съборят малко повече. 127 00:05:52,070 --> 00:05:56,160 >> Така че това тук, нека да го използвате. 128 00:05:56,160 --> 00:06:06,800 129 00:06:06,800 --> 00:06:09,750 Така че, аз сега имам молба ми вървят. 130 00:06:09,750 --> 00:06:15,910 Отивам да се отворят Safari, и той се движи на моя местен домакин. 131 00:06:15,910 --> 00:06:19,360 Така че аз съм просто ще направи тази голяма. 132 00:06:19,360 --> 00:06:23,960 Но Localhost: 5000 133 00:06:23,960 --> 00:06:27,650 >> И така, точно сега, всичко това прави е, когато посещавате уебсайта, 134 00:06:27,650 --> 00:06:31,490 той отпечатва "Hello Flask" който не е супер полезно, 135 00:06:31,490 --> 00:06:34,630 но мисля, че това е готино, че в този малък файл тук, 136 00:06:34,630 --> 00:06:37,390 имаме уеб сървър бягане че отпечатва нещо. 137 00:06:37,390 --> 00:06:40,500 Така че, нека да погледнем реално в кода за секунда, 138 00:06:40,500 --> 00:06:43,080 и да го съборят малко. 139 00:06:43,080 --> 00:06:45,260 Дали размера добро за всички тук? 140 00:06:45,260 --> 00:06:51,560 >> Така че, да се надяваме, че си малко по- удобно използване на Python. 141 00:06:51,560 --> 00:06:55,820 Аз съм се предположи, че ние можем да погледнем питона и прочетете през него. 142 00:06:55,820 --> 00:06:59,290 Ако имате някакви въпроси относно нищо, аз също може да разясни, че. 143 00:06:59,290 --> 00:07:03,974 >> Така че първата ви линия е, от стъкленицата, внасяме, Flask с капитал "F" 144 00:07:03,974 --> 00:07:06,140 което е нещо на всички ключови функции, които имате нужда. 145 00:07:06,140 --> 00:07:08,890 Всеки път, когато пишеш файл и при използване на стъкленицата, 146 00:07:08,890 --> 00:07:12,120 започваш да искате да импортирате, че, Просто защото това разполага с всички основни неща. 147 00:07:12,120 --> 00:07:15,400 Следващото нещо, което правим, е, че ние наричаме тази функция Flask, просто 148 00:07:15,400 --> 00:07:19,270 да се създаде приложение, обект, а ти си винаги ще искате да направите това. 149 00:07:19,270 --> 00:07:25,960 >> И тогава, скачайки надолу до отдолу-бързо, тази част тук е, 150 00:07:25,960 --> 00:07:28,760 "if_name _ ==" _ main_ "", която е сортиране на спогодба за избягване на Python. 151 00:07:28,760 --> 00:07:32,750 Така че това ще се изпълни само ако сте тече този файл директно с помощта на Python. 152 00:07:32,750 --> 00:07:36,040 След това, което наричаме app.run, които ще същинското започване на приложението става. 153 00:07:36,040 --> 00:07:39,570 >> Така че, това е основната структура, която ще имате във всяко приложение на стъкленицата, 154 00:07:39,570 --> 00:07:48,550 е ще имате тази ап = Flask (_NAME_), а след това app.run. 155 00:07:48,550 --> 00:07:54,940 >> Така че, двете неща, които имам тук, са това, което ние наричаме маршрути. 156 00:07:54,940 --> 00:07:57,150 Така че, нека да поговорим за маршрутизиране на малко повече. 157 00:07:57,150 --> 00:07:58,430 Аз ще се върна в слайда. 158 00:07:58,430 --> 00:08:02,540 >> Така че най-основното концепция в стъкленицата е маршрутизиране. 159 00:08:02,540 --> 00:08:06,750 И това е идеята, че присвоява функции в Python 160 00:08:06,750 --> 00:08:11,280 за определени адреси на вашата уеб страница. 161 00:08:11,280 --> 00:08:13,930 Така че, когато пожелаете да се създаде нов маршрут, 162 00:08:13,930 --> 00:08:16,500 използвате този @ app.route функция декоратор. 163 00:08:16,500 --> 00:08:19,770 Така че, ако не сте запознати с функционални декоратори в Python, 164 00:08:19,770 --> 00:08:24,160 това е, че тази концепция Позволява ви да си функция 165 00:08:24,160 --> 00:08:26,800 и го обграждат с нещо друго. 166 00:08:26,800 --> 00:08:30,140 >> Така че наистина, какво е това декоратор прави, е, че отнема функцията под него, 167 00:08:30,140 --> 00:08:33,409 и това добавя още информация към нея, но какво всъщност Flask 168 00:08:33,409 --> 00:08:37,480 няма да се случи, не е супер от решаващо значение, но това, което е важно, 169 00:08:37,480 --> 00:08:43,640 е, че преди маршрута, ви постави този @ app.route, и след това 170 00:08:43,640 --> 00:08:46,480 адреса на маршрута, така наклонената черта е, което ние 171 00:08:46,480 --> 00:08:48,360 видях, когато ние просто отваряне на уеб страница. 172 00:08:48,360 --> 00:08:49,580 Така че това е началната страница. 173 00:08:49,580 --> 00:08:51,037 Това е просто по маршрута наклонена черта. 174 00:08:51,037 --> 00:08:52,370 И тогава ще има тази функция. 175 00:08:52,370 --> 00:08:54,453 Името на функцията може да бъде каквото си искате. 176 00:08:54,453 --> 00:08:56,930 То не трябва да е задължително трябва да се направи с по маршрута. 177 00:08:56,930 --> 00:08:59,440 И тогава, каквото и възвръщаемост на функцията му, 178 00:08:59,440 --> 00:09:01,730 функцията трябва да се върне низ. 179 00:09:01,730 --> 00:09:03,740 И това може да низ съдържа HTML или нещо подобно, 180 00:09:03,740 --> 00:09:06,920 и това е всъщност това, което ще получите се върна към вашия уеб браузър като HTML, 181 00:09:06,920 --> 00:09:08,200 и тя ще направи това. 182 00:09:08,200 --> 00:09:12,030 >> Така че това е един и същ код че е от примера 183 00:09:12,030 --> 00:09:16,430 че аз просто избяга, така че, когато посещаваме наклонена черта, го нарича Hello World функция, която 184 00:09:16,430 --> 00:09:20,470 просто връща низ, Hello Flask, и че получава отпечатан върху екрана. 185 00:09:20,470 --> 00:09:27,290 >> Така че има още един пример, което е, когато посещавате / здравей, 186 00:09:27,290 --> 00:09:30,370 той отпечатва Hello Word, която всъщност трябва да се каже, Hello World, 187 00:09:30,370 --> 00:09:32,010 но нека да се преструвам, че е умишлено. 188 00:09:32,010 --> 00:09:35,140 Така че нека да дръпне, че до бързо. 189 00:09:35,140 --> 00:09:41,290 >> Така че, ако отидете на Localhost / здравей, сега ще отпечата нещо друго. 190 00:09:41,290 --> 00:09:45,680 Така че това е само един бърз пример за това как можете да създадете два различни пътя. 191 00:09:45,680 --> 00:09:50,630 >> Така че, доколкото това не е супер полезно, там не е цяло много можете да направите, 192 00:09:50,630 --> 00:09:55,360 можеш да направиш всичко, което с с различни HTML страници, 193 00:09:55,360 --> 00:09:58,000 и когато посетите даден страница тя просто зарежда страницата. 194 00:09:58,000 --> 00:10:00,864 Така че нека да видим някои по- полезни неща, които можете да направите. 195 00:10:00,864 --> 00:10:03,780 Така че, едно нещо, което може да се наложи Забелязах, в примера, че извадих 196 00:10:03,780 --> 00:10:07,160 нагоре, е, че бях app.run (дебъгване = True). 197 00:10:07,160 --> 00:10:09,580 И така, какво е това аргумент за отстраняване на грешки прави, е 198 00:10:09,580 --> 00:10:14,600 че когато тичам вашия уеб сървър, когато сте в молбата Ви, 199 00:10:14,600 --> 00:10:18,100 ако промените даден файл, той ще автоматично презареждане на сървъра. 200 00:10:18,100 --> 00:10:21,160 >> И така, вие всъщност не трябва да рестартиране Python, което е супер полезно. 201 00:10:21,160 --> 00:10:24,020 Мога да покажа, че. 202 00:10:24,020 --> 00:10:26,960 Позволете ми да спра моя код с печатна грешка в него, 203 00:10:26,960 --> 00:10:30,420 и да се преструвам, че печатна грешка бе сложил там преднамерено за поучителни цели. 204 00:10:30,420 --> 00:10:31,625 Така че нека да добавите този обратно. 205 00:10:31,625 --> 00:10:33,140 Така че сега се казва Hello World. 206 00:10:33,140 --> 00:10:34,410 Аз ще го спаси. 207 00:10:34,410 --> 00:10:36,540 И ако ние се изтеглят нагоре терминала, ще 208 00:10:36,540 --> 00:10:39,520 се каже, че това е рестартиране, защото тя открита промяна, 209 00:10:39,520 --> 00:10:43,620 и така сега, когато ние презаредете страницата, тя ще разпечатате правилното нещо. 210 00:10:43,620 --> 00:10:45,630 >> Така че за отстраняване на грешки е супер полезно за това. 211 00:10:45,630 --> 00:10:48,740 Също така, ако имате някакво сортиране на катастрофа, така че 212 00:10:48,740 --> 00:10:54,370 позволете ми да направя този забиването на програмата от като той не се върне низ. 213 00:10:54,370 --> 00:10:57,540 Така че, нека просто го има върнете Няма по някаква причина. 214 00:10:57,540 --> 00:11:00,810 И тогава, когато посетите този страница, той просто ще се срине, 215 00:11:00,810 --> 00:11:04,465 но сървърът не просто се срине, то всъщност дава супер полезно обратно 216 00:11:04,465 --> 00:11:06,490 следа от всичко, което се е объркало. 217 00:11:06,490 --> 00:11:10,050 И това, което е наистина хубаво, е, че по всяко стъпка в тази върна следа, 218 00:11:10,050 --> 00:11:14,260 бихте могли да се отворят интерактивен плащам тук, и нещо като отпечатате това, което 219 00:11:14,260 --> 00:11:17,780 променливи, които искате да погледнете на адрес. 220 00:11:17,780 --> 00:11:21,054 >> И така, отстраняване на грешки е наистина полезно за фигуриращ 221 00:11:21,054 --> 00:11:23,470 какво се случва с вашия сървър, а не просто виждам 222 00:11:23,470 --> 00:11:28,201 нещо в PHP като 500 вътрешна грешка на сървъра, което е супер безполезен. 223 00:11:28,201 --> 00:11:30,700 Едно нещо, което да е наясно, е че ако сложиш приложението си онлайн 224 00:11:30,700 --> 00:11:34,260 така че това е видимо за обществеността, вие Никога не му попречи да продължи отстраняване на грешки режим на, 225 00:11:34,260 --> 00:11:37,320 защото хората действително могат да използвате тази конзола, че аз 226 00:11:37,320 --> 00:11:39,150 показа можете да изпълни произволен код. 227 00:11:39,150 --> 00:11:42,120 >> Така те могат да разпечатате като всеки секретни кодове, които имате там, 228 00:11:42,120 --> 00:11:44,755 те могат да разгледаме точно как вашия сайт работи. 229 00:11:44,755 --> 00:11:46,630 Така че това е наистина полезно за тестване, но винаги 230 00:11:46,630 --> 00:11:50,090 уверете се, да го извади преди публикувате нещо онлайн. 231 00:11:50,090 --> 00:11:56,640 >> Така че, когато използвате нещо като PHP, има тази идея 232 00:11:56,640 --> 00:11:58,920 че може да премине информация между уеб страници 233 00:11:58,920 --> 00:12:03,620 чрез поставяне на информацията, която реално в URL адреса, който е заявка за GET, 234 00:12:03,620 --> 00:12:07,490 но в колба, всъщност можете да направя нещо нещо подобно, 235 00:12:07,490 --> 00:12:10,590 от наличието на маршрут, който има променлива, като част от нея. 236 00:12:10,590 --> 00:12:14,090 >> Така че, ако се вгледате в тази Например на екрана тук, 237 00:12:14,090 --> 00:12:19,930 имаме маршрут, който е ('/' Здравей '/'), и така, ако посетите 238 00:12:19,930 --> 00:12:23,790 / здравей / нещо, че нещо ще се получи в действителност с пълнеж 239 00:12:23,790 --> 00:12:25,490 в променливата име. 240 00:12:25,490 --> 00:12:27,850 И забележете, че функцията който идва с този маршрут 241 00:12:27,850 --> 00:12:31,302 трябва да се вземе в параметъра име, така че тя действително ще 242 00:12:31,302 --> 00:12:32,510 се премина в функцията. 243 00:12:32,510 --> 00:12:34,190 >> И тогава, след като сте вътрешността на тази функция, 244 00:12:34,190 --> 00:12:36,420 можете да лекуват, че като нормално Python променлива, 245 00:12:36,420 --> 00:12:39,650 и така след това, тя ще разпечатате Здравейте, и го 246 00:12:39,650 --> 00:12:42,000 ще попълни името с помощта на форматиране низ. 247 00:12:42,000 --> 00:12:48,060 >> Така че, за да добавите променливите части на маршрутизация, използвате скобата ъгъл маркировка. 248 00:12:48,060 --> 00:12:51,220 И по избор, можете да използвате което се нарича конвертор. 249 00:12:51,220 --> 00:12:56,840 И така, ако поставите този Анотация с дебелото черво, 250 00:12:56,840 --> 00:13:00,015 можете да се уточни, че това е пад, или поплавък, или път, 251 00:13:00,015 --> 00:13:01,640 и тя автоматично ще я превърне в това. 252 00:13:01,640 --> 00:13:05,130 Можете също така да направи превръщане в рамките на функцията Python, 253 00:13:05,130 --> 00:13:09,710 само с помощта на един глас, но понякога, ако искате да се гарантира, че това е едно цяло число, 254 00:13:09,710 --> 00:13:12,080 можете да сложите, че правило преобразуване там. 255 00:13:12,080 --> 00:13:15,930 >> Така че нека да спра пример на някои променливи правила. 256 00:13:15,930 --> 00:13:21,480 Така че тук, това е същото основния структура с внос от Flask 257 00:13:21,480 --> 00:13:25,030 Колба, ап = Flask (_NAME_), и след това той се движи в края. 258 00:13:25,030 --> 00:13:28,050 Ние имаме тези две различни променливи маршрути тук. 259 00:13:28,050 --> 00:13:29,900 И първия, е този, който показах 260 00:13:29,900 --> 00:13:34,230 в плъзгача, която е, че тя просто отнема в името на низ 261 00:13:34,230 --> 00:13:35,650 и тя ще разпечатате Здравейте, Name. 262 00:13:35,650 --> 00:13:41,410 >> И след това, а вторият човек използва преобразуването. 263 00:13:41,410 --> 00:13:44,690 Така че това автоматично ще го превърне да пад, а след това удвои ср, 264 00:13:44,690 --> 00:13:46,150 и печат, че навън. 265 00:13:46,150 --> 00:13:48,220 И ние не правим всякакъв вид на превръщане в нея 266 00:13:48,220 --> 00:13:49,594 защото Flask се грижи за това. 267 00:13:49,594 --> 00:13:53,181 Така че нека да получите това бягане. 268 00:13:53,181 --> 00:13:54,930 Когато имате Flask приложение, което работи, 269 00:13:54,930 --> 00:13:58,440 Можете да контролирате-C от него за да спрете сървъра протичане. 270 00:13:58,440 --> 00:14:02,420 И тогава аз ще се проведе на променливите. 271 00:14:02,420 --> 00:14:11,740 >> Така че нека да отидете на Localhost / здравей / Езра и да се надяваме, че това ще кажа здрасти за мен. 272 00:14:11,740 --> 00:14:14,530 273 00:14:14,530 --> 00:14:20,310 >> Така че го взе в Мое име, в променливата маршрут, и да го напълни я от тук. 274 00:14:20,310 --> 00:14:23,950 Така че аз също ще покажем бърз Пример за удвояване. 275 00:14:23,950 --> 00:14:28,600 Така че, ако отидете в / двойна / 3, тя ще разпечатате 6. 276 00:14:28,600 --> 00:14:31,440 Така че това се грижеше за преобразуването за нас. 277 00:14:31,440 --> 00:14:34,190 >> Така че можете да го направите с плувка, и нещо по-специално, 278 00:14:34,190 --> 00:14:37,530 ако трябва да се уточни нещо подобно пътека, която ви позволява да го приемам наклонени черти, 279 00:14:37,530 --> 00:14:39,155 но това обикновено не трябва да бъде проблем. 280 00:14:39,155 --> 00:14:41,480 281 00:14:41,480 --> 00:14:43,820 Досега сме, все още имат току-що беше връщане 282 00:14:43,820 --> 00:14:46,320 струни, което не е много интересно. 283 00:14:46,320 --> 00:14:48,730 >> Ние в действителност може да се върне буквалния HTML низ. 284 00:14:48,730 --> 00:14:54,322 Така че в кода можем да вмъкнете нещо като б-таг, за да го смели, 285 00:14:54,322 --> 00:14:56,030 но повечето от вас време всъщност не искат 286 00:14:56,030 --> 00:14:58,420 да бъде писмено HTML код в Python код. 287 00:14:58,420 --> 00:15:01,940 Той получава много надраскан, и това не е добро време. 288 00:15:01,940 --> 00:15:06,430 >> Flask ни позволява да се отделят от HTML в това, което се нарича шаблон, 289 00:15:06,430 --> 00:15:09,467 и така, ако си мислиш от гледна точка на модела MVC 290 00:15:09,467 --> 00:15:11,550 че сте запознат с, надявам се, да работят 291 00:15:11,550 --> 00:15:15,520 с CS50 Finance малко, можеш да се сетиш Python файлове 292 00:15:15,520 --> 00:15:19,430 като повече от контролиращия орган, когато те взаимодействат с каквото 293 00:15:19,430 --> 00:15:20,970 модел на данните може да се наложи. 294 00:15:20,970 --> 00:15:24,900 >> И тогава те се вика да Прегледи и предоставянето на информация на които View 295 00:15:24,900 --> 00:15:28,120 за попълване на информацията в HTML, че тя се нуждае. 296 00:15:28,120 --> 00:15:30,490 И това, което ние наричаме тези Прегледи са Templates в клас. 297 00:15:30,490 --> 00:15:35,280 >> Така Flask използва друг Python модул, който тя автоматично ще 298 00:15:35,280 --> 00:15:38,620 инсталиране, когато инсталирате PIP Flask нарича Джинджа, които 299 00:15:38,620 --> 00:15:40,885 ви позволява да добавите тези анотации към HTML 300 00:15:40,885 --> 00:15:45,140 който виждате на екрана, която позволява на ще ви постави в неща като условни, 301 00:15:45,140 --> 00:15:47,230 и примки в HTML. 302 00:15:47,230 --> 00:15:51,140 >> Така изглежда малко като как си може да използва PHP в рамките на един HTML файл, 303 00:15:51,140 --> 00:15:57,380 но това е само, когато се колбата сървър служи на HTML файл, 304 00:15:57,380 --> 00:16:01,610 тя ще върви този темплейт двигателя и разбор през тази и попълнете неща вътре. 305 00:16:01,610 --> 00:16:06,650 Така Flask има функция render_template които можете да видите в долната тук. 306 00:16:06,650 --> 00:16:14,300 И така, когато посещавате тази страница, то биха направили тази hello.html Template, 307 00:16:14,300 --> 00:16:16,407 и след това попълнете тази HTML страница. 308 00:16:16,407 --> 00:16:18,990 Така че нека просто стартирате тази реална бързо, и да видим как изглежда, 309 00:16:18,990 --> 00:16:21,198 и после ще премине през малко по-подробно. 310 00:16:21,198 --> 00:16:25,380 311 00:16:25,380 --> 00:16:30,260 Така че, вашите шаблони вървят да отидете в папката на шаблони. 312 00:16:30,260 --> 00:16:33,980 Тя автоматично ще изглежда в рамките на Папката Templates за този шаблон. 313 00:16:33,980 --> 00:16:35,615 Така че нека да отворите този нагоре. 314 00:16:35,615 --> 00:16:47,350 315 00:16:47,350 --> 00:16:50,005 Така че, аз ще тичам примера темплейт. 316 00:16:50,005 --> 00:16:52,820 317 00:16:52,820 --> 00:17:03,660 >> Така че, ако отида да / здравей / Езра, тя има тази ужасна, 318 00:17:03,660 --> 00:17:05,930 противни бягащ маркер, че сложих вътре. 319 00:17:05,930 --> 00:17:08,050 Много хубаво, много динамична. 320 00:17:08,050 --> 00:17:09,349 Аз съм голям фен. 321 00:17:09,349 --> 00:17:13,900 Но какво се случва, ако Просто отидете, / 'Здравей'? 322 00:17:13,900 --> 00:17:15,220 Така че той просто казва Hello World. 323 00:17:15,220 --> 00:17:17,678 Не го преотстъпвайте на име, и той го попълва автоматично. 324 00:17:17,678 --> 00:17:22,050 Така че нека да видим как го е направил, че и как ние можем да се отървем от които може би палатка. 325 00:17:22,050 --> 00:17:26,240 >> Така че тук, това е нещо като интересен пример, 326 00:17:26,240 --> 00:17:29,101 ако сте запознати с това как превключвател изявления работят на език. 327 00:17:29,101 --> 00:17:31,350 Кажете това е нещо като, този вид спад през, 328 00:17:31,350 --> 00:17:34,266 където всъщност прикрепени две различни маршрути до една и съща функция. 329 00:17:34,266 --> 00:17:41,190 Така че ние придаваме на / здравей маршрута и на / здравей / име маршрута до Hello, 330 00:17:41,190 --> 00:17:45,130 и ние зададени using-- Python ви позволява зададени по подразбиране функция arguments-- 331 00:17:45,130 --> 00:17:48,300 така че, ако не е име, така че ако отидем до малко / здравей, 332 00:17:48,300 --> 00:17:50,680 той автоматично ще филтрира да име се равнява на None. 333 00:17:50,680 --> 00:17:55,010 >> И така, ние положили Template с име = име, 334 00:17:55,010 --> 00:17:59,510 така че ще премине в параметъра име равно на това име функция параметър, 335 00:17:59,510 --> 00:18:00,730 в шаблон. 336 00:18:00,730 --> 00:18:04,040 Това все още не обяснява как е вземане на решение дали да отпечатате Hello World, 337 00:18:04,040 --> 00:18:05,100 или отпечатате името ми. 338 00:18:05,100 --> 00:18:08,050 Така че нека да погледнем реално в самия шаблон, 339 00:18:08,050 --> 00:18:11,610 и да видим къде, че идва от. 340 00:18:11,610 --> 00:18:18,680 >> Така че, в рамките на този шаблон, ние действително има някаква условна логика, 341 00:18:18,680 --> 00:18:20,580 които някои хора биха твърдят, която действително 342 00:18:20,580 --> 00:18:23,730 не трябва да има много условно логика в рамките на вашата самия шаблон. 343 00:18:23,730 --> 00:18:26,310 Тя трябва да бъде в рамките на по- Controller, но за този пример 344 00:18:26,310 --> 00:18:27,476 това е нещо доста малка. 345 00:18:27,476 --> 00:18:31,060 Така че тук, ние проверяваме, ако името, така че ако името не е равно на None, 346 00:18:31,060 --> 00:18:33,130 ако едно име е всъщност преминали в, тогава ние ще 347 00:18:33,130 --> 00:18:36,210 кажа Здравейте, името с на глава и шатрата, 348 00:18:36,210 --> 00:18:41,490 всичко това нормално HTML, в противен случай, ние ще разпечатате Hello, World просто нормално. 349 00:18:41,490 --> 00:18:45,820 Така че няколко неща, за да забележат тук за това как можете да форматирате шаблони, 350 00:18:45,820 --> 00:18:49,110 е, че всички тези условни конструкции, 351 00:18:49,110 --> 00:18:54,475 нещо като как го когато PHP искате да вмъкнете някои PHP, 352 00:18:54,475 --> 00:18:58,380 използвате по-малки от въпросната марка, това е нещо като аналогична тук 353 00:18:58,380 --> 00:19:00,140 с {%. 354 00:19:00,140 --> 00:19:02,130 >> Така че тук, ние имаме условно код. 355 00:19:02,130 --> 00:19:05,920 И тогава, когато всъщност искаш да буквално се оцени нещо, и печат 356 00:19:05,920 --> 00:19:08,710 то вън до екрана, вие използвате двойни скоби. 357 00:19:08,710 --> 00:19:12,310 Така че тук са двойни скоби, и тогава ние посочите име, 358 00:19:12,310 --> 00:19:15,500 така в рамките на това, тя ще оцени името на променливата, които 359 00:19:15,500 --> 00:19:18,860 е приет през от направи шаблонна функция, 360 00:19:18,860 --> 00:19:21,484 а не само печат вън, ако сме се отървали от тях, 361 00:19:21,484 --> 00:19:23,150 тя просто ще отпечата думата "наименование". 362 00:19:23,150 --> 00:19:26,340 Така че, това е нещо, което да внимавате. 363 00:19:26,340 --> 00:19:29,792 >> Така че друго е да бележка е, че, когато ние 364 00:19:29,792 --> 00:19:31,500 искате да използвате render_template функция, 365 00:19:31,500 --> 00:19:34,490 ние всъщност трябва да внасяме тя изрично от стъкленицата. 366 00:19:34,490 --> 00:19:36,915 Това е пример на модулността на стъкленицата, 367 00:19:36,915 --> 00:19:39,290 че не трябва да внасяме неща, които не ви трябват. 368 00:19:39,290 --> 00:19:41,290 Можете просто да донесе в функции всъщност 369 00:19:41,290 --> 00:19:43,450 лесно, което понякога е хубаво, така че да не правим 370 00:19:43,450 --> 00:19:46,560 Трябва да имаш всички тези функции около заседание, че не използвате, 371 00:19:46,560 --> 00:19:49,730 но също така, ако сте забравили, че сте Трябва да внеса render_template, 372 00:19:49,730 --> 00:19:52,660 най-вероятно ще получите предупреждение която ще ви позволи да знаете за това. 373 00:19:52,660 --> 00:19:56,700 Така че, това е темплейт. 374 00:19:56,700 --> 00:20:01,680 >> Така че, ние показахме как да правят прости уеб страници, 375 00:20:01,680 --> 00:20:04,947 и се добавя малко повече логика да това, по отношение на променливата маршрута. 376 00:20:04,947 --> 00:20:08,280 Тя ви позволява да правите различни неща въз основа на какво URL отидете, а също и след това, да даде 377 00:20:08,280 --> 00:20:11,950 на HTML малко повече разум в от гледна точка на това как искате да направят нещата. 378 00:20:11,950 --> 00:20:14,210 Вие не трябва да се постави цялата Вашата HTML във вашия Python, 379 00:20:14,210 --> 00:20:16,640 но за доста много всеки уеб приложение, 380 00:20:16,640 --> 00:20:21,480 започваш да искаш някакъв вид на модел на данните, свързани с него. 381 00:20:21,480 --> 00:20:25,560 >> И така, по традиция, това би да бъде нещо като SQL база данни. 382 00:20:25,560 --> 00:20:30,280 А може просто да си взаимодействат директно с SQL. 383 00:20:30,280 --> 00:20:32,190 Python е, мисля, че тя се нарича. 384 00:20:32,190 --> 00:20:33,040 SQLite 3. 385 00:20:33,040 --> 00:20:38,454 Можете просто да импортирате SQLite 3 и изпълняват SQL заявки директно, 386 00:20:38,454 --> 00:20:40,870 но аз не знам за вас, но аз наистина не ми харесва, просто, 387 00:20:40,870 --> 00:20:42,750 оформяне на SQL заявки. 388 00:20:42,750 --> 00:20:45,350 Тя има тенденция да получите наистина дълъг и сложен. 389 00:20:45,350 --> 00:20:49,180 >> И така, нещо, което Обичам да използвам е това, което е 390 00:20:49,180 --> 00:20:53,610 известен като ORM, което е обектно-релационни картографиране. 391 00:20:53,610 --> 00:20:56,890 И точката на обектно-релационни картографиране, 392 00:20:56,890 --> 00:21:00,100 е, че има две различни начини, можете да мислят за бази данни. 393 00:21:00,100 --> 00:21:03,240 >> Така че примерът Професор Malan обикновено 394 00:21:03,240 --> 00:21:07,660 използва в клас, е таблица Excel, където имате тези редове и тези колони, 395 00:21:07,660 --> 00:21:10,210 и това е наистина полезно за как тя е представена в SQL 396 00:21:10,210 --> 00:21:13,170 и как можете да си взаимодействат с него, но друг начин, че това е всъщност 397 00:21:13,170 --> 00:21:16,390 полезно да се мисли за това, понякога, е по отношение на класове и обекти. 398 00:21:16,390 --> 00:21:20,420 >> Така че, вместо на мислене на всяка маса като имащи 399 00:21:20,420 --> 00:21:23,040 този ред, че има определен информация, можете да всъщност 400 00:21:23,040 --> 00:21:26,100 мисля за него като всяка таблица е един клас, 401 00:21:26,100 --> 00:21:29,810 и след това на всеки съд на клас има определени свойства. 402 00:21:29,810 --> 00:21:35,110 Така че, в този пример, случаите на класа са редовете в таблицата, 403 00:21:35,110 --> 00:21:37,490 и след това всеки имот ще бъде колона в таблицата. 404 00:21:37,490 --> 00:21:40,840 >> Така че, ORM, че ми харесва да се използва, се нарича Пи- луи. 405 00:21:40,840 --> 00:21:43,520 Това наистина е много малка, нещо като колба. 406 00:21:43,520 --> 00:21:46,760 Мисля, че те вървят добре заедно, но има и много други ORMs 407 00:21:46,760 --> 00:21:47,730 които можете да използвате. 408 00:21:47,730 --> 00:21:52,180 А по-популярна от тях е известен като SQLAlchemy, 409 00:21:52,180 --> 00:21:56,050 и аз не мога да си спомня защо аз първоначално избра Пи- луи над SQLAlchemy, 410 00:21:56,050 --> 00:21:58,311 или аз ще ви кажа защо съм Мисля, че е най-добрата, 411 00:21:58,311 --> 00:22:01,060 но ние просто ще използвате този един, защото знам как да го използвам. 412 00:22:01,060 --> 00:22:04,760 >> Така че, един въпрос е, защо трябва да ви притеснява с помощта на ORM, 413 00:22:04,760 --> 00:22:07,552 вместо просто директно написването на SQL заявки? 414 00:22:07,552 --> 00:22:09,760 И мисля, че най-добрия случай, е, че вие ​​всъщност не 415 00:22:09,760 --> 00:22:11,356 трябва да напишете SQL запитвания. 416 00:22:11,356 --> 00:22:14,480 Това е много по-лесно, тъй като аз ще ви покажа, за да направя неща, като селекция, вмъкване, 417 00:22:14,480 --> 00:22:16,157 заличаване, особено създаването на таблици. 418 00:22:16,157 --> 00:22:17,990 Това е много по-лесно да се напиши структура клас, 419 00:22:17,990 --> 00:22:22,250 отколкото да се структурира Създаване Декларация на маса, но едно нещо 420 00:22:22,250 --> 00:22:25,710 да е наясно, че е на ORM ще направи всичко възможно, 421 00:22:25,710 --> 00:22:28,640 да разбера какво най-много ефективно SQL заявка ще бъде, 422 00:22:28,640 --> 00:22:30,110 но понякога тя получава я обърка. 423 00:22:30,110 --> 00:22:32,660 >> И особено ако сте работи с голяма база данни, 424 00:22:32,660 --> 00:22:35,557 можете да забележите, че заявката че трябва да се работи бързо, 425 00:22:35,557 --> 00:22:36,640 всъщност се отнема по-дълго. 426 00:22:36,640 --> 00:22:40,164 И ако се вгледате под капака как на ORM е тълкуването, че в SQL, 427 00:22:40,164 --> 00:22:42,080 това може да се прави нещо наистина нелепо, 428 00:22:42,080 --> 00:22:44,371 само защото нещо посочи намеренията ви обърка. 429 00:22:44,371 --> 00:22:48,080 И, че е имало времена, когато Аз съм имал да го замени, и просто 430 00:22:48,080 --> 00:22:52,429 изпълнява собствените ми SQL заявки, просто защото тя е разбор по странен начин. 431 00:22:52,429 --> 00:22:54,220 Така че, има някои режийни, точно по начина, 432 00:22:54,220 --> 00:22:58,680 че той съставя си изявления надолу в SQL. 433 00:22:58,680 --> 00:23:06,200 >> Така че, нека да разгледаме супер бързо при един прост пример за модел на данните 434 00:23:06,200 --> 00:23:07,350 които можете да използвате. 435 00:23:07,350 --> 00:23:11,880 Така че, това е кода на Питон, и така Първото нещо, което искате да направите, е от 436 00:23:11,880 --> 00:23:12,950 Пи- луи внос *. 437 00:23:12,950 --> 00:23:15,850 Така че, за разлика от стъкленицата, където трябва всички тези отделни модули, 438 00:23:15,850 --> 00:23:18,125 и искате да импортирате Flask, и напиши Template, и някои други 439 00:23:18,125 --> 00:23:20,690 че ние ще видим по-късно, от Пи- луи, може просто да импортирате всичко, 440 00:23:20,690 --> 00:23:22,290 защото това е доста малка библиотека. 441 00:23:22,290 --> 00:23:26,490 >> Така че, първото нещо, което искате да направите, е всъщност създаде тази база данни обект. 442 00:23:26,490 --> 00:23:31,212 Така че, имате db = SqliteDatabase, и след това името на вашата база данни. 443 00:23:31,212 --> 00:23:33,170 И това действително ще създадете обект на базата данни 444 00:23:33,170 --> 00:23:36,230 че можете да си взаимодействат с, с Пи- луи. 445 00:23:36,230 --> 00:23:40,570 >> И след това, ние имаме реалното модел, който искаме да създадем. 446 00:23:40,570 --> 00:23:42,470 Така масата искаме да създадем. 447 00:23:42,470 --> 00:23:47,270 Така че, в рамките на Пи- луи, всеки клас има своя собствена маса в рамките на вашата база данни. 448 00:23:47,270 --> 00:23:52,800 Така, всички класове наследяват от базовия модел, 449 00:23:52,800 --> 00:23:55,960 и модела на капитала M е нещо, което е дефинирано в Пи- луи. 450 00:23:55,960 --> 00:24:02,162 >> Така че, всички ваши модели следва наследи като най-високото си суперкласа, 451 00:24:02,162 --> 00:24:04,620 те трябва да наследи от модел, но това, което е наистина страхотно, 452 00:24:04,620 --> 00:24:07,610 е, че всъщност можете да имате своя модели наследяват един от друг. 453 00:24:07,610 --> 00:24:10,530 И много от времето, си модели на данни не непременно 454 00:24:10,530 --> 00:24:13,754 направи хубав йерархия наследство, но пъти, когато го правят, това е много хубаво, 455 00:24:13,754 --> 00:24:15,920 защото имате модела присъщ един от друг. 456 00:24:15,920 --> 00:24:19,710 >> Така че, ние определено този клас "студент", който наследява модел, 457 00:24:19,710 --> 00:24:21,170 и тя има три имота. 458 00:24:21,170 --> 00:24:24,080 Той разполага с ID, което е а PrimaryKeyField, които 459 00:24:24,080 --> 00:24:26,920 е нещо, което е предвидено от Пи- луи, името е CharField, 460 00:24:26,920 --> 00:24:28,490 и клас е IntegerField. 461 00:24:28,490 --> 00:24:32,260 Така че това може или не може да бъде как CS50 всъщност съхранява всички 462 00:24:32,260 --> 00:24:33,650 степени на студентите. 463 00:24:33,650 --> 00:24:36,060 Това не е, но това е начинът, аз ще го направя. 464 00:24:36,060 --> 00:24:37,920 >> И след това го има, в рамките на този клас, а това 465 00:24:37,920 --> 00:24:41,620 е нещо, което можете да правите с Python, че може да има вложени класове. 466 00:24:41,620 --> 00:24:43,920 И това е нещо, това е необходимо, от Пи- луи. 467 00:24:43,920 --> 00:24:47,250 Така че, този клас Meta, имате да се уточни, че базата данни е 468 00:24:47,250 --> 00:24:49,830 равна на обекта че ние създадохме по-горе. 469 00:24:49,830 --> 00:24:54,339 И това казва какво файл е тази таблица всъщност ще трябва да се съдържа вътре. 470 00:24:54,339 --> 00:24:57,130 Така че това е нещо, което трябва да имате да се направи в рамките на всичките си модели. 471 00:24:57,130 --> 00:24:59,380 Просто трябва да се уточни в рамките на този Meta клас 472 00:24:59,380 --> 00:25:01,400 тази база данни е равна на db. 473 00:25:01,400 --> 00:25:03,940 Така че това, което обикновено правя, ако имам куп различни модели, 474 00:25:03,940 --> 00:25:05,910 е, че имам една база модел, че аз обикновено 475 00:25:05,910 --> 00:25:08,839 просто се обадете "базов модел" че има Мета класа, 476 00:25:08,839 --> 00:25:10,380 и тя определя на базата данни, равна на db. 477 00:25:10,380 --> 00:25:13,710 И тогава всички следващи мои модели ще наследи от този базов клас. 478 00:25:13,710 --> 00:25:16,760 И тогава аз не трябва да се притеснявате за определяне на Meta клас. 479 00:25:16,760 --> 00:25:21,490 >> Така че, когато това всъщност получава съставила надолу в изявление SQL, 480 00:25:21,490 --> 00:25:24,875 тя изглежда така гадно нещо надолу тук, "Създаване на маса студент ID число, 481 00:25:24,875 --> 00:25:26,020 " както и да е. 482 00:25:26,020 --> 00:25:30,002 >> И аз мисля, че той е по-кратък, този SQL заявка тук, 483 00:25:30,002 --> 00:25:32,960 но ако се вгледате в този клас тук можете да видите точно това, което се случва. 484 00:25:32,960 --> 00:25:36,116 Можете да видите какви видове полета съществуват, което те се наричат, 485 00:25:36,116 --> 00:25:38,115 и така, аз мисля, че погледнете в този Python код 486 00:25:38,115 --> 00:25:43,340 е много по-неразбираем от опитвайки се да напиша тази SQL заявка. 487 00:25:43,340 --> 00:25:45,990 >> Така че, за да всъщност използване на данни, 488 00:25:45,990 --> 00:25:48,470 ние трябва да се свърже с него в рамките на Python. 489 00:25:48,470 --> 00:25:52,770 Така че, аз обикновено напише функция, наречена initialize_db че прави две неща. 490 00:25:52,770 --> 00:25:54,880 Това отнема в базата данни обект db и да го 491 00:25:54,880 --> 00:25:58,360 се свързва с него, което точно се отваря до точка до базата данни. 492 00:25:58,360 --> 00:26:00,860 Ако сте само тичане макар уебсайт на локалния ви машина, 493 00:26:00,860 --> 00:26:04,320 това не е супер голяма работа да се притеснявате за свързване и изключване, 494 00:26:04,320 --> 00:26:06,885 но ако използвате то на уебсайт, можете 495 00:26:06,885 --> 00:26:10,010 искате да се уверите, че всеки път, когато даден потребител се свързва с него, когато те закриват 496 00:26:10,010 --> 00:26:12,270 уебсайта, те изключете, така че да не разполагат с един куп хора, свързани 497 00:26:12,270 --> 00:26:14,480 до вашата база данни всички наведнъж. 498 00:26:14,480 --> 00:26:16,370 >> И тогава, когато свърже с базата данни, 499 00:26:16,370 --> 00:26:20,832 искате да се обадите db.create_tables, и списък на моделите, за това, което искате 500 00:26:20,832 --> 00:26:21,540 да се създаде масите. 501 00:26:21,540 --> 00:26:23,950 Така че тук, аз просто искам да той създаде за този ученик. 502 00:26:23,950 --> 00:26:28,070 И след това, което е важно, е да се зададени безопасна = True най-времето. 503 00:26:28,070 --> 00:26:30,380 Така че това, което това твърдение ще направя, е, че тя 504 00:26:30,380 --> 00:26:33,580 създава таблици за Студент модел, но само 505 00:26:33,580 --> 00:26:36,109 ако тази таблица не е вече са създадени. 506 00:26:36,109 --> 00:26:37,400 Това е, което най-безопасни уточнява. 507 00:26:37,400 --> 00:26:39,150 Така че това не ще презапише съществуващия си маса, 508 00:26:39,150 --> 00:26:41,525 това само ще създаде нов маса, ако има не един там. 509 00:26:41,525 --> 00:26:45,090 Така че, просто можете да създадете таблиците веднъж, използващи SQL. 510 00:26:45,090 --> 00:26:49,410 И след това има, че заседание на база данни там, и след това се свържете с всеки път, 511 00:26:49,410 --> 00:26:52,450 но това е обикновено приятно просто да сложи в тази create_tables повикване, 512 00:26:52,450 --> 00:26:55,550 така че, ако някога изтриете база данни, когато стартирате вашия уеб 513 00:26:55,550 --> 00:26:57,960 отново ап, ще го пресъздаде. 514 00:26:57,960 --> 00:27:00,730 >> Така че, просто се уверете, че безопасната е определен, за да е истина, 515 00:27:00,730 --> 00:27:03,580 или ще намерите вашите данни само Първи clobbered всеки път. 516 00:27:03,580 --> 00:27:06,380 И след това, можете да просто се обадете initialize_db да се установи 517 00:27:06,380 --> 00:27:09,820 на връзка, и да се създаде маси ако е необходимо. 518 00:27:09,820 --> 00:27:13,150 >> Така че, най-често нещо че вие ​​ще искате да направите, 519 00:27:13,150 --> 00:27:15,920 или на един от най-честите неща, е действително да поставите нещата 520 00:27:15,920 --> 00:27:17,170 във вашата база данни. 521 00:27:17,170 --> 00:27:19,430 И така, вместо да се налага да напише вмъкнете в 522 00:27:19,430 --> 00:27:21,990 декларация с всички посочени стойностите, 523 00:27:21,990 --> 00:27:24,650 всъщност можете да се обадите функция на класа ученик. 524 00:27:24,650 --> 00:27:28,200 Така че, когато създавате клас които наследява от модела, 525 00:27:28,200 --> 00:27:30,200 тя има това създаде метод. 526 00:27:30,200 --> 00:27:33,870 >> Така че, вие правите клас name.create, и укажете параметрите 527 00:27:33,870 --> 00:27:35,260 който искате да мине инча 528 00:27:35,260 --> 00:27:39,200 Така че, ако искате да добавите някои ученици в нашия CS50 клас книга например, 529 00:27:39,200 --> 00:27:41,820 Ще сложа в Давид, който има много добра оценка, той има 95. 530 00:27:41,820 --> 00:27:45,100 И аз, който не се справя толкова добре в CS50, имам 50. 531 00:27:45,100 --> 00:27:47,600 И така, хубавото какво е това създаде функция прави, 532 00:27:47,600 --> 00:27:53,040 е, че той се връща на място, или ред, който го е създал в таблицата, 533 00:27:53,040 --> 00:27:55,750 и така след това да съхранявате, че в променлива, както и работата с него по-късно. 534 00:27:55,750 --> 00:27:58,830 Можете да промените наоколо, които Ще покажем пример. 535 00:27:58,830 --> 00:28:03,050 >> Забележете, че не го направих трябва да посочите ID, 536 00:28:03,050 --> 00:28:09,340 защото, тъй като тя е най- PrimaryKeyField, той автоматично ще 537 00:28:09,340 --> 00:28:10,930 увеличи го, ако не го посочва. 538 00:28:10,930 --> 00:28:12,250 И, всъщност, най-вероятно Не трябва да го посочите, 539 00:28:12,250 --> 00:28:14,810 защото може случайно смажат ID на някой друг. 540 00:28:14,810 --> 00:28:16,830 И вие искате да се сигурни, че това е уникален. 541 00:28:16,830 --> 00:28:20,662 >> Така че, всъщност, най-много обща нещо, което искате да направите, 542 00:28:20,662 --> 00:28:22,620 вероятно е да изберете от на базата данни, след като 543 00:28:22,620 --> 00:28:24,078 има много информация там. 544 00:28:24,078 --> 00:28:27,360 И така, ако искате да получите всичко, така равностойността на звездата изберете 545 00:28:27,360 --> 00:28:30,940 от учениците изявление, то Просто би било student.select. 546 00:28:30,940 --> 00:28:34,380 И това ще ви даде обратно масив с всички студентът обекти в нея 547 00:28:34,380 --> 00:28:35,770 че сте обхождане искате. 548 00:28:35,770 --> 00:28:37,019 Можете да получите неща от него. 549 00:28:37,019 --> 00:28:39,310 И през повечето време, вие не просто искам да направя избор, 550 00:28:39,310 --> 00:28:40,935 всъщност искате да уточни нещо. 551 00:28:40,935 --> 00:28:44,580 И така, можете верига заедно тези извиквания на функции, 552 00:28:44,580 --> 00:28:48,830 като как бихте верига заедно твърденията в SQL. 553 00:28:48,830 --> 00:28:53,002 Така че можете да направите student.select (). Където В този пример. 554 00:28:53,002 --> 00:28:54,710 И след това, можете да уточнят условията, 555 00:28:54,710 --> 00:28:57,880 само с помощта нормално Python Булев тип, за да проверите неща. 556 00:28:57,880 --> 00:29:02,110 >> Така че, в този случай, вие искате да ограничи това, което сте избрали да, 557 00:29:02,110 --> 00:29:06,790 където student.grade е равно на 50, и student.name е равна на Ездра, 558 00:29:06,790 --> 00:29:09,130 така че просто ще ми се измъкнем от него. 559 00:29:09,130 --> 00:29:11,340 И забележи, един наистина коварен нещо тук е, 560 00:29:11,340 --> 00:29:15,570 че, ако искате да зададете на и / или или и / или, 561 00:29:15,570 --> 00:29:19,840 в Python, които обикновено се използва, Мисля, че думата "и" всъщност, 562 00:29:19,840 --> 00:29:23,351 но тук можете да използвате единичен амперсанд, който е по принцип оператор побитова, 563 00:29:23,351 --> 00:29:25,600 но в този специален случай, просто начина, по който го прави Пи- луи, 564 00:29:25,600 --> 00:29:27,660 използвате сингъл амперсанд да уточни "и." 565 00:29:27,660 --> 00:29:29,451 Това е нещо, което Аз се забърка много, 566 00:29:29,451 --> 00:29:32,530 но тя не излезе че много в практиката. 567 00:29:32,530 --> 00:29:36,350 >> И тогава, след като имате всички студентите от базата данни, 568 00:29:36,350 --> 00:29:39,420 След като сте направили сте изберете и си износване или каквото и да, 569 00:29:39,420 --> 00:29:42,334 можете да използвате foreach цикъл, точно като нормална в Python, 570 00:29:42,334 --> 00:29:44,500 с каквато и да е итератор или с каквато и да е масив. 571 00:29:44,500 --> 00:29:46,333 Така че можете да направите, за ите в student.select (). WHE 572 00:29:46,333 --> 00:29:52,930 повторна (Student.grade <75), и така тази воля обхождане на всеки ученик в таблицата 573 00:29:52,930 --> 00:29:56,260 чиято степен е по-малко от 75, което в този случай, е все още само на мен. 574 00:29:56,260 --> 00:29:59,218 И тогава може да се направи нещо в рамките на че контур, като ми изпратите имейл 575 00:29:59,218 --> 00:30:01,680 и аз да кажа всъщност превърне в мой проблем Комплекти. 576 00:30:01,680 --> 00:30:04,550 >> Така че, още нещо, можете да направя, е, че е много лесно 577 00:30:04,550 --> 00:30:06,460 за актуализиране на редове в таблицата. 578 00:30:06,460 --> 00:30:08,720 Така че, не забравяйте отново тук, си, когато съм поставена, 579 00:30:08,720 --> 00:30:11,440 Взех със стойността, която беше върнати от student.create, 580 00:30:11,440 --> 00:30:14,920 и аз го определя на име нарича Езра. 581 00:30:14,920 --> 00:30:18,995 И така, сега, можете да промените стойности в рамките на тази инстанция, 582 00:30:18,995 --> 00:30:20,870 точно както бихте го направили с нормалната клас в Python. 583 00:30:20,870 --> 00:30:25,060 >> Така че можете да настроите ezra.grade = 95 и че ще се актуализира на локалното копие, 584 00:30:25,060 --> 00:30:28,380 но ако наистина искате да ангажират с тази промяна в базата данни, 585 00:30:28,380 --> 00:30:31,410 ще трябва да се обадя ezra.save, така че можете нарича .save метода 586 00:30:31,410 --> 00:30:32,650 на инстанция. 587 00:30:32,650 --> 00:30:38,085 >> И така, сега, аз успешно са се променили собствената ми клас в базата данни. 588 00:30:38,085 --> 00:30:41,210 Така че, нека да кажем, че ме хванат променящата ми клас в базата данни. 589 00:30:41,210 --> 00:30:44,126 Професор Malan вероятно ще да искат да ме изтриете от този клас, 590 00:30:44,126 --> 00:30:48,630 и за да можете да се обадите на .delete метод например само върху това нещо. 591 00:30:48,630 --> 00:30:51,674 >> Така че, ако искате да отидете обратно в този цикъл тук, 592 00:30:51,674 --> 00:30:53,465 и всъщност, вместо на изпращане на имейли всички 593 00:30:53,465 --> 00:30:56,577 на студентите, чиито клас е по-малко от 75, което исках да ги изтриете, 594 00:30:56,577 --> 00:30:58,660 в рамките на този цикъл можехте обадете s.delete инстанция. 595 00:30:58,660 --> 00:31:04,180 596 00:31:04,180 --> 00:31:07,780 И последното нещо, което искате да направите, е всеки път, когато се установи връзка, 597 00:31:07,780 --> 00:31:10,350 и сте готови с вашата работа, искате да се обадите db.close, 598 00:31:10,350 --> 00:31:13,190 където db е, че базата данни възрази, че сме имали преди. 599 00:31:13,190 --> 00:31:18,290 И вие искате да се уверите, че всичко получава затворен от. 600 00:31:18,290 --> 00:31:18,790 >> Готино. 601 00:31:18,790 --> 00:31:22,410 Така че сега, имам пример за приложение. 602 00:31:22,410 --> 00:31:26,880 Аз съм нещо като предварително направена просто всичко така че няма да има всяко живо кодиране 603 00:31:26,880 --> 00:31:30,220 грешки, но ние можем да преминете през то и да видим как ще се сложи Flask 604 00:31:30,220 --> 00:31:33,685 и Пи- луи заедно, и направи проста ап. 605 00:31:33,685 --> 00:31:38,680 Аз го наричам CS50 тирада, и това е вид на обикновен блог платформа. 606 00:31:38,680 --> 00:31:41,150 >> Така че, на първо място, аз ще го изпълним и покажа как изглежда, 607 00:31:41,150 --> 00:31:42,890 и след това ние можем да погледнем по-в кода. 608 00:31:42,890 --> 00:32:00,470 609 00:32:00,470 --> 00:32:02,830 Добре, така че нека просто стартирате тази. 610 00:32:02,830 --> 00:32:14,040 611 00:32:14,040 --> 00:32:17,250 Cool, аз ще направя това малко по-малък. 612 00:32:17,250 --> 00:32:20,000 Това не е много хубава, само защото Аз не направи много CSS, 613 00:32:20,000 --> 00:32:23,255 но това, което той прави, е, че има тази база данни на блог постове, 614 00:32:23,255 --> 00:32:25,630 и преминава през цялата тях, и той ще ги покажете 615 00:32:25,630 --> 00:32:28,170 на страницата, за на най-новото. 616 00:32:28,170 --> 00:32:30,920 И така, това са само някои мнения че съм спасил в базата данни. 617 00:32:30,920 --> 00:32:35,680 >> Така че, ако искаме да се създаде нова пощата, можем да отидем да се добави нова публикация, 618 00:32:35,680 --> 00:32:42,720 и ние можем да въведете заглавието на пост, така че нещо подобно, CS50 семинар. 619 00:32:42,720 --> 00:32:45,360 620 00:32:45,360 --> 00:32:46,735 Уау, наистина се радва на семинара. 621 00:32:46,735 --> 00:32:51,070 622 00:32:51,070 --> 00:32:52,270 >> Готино. 623 00:32:52,270 --> 00:32:56,060 След това натиснете пост, и това ще стане ви пренасочи обратно към началната страница, 624 00:32:56,060 --> 00:33:00,039 и след това ще видите, че е добавен последните мнения. 625 00:33:00,039 --> 00:33:01,580 И ние все още имаме всички онези там. 626 00:33:01,580 --> 00:33:08,080 Така че сега, нека да се оттегли през всички код и да видим как това се реализира. 627 00:33:08,080 --> 00:33:11,995 >> Така че, мисля, че първото нещо, което нека да разгледаме, е всъщност моделите. 628 00:33:11,995 --> 00:33:14,120 Много от времето, когато сте проектиране нещо, 629 00:33:14,120 --> 00:33:17,036 искате да се мисли първо за това, как започваш да представлява вашите данни, 630 00:33:17,036 --> 00:33:22,915 и след това да се изработи нещата около които, така че всичко има смисъл. 631 00:33:22,915 --> 00:33:25,290 И това е всъщност как съм го направи, когато правех това, 632 00:33:25,290 --> 00:33:28,030 Аз седнах и си помислих, какво искам в пост. 633 00:33:28,030 --> 00:33:32,130 >> Така че, тук, ние имаме една и съща структура че аз се споменава по-рано, 634 00:33:32,130 --> 00:33:33,755 когато правим db = Sqldatabase ("posts.db"). 635 00:33:33,755 --> 00:33:37,840 636 00:33:37,840 --> 00:33:40,980 В действителност, най-вероятно не искат да твърди код в базите данни на вашия име. 637 00:33:40,980 --> 00:33:43,730 Това вероятно би трябвало да е параметър които се съхранява някъде, може би 638 00:33:43,730 --> 00:33:45,940 в конфигурационния файл, но в един малък пример, подобен на този, 639 00:33:45,940 --> 00:33:48,310 че е добре да се твърди, че код инча 640 00:33:48,310 --> 00:33:53,510 >> Така че сега, ние имаме този клас Post, която наследява от базовия модел. 641 00:33:53,510 --> 00:33:56,930 И това е, отново, за ID = PrimaryKeyField. 642 00:33:56,930 --> 00:34:02,250 Всъщност, ако не укажете, ако аз действително се отървах от този, 643 00:34:02,250 --> 00:34:07,152 След Пи- луи ние ще се погрижим за автоматично създаване на тази област ID, 644 00:34:07,152 --> 00:34:09,360 и това ще стане автоматично го направи PrimaryKey, които 645 00:34:09,360 --> 00:34:12,485 Мисля, че е много хубаво, защото обикновено, това е нещо, което искате да имате, 646 00:34:12,485 --> 00:34:16,239 но ми харесва да го сложи в специално, Просто така си спомням, че тя е там. 647 00:34:16,239 --> 00:34:19,480 Но ако не се уточни, че, че ще има автоматично. 648 00:34:19,480 --> 00:34:22,198 >> И така, аз имам дата, която е DateTimeField и всичко 649 00:34:22,198 --> 00:34:24,864 тези различни области, ако погледнете на Пи- луи документация, 650 00:34:24,864 --> 00:34:28,920 тя ще ви даде списък на различни видове полета, които можете да използвате. 651 00:34:28,920 --> 00:34:34,440 В по-голямата си част, това е аналогична на това, което ще видите в SQL. 652 00:34:34,440 --> 00:34:37,699 Така че има CharField, а VarCharFields, TextFields, 653 00:34:37,699 --> 00:34:40,550 които са за много дълго текстове, като блог пост 654 00:34:40,550 --> 00:34:44,460 потенциално, DateTimeFields, DoubleFields, FloatFields, 655 00:34:44,460 --> 00:34:46,100 всички такива неща. 656 00:34:46,100 --> 00:34:51,570 >> И вие може да премине в други аргументи към него, което аз не уточни тук. 657 00:34:51,570 --> 00:34:55,719 Кажи, например, можете не му попречи да позволи две длъжности да имат същото заглавие, 658 00:34:55,719 --> 00:34:59,672 можете да укажете нещо като уникален = True, 659 00:34:59,672 --> 00:35:02,880 и това е само допълнително параметър, за да областта, че когато става той съставя надолу 660 00:35:02,880 --> 00:35:06,865 в SQL, това ще се уточни че тя трябва да бъде уникален. 661 00:35:06,865 --> 00:35:09,740 Можете също да укажете нещо подобно Не нищожна и всички други неща, 662 00:35:09,740 --> 00:35:11,750 обикновено правя в SQL. 663 00:35:11,750 --> 00:35:16,020 Така че, това е доста проста модел, който има дата. 664 00:35:16,020 --> 00:35:19,460 Забележете, тук, в рамките на DateTimeField, Аз определено това, което е по подразбиране. 665 00:35:19,460 --> 00:35:22,560 Аз го определен, за да бъде datetime.datetime.now, 666 00:35:22,560 --> 00:35:24,920 заради начина, по който това стане оценена, 667 00:35:24,920 --> 00:35:28,750 тя всъщност оценява на datetime.now когато 668 00:35:28,750 --> 00:35:32,110 тя се вкарва в базата данни. 669 00:35:32,110 --> 00:35:34,760 >> Мисля, че щях да имам да се удвои проверите това, 670 00:35:34,760 --> 00:35:38,222 но ако си направил нещо подобно, тогава тя всъщност ще оцени, че веднъж, 671 00:35:38,222 --> 00:35:40,180 и след това на дата и час винаги ще бъде един и същ. 672 00:35:40,180 --> 00:35:44,240 Така че, просто, ако правиш нещо с datetimes, двойна проверка 673 00:35:44,240 --> 00:35:47,080 че това е оценката, когато действително да бъде внесен, или пък 674 00:35:47,080 --> 00:35:48,780 може да бъде объркан. 675 00:35:48,780 --> 00:35:51,221 >> Заглавието е просто CharField, която има 676 00:35:51,221 --> 00:35:53,970 са повече аргументи можете да минат в уточнява точно колко дълго 677 00:35:53,970 --> 00:35:56,170 искам тя да бъде, но ето, тя наистина не е от значение. 678 00:35:56,170 --> 00:35:58,687 И Текст ще бъде текста на целия пост, 679 00:35:58,687 --> 00:36:01,020 и че ще е по- TextField само защото искате 680 00:36:01,020 --> 00:36:03,370 за да може да бъде доста дълъг низ. 681 00:36:03,370 --> 00:36:05,970 >> Тогава ние имаме тази Meta подклас, че просто 682 00:36:05,970 --> 00:36:11,250 уточнява, че искаме базата данни когато това е всъщност отвори в 683 00:36:11,250 --> 00:36:14,267 да бъде най-db обекта, които имаме тук. 684 00:36:14,267 --> 00:36:16,350 И последно нещо, ние имаме тук, е само тази функция 685 00:36:16,350 --> 00:36:18,120 че ние ще използвате от основната ни ап 686 00:36:18,120 --> 00:36:23,970 за инициализиране на базата данни, за да се свържете с го, и след това да създадете таблицата Post. 687 00:36:23,970 --> 00:36:26,880 >> Сега, нека да разгледаме самата основна ап. 688 00:36:26,880 --> 00:36:30,800 Така че това е доста малко по-дълго от тези, 689 00:36:30,800 --> 00:36:34,840 че сме виждали и преди, но се надявам да не е твърде лошо. 690 00:36:34,840 --> 00:36:37,140 Така че, нека да удължи този навън. 691 00:36:37,140 --> 00:36:38,370 Добре. 692 00:36:38,370 --> 00:36:42,070 >> Така че, забележете, и горната I внесени цял куп други неща 693 00:36:42,070 --> 00:36:44,129 от стъкленицата, че ние не трябва наистина е виждал преди. 694 00:36:44,129 --> 00:36:46,670 И да се надяваме, ние може да мине през всеки един от тях един по един 695 00:36:46,670 --> 00:36:49,420 и говори малко повече за тях, сортирани по пример. 696 00:36:49,420 --> 00:36:51,380 Така че, ние имаме колбата, и render_template, 697 00:36:51,380 --> 00:36:54,370 което сме виждали преди, това искане обект, 698 00:36:54,370 --> 00:37:00,400 който ще излезе когато погледнем как вида, в който бях показва всъщност 699 00:37:00,400 --> 00:37:01,170 върши работа. 700 00:37:01,170 --> 00:37:04,850 Пренасочване, която ви позволява да пренасочите обратно от Създаване на нов пост 701 00:37:04,850 --> 00:37:11,710 Обратно към началната страница на оригиналния, а след това URL, който е нещо, което ви позволява да 702 00:37:11,710 --> 00:37:15,550 разбера къде в уебсайт на определена страница е. 703 00:37:15,550 --> 00:37:17,810 >> И така, следващият нещо, което правя, е I внос 704 00:37:17,810 --> 00:37:21,550 цялата информация, от Models файлове, които ние просто гледат. 705 00:37:21,550 --> 00:37:23,140 А, да. 706 00:37:23,140 --> 00:37:28,720 >> Така че, нещо друго ново, което идва когато имаш работа с, 707 00:37:28,720 --> 00:37:31,850 особено бази данни, е, че можете да укажете 708 00:37:31,850 --> 00:37:35,110 функция, която получава, наречен преди всяко искане и функция, която получава 709 00:37:35,110 --> 00:37:39,690 извика след всяко искане, като се използва този запитване функция декоратор app.before. 710 00:37:39,690 --> 00:37:42,324 >> И така, това ще се изпълни където и тази функция е. 711 00:37:42,324 --> 00:37:44,240 Това не трябва да бъде извикана преди поискване 712 00:37:44,240 --> 00:37:46,281 но обикновено това е нещо, разумно да го наричат. 713 00:37:46,281 --> 00:37:48,580 714 00:37:48,580 --> 00:37:51,650 Можете да посочите каквото и функция искате да се нарича там, 715 00:37:51,650 --> 00:37:56,330 така че аз определено това initialize_db функция, която имахме още през Models 716 00:37:56,330 --> 00:38:02,390 файл, така че преди всяка заявка, искате да се свържете с базата данни. 717 00:38:02,390 --> 00:38:04,560 >> Има два различни начини, можете да направите това. 718 00:38:04,560 --> 00:38:10,830 Можете да направитеapp., Т.е. вярвам, че е after_request. 719 00:38:10,830 --> 00:38:13,800 И разликата между after_request и teardown_request, 720 00:38:13,800 --> 00:38:17,590 е, че ще се случи само after_request ако искането всъщност е бил валиден. 721 00:38:17,590 --> 00:38:20,440 И така, само ако искане е било успешно, 722 00:38:20,440 --> 00:38:22,490 ако нищо не се обърка, но teardown_request 723 00:38:22,490 --> 00:38:26,300 случва в случай на успех молба, или в случай на грешка. 724 00:38:26,300 --> 00:38:28,252 >> Така че, обикновено, което искате да използват teardown_request, 725 00:38:28,252 --> 00:38:30,460 освен ако не искате да направите, нещо, особено различен 726 00:38:30,460 --> 00:38:31,470 в случай на грешка. 727 00:38:31,470 --> 00:38:35,122 Но само за затваряне на базата данни, дали тя е загубила или ако не може, 728 00:38:35,122 --> 00:38:37,080 правим искате да прекъснете от базата данни. 729 00:38:37,080 --> 00:38:41,240 Така тя се нарича, db.close на DB обект. 730 00:38:41,240 --> 00:38:43,740 >> Забележете, че teardown_request отнема по изключение. 731 00:38:43,740 --> 00:38:46,781 Така че можете да проверите дали има действително грешка, когато е било закриване, 732 00:38:46,781 --> 00:38:49,390 но тук, да се надяваме, че Не са един куп грешки, 733 00:38:49,390 --> 00:38:52,720 така че ние сме просто някак без да обръща внимание, че. 734 00:38:52,720 --> 00:38:55,990 >> Добре, а останалата част от него не е твърде лошо. 735 00:38:55,990 --> 00:39:02,240 Така че, когато отидем в началната страница, ние постановено това home.html Template 736 00:39:02,240 --> 00:39:03,490 че ще се отвори. 737 00:39:03,490 --> 00:39:06,240 Пропускът е в пост равно на, и какво е това 738 00:39:06,240 --> 00:39:10,260 прави се, не забравяйте, ние имаме този пост модел, така че ние подбираме всички постове, 739 00:39:10,260 --> 00:39:13,890 и след това друго нещо, което можете да направите, можете да укажете клаузата WHERE, 740 00:39:13,890 --> 00:39:16,910 можете да укажете поръчате по, и така ние приемаме 741 00:39:16,910 --> 00:39:18,820 всички от постовете, които получите избран и след това 742 00:39:18,820 --> 00:39:22,590 ние ги поръчате от post.date.descending. 743 00:39:22,590 --> 00:39:25,030 И това ще се уточни, когато те всъщност излезе, 744 00:39:25,030 --> 00:39:29,250 най-скорошната ще бъде много първата една. 745 00:39:29,250 --> 00:39:31,420 >> И след това, ние минаваме, че в шаблона за home.html, 746 00:39:31,420 --> 00:39:34,240 така че нека действително се отворят че Template наистина бързо, 747 00:39:34,240 --> 00:39:36,760 и да разгледаме как това е работа. 748 00:39:36,760 --> 00:39:42,130 И това не е голяма HTML, но надявам се, можем да се съсредоточим върху Питон. 749 00:39:42,130 --> 00:39:46,960 >> Така че има линк към Добавяне на нов Post, и така това се уточнява маршрута 750 00:39:46,960 --> 00:39:51,580 в колба, че дефинира, която е точно тук. 751 00:39:51,580 --> 00:39:56,310 Това е нов пост маршрута, и ние се уточни, че тук. 752 00:39:56,310 --> 00:40:00,450 И така, това е линк тогава, че ще отида до този маршрут в рамките на сървъра на стъкленицата. 753 00:40:00,450 --> 00:40:03,820 >> По-интересното е това за цикъл тук. 754 00:40:03,820 --> 00:40:07,685 Така че ние се уточни, че този след параметър, който 755 00:40:07,685 --> 00:40:09,560 е приет в render_template функция, 756 00:40:09,560 --> 00:40:13,550 за всеки пост в пост-те обект, който да се изпраща инча 757 00:40:13,550 --> 00:40:16,600 Искаме да разпечатате заглавието на съобщението, в H1, 758 00:40:16,600 --> 00:40:21,930 и след това по-долу, ние искаме да разпечатате текста пост в рамките на една точка. 759 00:40:21,930 --> 00:40:25,710 >> И тук, можем действително наричаме функция Python, 760 00:40:25,710 --> 00:40:35,130 така че можем да наречем диалоговия прозорец за грешките, ST-RF-време, и може да премине в низ за форматиране 761 00:40:35,130 --> 00:40:37,064 които искате да отпечатате данните на инч 762 00:40:37,064 --> 00:40:39,980 Така че това е доста хубаво, че можете да всъщност наричаме тази функция Python 763 00:40:39,980 --> 00:40:41,090 отвътре тук. 764 00:40:41,090 --> 00:40:44,370 Не е нужно да правите форматирането на страна на контролера, защото наистина, 765 00:40:44,370 --> 00:40:47,770 форматиране на датата е нещо, което искате да се справят в рамките на изгледа. 766 00:40:47,770 --> 00:40:51,480 >> И всички те процента нещата не са супер важни. 767 00:40:51,480 --> 00:40:55,270 Ако погледнете нагоре документацията за функцията на диалоговия прозорец за грешките в Python, 768 00:40:55,270 --> 00:40:57,040 тя определя всички тези неща, но това е 769 00:40:57,040 --> 00:40:59,190 как, когато ние търсехме в началната страница тук, 770 00:40:59,190 --> 00:41:04,440 го форматира това с хубав дата, и в него се посочва AM или PM, 771 00:41:04,440 --> 00:41:09,410 но обикновено, ако ние не са имали този тук, 772 00:41:09,410 --> 00:41:14,024 най-вероятно ще получите някои боклук дата, че не изглежда много добре. 773 00:41:14,024 --> 00:41:15,940 И тогава ние се уточни post.text, и можех 774 00:41:15,940 --> 00:41:19,460 да изведе няколко редове тук, просто 775 00:41:19,460 --> 00:41:21,820 да се въведе някакъв пространства между всеки пост. 776 00:41:21,820 --> 00:41:26,270 >> Така че, мисля, че най-важното нещо в този пример, 777 00:41:26,270 --> 00:41:28,697 е, че можете да използвате това, за контур. 778 00:41:28,697 --> 00:41:30,780 Това е аналогично на неща, които можете да направите в PHP. 779 00:41:30,780 --> 00:41:32,905 Можете да превъртите през, всичко да се изпраща в, 780 00:41:32,905 --> 00:41:36,719 и така, вместо да се налага да се направи Copy / Paste, Copy / Paste всички HTML, 781 00:41:36,719 --> 00:41:40,010 просто трябва да го пиша веднъж, а след това можете да обхождане на всички публикации. 782 00:41:40,010 --> 00:41:41,510 >> И това е нещо, обща, която искате 783 00:41:41,510 --> 00:41:44,510 да направите, когато имате много данни, е, че за всичко в данните си, 784 00:41:44,510 --> 00:41:48,370 искаш да направиш подобно нещо. 785 00:41:48,370 --> 00:41:51,690 И след това, просто не забравяйте, че когато искате да отпечатате нещо изрично 786 00:41:51,690 --> 00:41:54,780 в HTML кода, който използвате двойните скоби тук, 787 00:41:54,780 --> 00:41:57,820 но тогава, когато искате да зададете някаква информация за състоянието, 788 00:41:57,820 --> 00:42:02,430 или около една за контур, вие използвате процента скоба. 789 00:42:02,430 --> 00:42:08,730 >> Така че, да се върне в Python код, така че обяснява 790 00:42:08,730 --> 00:42:12,242 какво се случва в по-голямата маршрут, когато отидем там, 791 00:42:12,242 --> 00:42:14,450 той просто показва всички мнения, но тогава въпросът 792 00:42:14,450 --> 00:42:17,440 е, как да се получи в действителност мнения в базата данни, която 793 00:42:17,440 --> 00:42:18,970 е малко по-интересно. 794 00:42:18,970 --> 00:42:23,960 >> Така че, когато кликнете върху новите Post връзка, което видяхме тук, 795 00:42:23,960 --> 00:42:26,000 той ви пренасочва към тази форма. 796 00:42:26,000 --> 00:42:29,580 И това е само един прост разговор към render_template функция, която след това 797 00:42:29,580 --> 00:42:32,110 преминава в новия пост в HTML форма. 798 00:42:32,110 --> 00:42:36,212 Така че нека да погледнем на това. 799 00:42:36,212 --> 00:42:37,420 Така че това е доста проста. 800 00:42:37,420 --> 00:42:45,110 Той има прост HTML форма, която ще изглежда малко по-запознати, 801 00:42:45,110 --> 00:42:47,380 въз основа на формулярите в CS50 Finance. 802 00:42:47,380 --> 00:42:49,940 И така, ние зададени тук, действието. 803 00:42:49,940 --> 00:42:52,435 И тук, ако работите с PHP, обикновено тя, 804 00:42:52,435 --> 00:42:55,930 ще бъде нещо като, create.PHP, но тук 805 00:42:55,930 --> 00:42:59,960 ние всъщност посочите маршрут в сървъра колба. 806 00:42:59,960 --> 00:43:02,520 И така, този маршрут съответства за маршрута създаде 807 00:43:02,520 --> 00:43:05,680 които имаме тук, които ние ще отидем в в секунда. 808 00:43:05,680 --> 00:43:07,630 >> И така, ние се уточни, че това е метод пост, 809 00:43:07,630 --> 00:43:09,820 защото искаме да изпратим тази форма на данни, и обикновено 810 00:43:09,820 --> 00:43:12,945 когато сте изпращане на данни от формуляр, може да искате да използвате искане пост, 811 00:43:12,945 --> 00:43:15,760 Просто, за да не се окажете с този голям, тромав URL. 812 00:43:15,760 --> 00:43:18,970 Но можете също да използвате заявка за GET, и да ги прекара с променлива маршрутизация, 813 00:43:18,970 --> 00:43:21,170 но за форми, това е хубаво на искане пост тук. 814 00:43:21,170 --> 00:43:24,620 И така, след това, просто ви харесва ще правим с HTML и PHP, 815 00:43:24,620 --> 00:43:28,420 можете да зададете тези текстови входове, и можете да укажете името на тях, 816 00:43:28,420 --> 00:43:33,490 и това е името, с което ще се предава в искането обекта в рамките на стъкленицата. 817 00:43:33,490 --> 00:43:36,960 >> И тогава ние сме една Подайте бутон, който казва Post. 818 00:43:36,960 --> 00:43:40,760 И тук, Post е името на бутон, защото това е един блог пост, 819 00:43:40,760 --> 00:43:42,700 но тук, пост е метод на избор. 820 00:43:42,700 --> 00:43:47,060 Така че тези, които са на една и съща дума но всъщност не са свързани. 821 00:43:47,060 --> 00:43:48,460 Да 822 00:43:48,460 --> 00:43:54,800 >> Ако се върнем към кода на Python, когато ние нарича метод за създаване, 823 00:43:54,800 --> 00:43:57,702 забележите, че тук можете да всъщност зададени в рамките на маршрута 824 00:43:57,702 --> 00:44:00,650 методите за заявка който искате да приемете, 825 00:44:00,650 --> 00:44:04,770 и така тук, аз се уточни, че I Само искам да приемам метод Post. 826 00:44:04,770 --> 00:44:09,800 Така че, ако аз всъщност се опита да посети страницата пряко, което е с помощта на заявка за GET, 827 00:44:09,800 --> 00:44:11,700 тя ще ми каже "Метод не е позволено." 828 00:44:11,700 --> 00:44:15,840 >> И така, вие имате страници, нещо като това създаде страница, която аз съм само 829 00:44:15,840 --> 00:44:20,192 Наистина се използва като начин за формата да се подава, 830 00:44:20,192 --> 00:44:22,900 можете да укажете, че не правим искам хората да бъдат в състояние да отида там 831 00:44:22,900 --> 00:44:25,650 директно чрез заявка за GET, или ако не сте искали, 832 00:44:25,650 --> 00:44:28,580 по някаква причина, искане Post, бихте могли само да уточним стигна до тук, 833 00:44:28,580 --> 00:44:32,720 но в този пример, ние просто Искам искане Post да изляза. 834 00:44:32,720 --> 00:44:38,700 >> Така че, когато create_post се нарича, когато посещаваме, че чрез искане Post, 835 00:44:38,700 --> 00:44:43,600 всеки път, когато отидете на конкретна маршрут, има това искане обект, 836 00:44:43,600 --> 00:44:46,640 и ние трябваше да импортирате исканията на самия връх, 837 00:44:46,640 --> 00:44:49,640 но има това искане обект, който да се изпраща в, 838 00:44:49,640 --> 00:44:53,210 и можете да получите достъп до данните от формуляра, което автоматично ще се напълни 839 00:44:53,210 --> 00:44:55,070 когато изпращате искане от форма. 840 00:44:55,070 --> 00:44:56,990 >> И след това, което мисля, че е наистина страхотно, е 841 00:44:56,990 --> 00:45:02,840 тази форма на обекта, за да се пропуска в, е само на речника Python, че 842 00:45:02,840 --> 00:45:10,560 съдържа, ако access-- така че тук, нека ме спра на HTML в непосредствена близост до него, просто 843 00:45:10,560 --> 00:45:17,670 така че може да има, че като отправна точка, да, така 844 00:45:17,670 --> 00:45:21,060 имената, които сме тук, за да определят за различните области, така че 845 00:45:21,060 --> 00:45:23,900 заглавието и текста, ние тогава просто използвайте такива, които тук 846 00:45:23,900 --> 00:45:27,110 като индекси в данните от формуляра. 847 00:45:27,110 --> 00:45:28,950 Така че, това е супер удобно. 848 00:45:28,950 --> 00:45:33,320 >> Така че след това, което наричаме post.create, които ще създаде и автоматично вмъкнете 849 00:45:33,320 --> 00:45:36,850 този нов пост обект в базата данни. 850 00:45:36,850 --> 00:45:40,690 И аз мисля, че това създаде функция тук е наистина страхотен пример за това как 851 00:45:40,690 --> 00:45:44,900 мощна Flask е и работата с този, защото, ако бяха прави нещо 852 00:45:44,900 --> 00:45:48,660 в PHP, може да се наложи да направи много за валидиране, 853 00:45:48,660 --> 00:45:51,730 вие ще трябва да след това създаване на база данни, връзка, 854 00:45:51,730 --> 00:45:55,210 вие ще трябва да след това изпълни заявката за SQL, 855 00:45:55,210 --> 00:45:59,550 но тук ние просто трябва тази хубава post.create, което можем, тогава просто 856 00:45:59,550 --> 00:46:01,520 получите информацията, посочени на искане обекта, 857 00:46:01,520 --> 00:46:05,370 и след това да го предаде в нова публикувате, че ние създаваме. 858 00:46:05,370 --> 00:46:07,850 >> И тогава, съвсем последното нещо, което искаме да направим, 859 00:46:07,850 --> 00:46:09,630 е да се пренасочи потребителското обратно към дома. 860 00:46:09,630 --> 00:46:13,020 И така, ние използваме тази Flask пренасочват функция. 861 00:46:13,020 --> 00:46:17,770 И нещо, което не бях виждал преди, беше този URL функция. 862 00:46:17,770 --> 00:46:21,970 Така че URL адреса за функция позволява минаваш в действителност името 863 00:46:21,970 --> 00:46:26,090 на функция във вашия Python код, вместо конкретния начин 864 00:46:26,090 --> 00:46:26,720 че това е най. 865 00:46:26,720 --> 00:46:32,107 >> Така че аз може да има също толкова лесно пренасочени на потребителя да наклонена черта, 866 00:46:32,107 --> 00:46:37,050 което ще го изпрати обратно у дома, но използване на URL адреса за функция е хубаво, 867 00:46:37,050 --> 00:46:39,990 защото ако промените място, където нещата са, 868 00:46:39,990 --> 00:46:44,080 така че нека да кажа, че мога да променя начало да бъде в / у дома, вместо да, 869 00:46:44,080 --> 00:46:47,040 това пак би след това се върнете / дома, защото всъщност отива и поглежда нагоре 870 00:46:47,040 --> 00:46:50,770 името на функцията, и то ще ви даде обратно на URL адреса за това. 871 00:46:50,770 --> 00:46:52,490 >> Така че, един вид на предположение, че сте 872 00:46:52,490 --> 00:46:55,489 по-вероятно да се промени, където нещата са, от имената на функциите. 873 00:46:55,489 --> 00:46:58,840 Можете да използвате тази наистина хубаво URL за функция. 874 00:46:58,840 --> 00:47:02,470 И едно нещо, за да се запознаят с че е малко по-сложно, 875 00:47:02,470 --> 00:47:05,750 е, че си мислиш, че може просто да обадете се пренасочи на URL адреса за, 876 00:47:05,750 --> 00:47:10,600 но всъщност всички маршрути има за да се върнете някакъв текст и HTML, 877 00:47:10,600 --> 00:47:14,360 така че вие ​​всъщност трябва да върне пренасочи повикването. 878 00:47:14,360 --> 00:47:18,379 В противен случай, ще се получи нещо невалидна, за да не се връщат низ, 879 00:47:18,379 --> 00:47:21,420 защото всички те трябва да се върне на HTML всъщност искате да направят. 880 00:47:21,420 --> 00:47:26,980 >> И така, когато ти се обадя пренасочването, той ви пренасочва към страницата, 881 00:47:26,980 --> 00:47:30,270 но всъщност връща HTML което трябва да се изпълни, че пренасочване. 882 00:47:30,270 --> 00:47:34,430 883 00:47:34,430 --> 00:47:37,110 Върни се на началната страница. 884 00:47:37,110 --> 00:47:39,200 Така че ние имаме тези две различни гледни точки. 885 00:47:39,200 --> 00:47:40,132 Имаме мнението дома. 886 00:47:40,132 --> 00:47:41,590 Или, аз предполагам, че трябва да се каже, шаблони. 887 00:47:41,590 --> 00:47:44,190 Ние имаме тези две шаблони, шаблона дома, които 888 00:47:44,190 --> 00:47:48,500 показва всички наши постове, и След това имаме тази реклама нещо, 889 00:47:48,500 --> 00:47:52,970 и когато щракнете върху гредата, тя отива в нов маршрут в колба, 890 00:47:52,970 --> 00:47:55,920 но този път не е задължително имат съответния шаблон. 891 00:47:55,920 --> 00:47:59,290 892 00:47:59,290 --> 00:48:01,560 Вие не трябва да се види нищо, но все още можете да 893 00:48:01,560 --> 00:48:04,090 имат тази работа ще зад кулисите. 894 00:48:04,090 --> 00:48:07,450 И тогава ще се пренасочи Обратно към началната страница. 895 00:48:07,450 --> 00:48:12,230 И със сигурност, че е лесно да се работи в някои по-хубав, CSS в шаблона 896 00:48:12,230 --> 00:48:15,580 и ще я направи да изглежда много по-хубав, но всички основни логика 897 00:48:15,580 --> 00:48:18,590 е налице в Питон. 898 00:48:18,590 --> 00:48:20,020 >> Всякакви въпроси относно този пример? 899 00:48:20,020 --> 00:48:22,760 Знам, че има много различни неща се случват там, 900 00:48:22,760 --> 00:48:25,341 много неща, които не бях виждал и преди, но като нищо. 901 00:48:25,341 --> 00:48:25,840 Да. 902 00:48:25,840 --> 00:48:28,346 >> ПУБЛИКАТА 1: Имате ли да се направи нещо специално да търкат данните, които е 903 00:48:28,346 --> 00:48:29,600 подадена от формата? 904 00:48:29,600 --> 00:48:31,109 Забелязах, че току-що каза "да създаде" 905 00:48:31,109 --> 00:48:33,900 Езра ZIGMOND: Да, така че това е Всъщност, това е една наистина добра точка. 906 00:48:33,900 --> 00:48:36,350 Така че въпросът е, което правите Трябва да се провери и да се уверите, 907 00:48:36,350 --> 00:48:39,190 че данните са валидни, и направя някаква търкане 908 00:48:39,190 --> 00:48:41,840 за да се уверите, че той е валиден, тъй като може да видите тук, 909 00:48:41,840 --> 00:48:42,660 Аз не правя това. 910 00:48:42,660 --> 00:48:48,140 Така че нека да видим какво ще стане ако публикувате нещо празно. 911 00:48:48,140 --> 00:48:51,190 Значи, това всъщност ще направи точно празно пост и попълнете DateTime. 912 00:48:51,190 --> 00:48:55,990 >> Така че в действителност, Вие вероятно ще искам да направя нещо подобно, 913 00:48:55,990 --> 00:49:04,749 Може би, ако посочите заглавието, се равнява на празен низ, тогава не правим това. 914 00:49:04,749 --> 00:49:07,290 Или само да го направя, ако заглавието е не е равно на празен низ. 915 00:49:07,290 --> 00:49:10,330 Така че това не е така в действителност автоматично се грижат за това очистване 916 00:49:10,330 --> 00:49:12,820 за вас, така че все още трябва да се направи това. 917 00:49:12,820 --> 00:49:14,330 Да, добър въпрос. 918 00:49:14,330 --> 00:49:18,497 >> АУДИТОРИЯ 2: Има ли скраб за продължението инжекция? 919 00:49:18,497 --> 00:49:19,890 Знаеш ли? 920 00:49:19,890 --> 00:49:22,830 >> Езра ZIGMOND: Да се ​​надяваме, Пи- луи прави това. 921 00:49:22,830 --> 00:49:25,830 Мисля, че това със сигурност ще бъде доста лоша библиотека, ако не се направи това. 922 00:49:25,830 --> 00:49:29,511 923 00:49:29,511 --> 00:49:32,690 Аз не знам точно. 924 00:49:32,690 --> 00:49:34,820 Бих трябва да погледнем в заявка че генерирани. 925 00:49:34,820 --> 00:49:38,980 Мисля, че ако аз напечатани в блог пост, че нещо като погледна 926 00:49:38,980 --> 00:49:46,370 като SQL инжекция атаки, нещо като това, ако това 927 00:49:46,370 --> 00:49:49,370 е като поле за парола или нещо, може да се направи нещо подобно. 928 00:49:49,370 --> 00:49:53,410 >> Мисля, че все още ще получите буквално е публикувал, 929 00:49:53,410 --> 00:49:59,200 но аз мисля, че Пи- луи прави някакъв вид пречистване на данните 930 00:49:59,200 --> 00:50:01,680 преди тя действително го изпълнява. 931 00:50:01,680 --> 00:50:04,510 >> ПУБЛИКАТА 1: Това е текстово поле предназначена да отнеме обикновен текст, нали? 932 00:50:04,510 --> 00:50:05,710 >> Езра ZIGMOND: Да, това е. 933 00:50:05,710 --> 00:50:06,465 Да. 934 00:50:06,465 --> 00:50:09,590 Така че аз мисля, че всички, така че това е правилното поведение, който ще направи това, 935 00:50:09,590 --> 00:50:12,170 но аз мисля, че Пи- луи надявам се върши 936 00:50:12,170 --> 00:50:13,780 някакъв вид защита на техния край. 937 00:50:13,780 --> 00:50:16,090 И ако искате да двойна проверка, че има 938 00:50:16,090 --> 00:50:19,530 начини, когато генерирате заявка. 939 00:50:19,530 --> 00:50:22,622 така че не е нужно да се го изпълни директно. 940 00:50:22,622 --> 00:50:24,330 Бих трябва да вземе Посетете документация, 941 00:50:24,330 --> 00:50:27,930 но всъщност можете да разглеждаш SQL, че тя се генерира, 942 00:50:27,930 --> 00:50:30,840 и да погледнем на това, както и да уверите, че е бягство неща. 943 00:50:30,840 --> 00:50:33,700 >> Друга причина, поради които може да искате да погледнете на SQL 944 00:50:33,700 --> 00:50:37,920 че Пи- луи се извежда, ако е неща, като че ли се случва наистина бавно, 945 00:50:37,920 --> 00:50:41,090 можете да погледнете и да видим за какво става всъщност прави, защото това е понякога 946 00:50:41,090 --> 00:50:44,670 лесно да се случайно добавите в, така, както го пише, 947 00:50:44,670 --> 00:50:47,880 случайно да го има изберете цялата база данни на първо място, 948 00:50:47,880 --> 00:50:50,230 и след това да се направи някаква работа на които, когато наистина 949 00:50:50,230 --> 00:50:51,320 означаваше, за да изберете една подгрупа. 950 00:50:51,320 --> 00:50:53,560 >> И така, ако нещата не са доста ще полето, 951 00:50:53,560 --> 00:50:57,300 това е добре да погледнете по искане това е всъщност да е генериран. 952 00:50:57,300 --> 00:50:57,800 Да. 953 00:50:57,800 --> 00:51:02,100 >> АУДИТОРИЯ 2: Когато за първи път започнах, ще ви постави в пристанището като 5000. 954 00:51:02,100 --> 00:51:02,904 >> Езра ZIGMOND: Да. 955 00:51:02,904 --> 00:51:06,070 АУДИТОРИЯ 2: е по подразбиране с Пи- луи, или е нещо, което можете да промените? 956 00:51:06,070 --> 00:51:10,870 Езра ZIGMOND: Да, така че порт е по подразбиране с колба. 957 00:51:10,870 --> 00:51:13,061 Ако го използвате без уточнява нищо, 958 00:51:13,061 --> 00:51:14,310 тя автоматично ще направи това. 959 00:51:14,310 --> 00:51:16,060 Аз вярвам, че ще трябва да се удвои проверите това, 960 00:51:16,060 --> 00:51:19,130 но можете да се уточни, че в app.run, Мисля, че можете да направите нещо подобно, 961 00:51:19,130 --> 00:51:19,629 порт = 8080. 962 00:51:19,629 --> 00:51:22,375 963 00:51:22,375 --> 00:51:23,750 Нека да дам, че се опита бързо. 964 00:51:23,750 --> 00:51:29,100 965 00:51:29,100 --> 00:51:32,230 Да, така че може просто зададени порт = 8080, и тя ще го изпълним там, 966 00:51:32,230 --> 00:51:36,130 което мисля, ако искате да го ползвате на логическо устройство, не съм пробвал този вън, 967 00:51:36,130 --> 00:51:38,527 но аз мисля, че ако тя се завтече на порт 8080, 968 00:51:38,527 --> 00:51:40,360 може би ще бъде в състояние за достъп до сървъра, 969 00:51:40,360 --> 00:51:41,870 точно като сте били на сайта. 970 00:51:41,870 --> 00:51:44,390 >> Да, но това е лесно да се променят, че ако 971 00:51:44,390 --> 00:51:48,540 има ли нещо като порт-спедиция неща, които трябва да направите. 972 00:51:48,540 --> 00:51:50,410 >> Всякакви други въпроси? 973 00:51:50,410 --> 00:51:50,916 Да? 974 00:51:50,916 --> 00:51:53,416 ПУБЛИКАТА 1: Значи, аз видях във вашия модели, които, както ви споменах, 975 00:51:53,416 --> 00:51:55,647 вие трябва да посочите база данни за всеки обект. 976 00:51:55,647 --> 00:51:58,105 Случайно да знаете, прави които го правят много лесно, ако 977 00:51:58,105 --> 00:52:03,210 имате много SQLite бази данни, които сте искате да използвате за един единствен уеб приложение, 978 00:52:03,210 --> 00:52:07,210 че може просто да посочите един куп на различни такива във вашия модел? 979 00:52:07,210 --> 00:52:11,620 >> Езра ZIGMOND: Да, нека отворите, че до бързо. 980 00:52:11,620 --> 00:52:17,570 Така че, вие казвате, ако искате да имате куп различно нещо, може би 981 00:52:17,570 --> 00:52:22,670 харесва и студентите, за някои причина, нещо такова? 982 00:52:22,670 --> 00:52:26,870 Да, така мисля, че вие все още, всеки модел 983 00:52:26,870 --> 00:52:30,652 би трябвало да има само още една база данни, предназначен за него, 984 00:52:30,652 --> 00:52:32,610 но ако искате да имате различни модели, 985 00:52:32,610 --> 00:52:35,818 са възложени на различни обекти на базата данни към него, вие определено може да направи това. 986 00:52:35,818 --> 00:52:43,070 Така че, ако съм създал нова, нещо като това, 987 00:52:43,070 --> 00:52:47,000 а сега и това е студент, че изглежда странно като блог пост, 988 00:52:47,000 --> 00:52:49,390 Можех да се уточни, че база данни, е равна на db_2 тук. 989 00:52:49,390 --> 00:52:51,390 Така че, мисля, че това е най- Основният начин можете да направите това. 990 00:52:51,390 --> 00:52:54,560 991 00:52:54,560 --> 00:52:56,200 >> Готино. 992 00:52:56,200 --> 00:52:58,410 Всякакви други въпроси? 993 00:52:58,410 --> 00:53:02,170 >> Така че просто да свършим малко битов, ето някои ресурси, 994 00:53:02,170 --> 00:53:06,030 и тези слайдове ще бъдат публикувани онлайн така че можете действително да стигнем до тези връзки. 995 00:53:06,030 --> 00:53:08,500 Най-добрите източници са наистина документацията за Flask 996 00:53:08,500 --> 00:53:09,930 и самите Пи- луи. 997 00:53:09,930 --> 00:53:12,940 Те са написани много добре, мисля. 998 00:53:12,940 --> 00:53:18,180 Така че, на интернет страницата на стъкленицата е тук, и те имат QuickStart настойнически, че 999 00:53:18,180 --> 00:53:20,710 Ще преминете през подобна неща за това, което мина през, 1000 00:53:20,710 --> 00:53:23,560 но ако искате някаква преглед от нещата, които съм та преминаха 1001 00:53:23,560 --> 00:53:26,200 или си мислиш, че аз обясних нещо в объркващ начин, 1002 00:53:26,200 --> 00:53:28,390 те ще имат подобни примери има. 1003 00:53:28,390 --> 00:53:31,570 >> Пи- луи има документация, както и те имат QuickStart настойнически 1004 00:53:31,570 --> 00:53:34,650 че отива над основните параметри че вие ​​ще искате да използвате. 1005 00:53:34,650 --> 00:53:38,900 Така че, нещата, които говореха за с уникалните и уточняващи по подразбиране, 1006 00:53:38,900 --> 00:53:42,710 различните сортове полета, които можете да използвате, тези, всичко щеше да е там. 1007 00:53:42,710 --> 00:53:44,690 >> Също така, ако имате въпроси за Пи- луи, 1008 00:53:44,690 --> 00:53:47,530 и можете да ги публикувате в stackoverflow, човекът, който направи Пи- луи всъщност 1009 00:53:47,530 --> 00:53:49,500 продължава и отговаря на тези понякога. 1010 00:53:49,500 --> 00:53:53,200 Ако имате въпрос, да се надяваме той ще бъде в състояние да му отговори, 1011 00:53:53,200 --> 00:53:54,867 защото той е написал цялата работа. 1012 00:53:54,867 --> 00:53:56,700 Мисля, че това е всичко, Исках да покрие. 1013 00:53:56,700 --> 00:53:58,930 Благодаря за излизане. 1014 00:53:58,930 --> 00:54:02,688