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 Езра Зигмунд: Привіт, всім. 5 00:00:05,830 --> 00:00:08,020 Спасибі, що прийшли сьогодні. 6 00:00:08,020 --> 00:00:10,660 Даний семінар є "Пітон Веб-додатки з Настій ". 7 00:00:10,660 --> 00:00:14,510 >> Отже, я буду говорити трохи про те, чому 8 00:00:14,510 --> 00:00:17,400 Ви можете використовувати флягу, щоб веб-додатків з Python, на відміну 9 00:00:17,400 --> 00:00:21,556 в деяких інших структур там, як Джанго, яка є найбільш добре відомі. 10 00:00:21,556 --> 00:00:24,330 Підзаголовок "і PeeWee ", який щось 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 Так, по-перше, просто один слайд що буде швидкий старт, 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 >> Таким чином, після цього, я хочу, щоб ввести те, що колбу, 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 можна зробити в колбу, швидкий приклад що ви можете зробити в Peewee, 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 2.7.10. 34 00:01:32,440 --> 00:01:35,860 Настій робить роботу з 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 Я думаю, що якщо ваш Пітон більше або дорівнює 2.7.9, 39 00:01:48,190 --> 00:01:52,220 він у вас вже встановлений, це супер легко встановити ці пакети. 40 00:01:52,220 --> 00:01:54,990 >> Ви можете зробити пункт встановити Настій, пункт встановити Peewee, 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 Таким чином, наступне питання, що колба? 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 >> Так, настій є основою для що робить веб-додатків з використанням Python. 58 00:02:46,081 --> 00:02:48,330 І, сподіваюся, до кінця це, я буду переконувати вас 59 00:02:48,330 --> 00:02:52,210 що ви дійсно може щось написати як CS50 фінансів, використовуючи Python, який я 60 00:02:52,210 --> 00:02:53,950 як багато краще, ніж PHP, особисто. 61 00:02:53,950 --> 00:02:57,320 >> Так, настій, вони називають мікрокаркас, за допомогою якого, 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 Але тільки тому, що це мікрокаркас, що не 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 Але те, що я дійсно подобається Настій 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 Я повинен порівняти його з Рубі на Рейки та 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 >> Наприклад, Ruby On Rails має цю активну систему запису, 79 00:03:41,490 --> 00:03:43,100 який дійсно хороший спосіб взаємодії з даними, 80 00:03:43,100 --> 00:03:45,960 але якщо ви хочете використовувати Рубін на Рейки, ви начебто прив'язаний в це. 81 00:03:45,960 --> 00:03:47,835 Але Настій, як я буду показати вам Peewee, 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 >> Так ось чому я дійсно як колба, це те, що це 85 00:03:56,350 --> 00:04:01,170 не робити припущення для вас на основі речей, які ви не повинні насправді. 86 00:04:01,170 --> 00:04:04,440 >> Так, чому ви повинні використовувати колбу? 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 Так що те, що називається Настій адміністратор, який відображає, що адмін 97 00:04:28,230 --> 00:04:32,060 Панель, яка забезпечує Джанго, який дає вам хороший візуальний спосіб 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 Ви просто наберіть з Настій імпорт *, або будь-який інший, 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 те, що є менш стандартизовані конвенцій про те, як використовувати флягу, 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 Але локальний: 5000 133 00:06:23,960 --> 00:06:27,650 >> І так, прямо зараз, все це робить Тобто, коли ви відвідуєте веб-сайт, 134 00:06:27,650 --> 00:06:31,490 він друкує "Hello Настій," який не супер корисно, 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 >> Таким чином, перший рядок з Настій, ми імпортуємо, колба з капіталом "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 Наступне, що ми робимо, що ми Викликайте цю функцію Настій, просто 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 "імя_інтерфейса _ ==" _ 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 це ви будете мати це Додаток = Настій (_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 і це додає більше інформації до нього, але те, що насправді Настій 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 просто повертає рядок, Привіт Настій, і що друкується на екрані. 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 >> Так що, якщо ви йдете на локальний / привіт, Тепер він буде друкувати щось ще. 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 Настій, додаток = Настій (_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 і це буде роздрукувати Привіт, ім'я. 262 00:13:35,650 --> 00:13:41,410 >> А потім, у другій одним використовує перетворення. 263 00:13:41,410 --> 00:13:44,690 Таким чином, це буде автоматично перетворити його до Int, а потім подвоїти Int, 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 тому Настій піклується про це. 267 00:13:49,594 --> 00:13:53,181 Так давайте це працює. 268 00:13:53,181 --> 00:13:54,930 Якщо у вас є колба додаток, що працює, 269 00:13:54,930 --> 00:13:58,440 Ви можете Control-C з нього щоб зупинити хід сервера. 270 00:13:58,440 --> 00:14:02,420 І тоді я буду працювати змінних. 271 00:14:02,420 --> 00:14:11,740 >> Отже, давайте на локальний / Hello / Езри і Будемо сподіватися, що це буде що-небудь для мене. 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 >> Настій дозволяє відокремити поза 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 фінансів небагато, Ви можете думати про файлах 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 І те, що ми називаємо ці Переглядів шаблони в класі. 297 00:15:30,490 --> 00:15:35,280 >> Так Настій використовується інший Python модуль, який він буде автоматично 298 00:15:35,280 --> 00:15:38,620 встановити, коли ви встановите PIP Настій називається дзіндзя, який 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 Так Настій має функцію render_template що ви можете побачити на дні тут. 306 00:16:06,650 --> 00:16:14,300 І тому, коли ви відвідаєте цю сторінку, це буде надавати цю Hello.html шаблон, 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 Це буде автоматично шукати в межах Шаблони для папки цього шаблону. 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 >> Так що, якщо я йду в / Hello / Езра, він має це жахливо, 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 >> Отже, ми надаємо Шаблон з ім'ям = ім'я, 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 Вона повинна бути більше, в межах Контролер, але для цього прикладу 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 відомий як ОРЗ, який є об'єктно-реляційного відображення. 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 >> Так, наприклад, що в Професор Малан, як правило, 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 >> Таким чином, ОРЗ, що мені подобається використовувати, називається PeeWee. 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 і я не можу згадати, чому я спочатку вибрав Peewee над 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 щоб бути в курсі, що ОРЗ буде спробувати все 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 І якщо ви подивитеся під капотом, як ОРЗ інтерпретує, що в 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 Таким чином, це код Python, і тому Перше, що ви хочете зробити, це від 436 00:23:11,880 --> 00:23:12,950 PeeWee імпорт *. 437 00:23:12,950 --> 00:23:15,850 Так, на відміну від колба, де у вас є всі ці окремі модулі, 438 00:23:15,850 --> 00:23:18,125 і ви хочете імпортувати Настій і написати шаблон, і деякі інші 439 00:23:18,125 --> 00:23:20,690 що ми побачимо пізніше, з Peewee, Ви можете просто імпортувати все, 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 Таким чином, ви повинні дБ = SqliteDatabase, а потім ім'я бази даних. 443 00:23:31,212 --> 00:23:33,170 І це буде насправді створити об'єкт бази даних 444 00:23:33,170 --> 00:23:36,230 що ви можете взаємодіяти з, з Peewee. 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 Так, протягом Peewee, кожен клас має власну таблицю у вашій базі даних. 448 00:23:47,270 --> 00:23:52,800 Так, всі класи успадковують від базової моделі, 449 00:23:52,800 --> 00:23:55,960 і столиця М модель те, що це визначається в PeeWee. 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 Це має ідентифікатор, який PrimaryKeyField, що 459 00:24:24,080 --> 00:24:26,920 є те, що, за умови, по Peewee, ім'я є 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 І це щось що потрібно від PeeWee. 467 00:24:43,920 --> 00:24:47,250 Таким чином, цей клас Мета, у вас є щоб вказати, що база даних 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 Ви просто повинні вказати в цьому Мета класу 472 00:24:59,380 --> 00:25:01,400 що база дорівнює дБ. 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 просто зателефонуйте "базова модель" що має Meta клас, 476 00:25:08,839 --> 00:25:10,380 і встановлює базу даних, рівну дБ. 477 00:25:10,380 --> 00:25:13,710 І тоді всі мої подальші моделі буде наслідувати від цього базового класу. 478 00:25:13,710 --> 00:25:16,760 І тоді я не доведеться турбуватися про створення мета клас. 479 00:25:16,760 --> 00:25:21,490 >> Так що, коли це насправді отримує компілюється в заяві SQL, 480 00:25:21,490 --> 00:25:24,875 це виглядає як це мерзота вниз тут, "Створення таблиці студентський число, 481 00:25:24,875 --> 00:25:26,020 "Що завгодно. 482 00:25:26,020 --> 00:25:30,002 >> І, я думаю, що він коротший, цей запит буде прямо тут, 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 Вона займає в базі даних Об'єкт дБ і 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 або ви знайдете ваші дані тільки отримувати затертий кожного разу. 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 >> Зверніть увагу, що я не зробив потрібно вказати ідентифікатор, 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 але в цьому особливому випадку, просто так PeeWee робить це, 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 Ви можете використовувати цикл по кожному елементу, так само, як нормально в Python, 570 00:29:42,334 --> 00:29:44,500 з якою-небудь ітератора або з якою-небудь масив. 571 00:29:44,500 --> 00:29:46,333 Таким чином, ви можете зробити для S в student.select (). Whe 572 00:29:46,333 --> 00:29:52,930 Re (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 Професор Малан, ймовірно, буде щоб хочете видалити мене з класу, 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 де дБ є те, що бази даних заперечити, що у нас було раніше. 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 помилки, але ми можемо пройти через це і подивитися, як ви б поставив флягу 604 00:31:30,220 --> 00:31:33,685 і Peewee разом, і зробити простий додаток. 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 Круто, я буду робити це трохи менше. 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 Потім Peewee ми подбаємо про автоматично створюючи що поле ідентифікатора, 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 ці різні поля, якщо ви подивитися на Peewee документації, 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, текстові поля, 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 Ви також можете вказати щось на кшталт NOT NULL і всі інші речі, 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 а потім DateTime завжди буде те ж саме. 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 >> Тоді у нас є мета підклас просто 682 00:36:05,970 --> 00:36:11,250 вказує, що ми хочемо, бази даних де це насправді відкрив у 683 00:36:11,250 --> 00:36:14,267 щоб бути об'єктом дБ, що ми тут. 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 щоб ініціалізувати базу даних для підключення до це, а потім створити таблицю пост. 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 >> Так, помічати і верхня я імпортував ціла купа інших речей, 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 >> Отже, наступний що я роблю, це я імпорту 704 00:37:17,810 --> 00:37:21,550 вся інформація від моделі файли, які ми тільки дивимося. 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 функція, яку ми мали назад в моделях 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 на об'єкті БД. 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 шаблон 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 а потім ще, що ви можете зробити, Ви можете вказати статтю, де, 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 так що давайте насправді відкрити що шаблон дуже швидко, 747 00:39:34,240 --> 00:39:36,760 і поглянути на те, як, що працює. 748 00:39:36,760 --> 00:39:42,130 І це не є великим HTML, але Будемо сподіватися, що ми можемо зосередитися на Python. 749 00:39:42,130 --> 00:39:46,960 >> Таким чином, є посилання на додавати нові Повідомлення, і таким чином це вказує маршрут 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 таким чином, ми можемо назвати STRFTIME, 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 Якщо ви подивитеся на документацію для функції STRFTIME в 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 форматує це з хорошим дата, і це визначає АМ або 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 і так, замість того, щоб робити копіювати / вставити, копіювати / вставити 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 >> Так що, коли ви натискаєте на Новий Повідомлення ланка, яке ми побачили тут, 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 фінансів. 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 >> І тоді у нас є Відправити Кнопка, яка говорить повідомлення. 818 00:43:36,960 --> 00:43:40,760 І ось, повідомлення це ім'я з Кнопка, бо це повідомлення в блозі, 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 і ось, я вказую, що я тільки хочу, щоб прийняти метод 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 з деяких причин, прохання Повідомлення, ви могли б просто вказати потрапити сюди, 833 00:44:28,580 --> 00:44:32,720 але в цьому прикладі, ми просто хочу прохання Повідомлення виходити на вулицю. 834 00:44:32,720 --> 00:44:38,700 >> Так що, коли create_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 потужний колбу і працює з цим, тому що якщо ви щось робили 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 І тому ми використовуємо це Настій перенаправити функцію. 861 00:46:13,020 --> 00:46:17,770 І те, що ми не бачили раніше, був цю адресу функції. 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 є в мові Python. 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 Езра Зигмунд: Так, так от насправді, що це дійсно хороша точка. 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 >> Езра Зигмунд: Сподіваюся, PeeWee робить. 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 але я думаю, що дійсно робить PeeWee свого роду очищення даних 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 >> Езра Зигмунд: Так, це так. 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 але я думаю, що Peewee сподіваюся, дійсно робить 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 що PeeWee виводить, якщо це речі, здається, йти дуже повільно, 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 >> Езра Зигмунд: Так. 955 00:51:02,904 --> 00:51:06,070 АУДИТОРІЯ 2: за умовчанням з Peewee, або щось ви можете змінити? 956 00:51:06,070 --> 00:51:10,870 Езра Зигмунд: Так, так що порт за замовчуванням з колби. 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 які я думаю, якщо ви хочете, щоб запустити його на IDE, я не пробував це, 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 >> Езра Зигмунд: Так, дозвольте мені відкрити, що до реального швидко. 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 Кращі ресурси дійсно документація для Настій 996 00:53:08,500 --> 00:53:09,930 і Peewee себе. 997 00:53:09,930 --> 00:53:12,940 Вони написані дуже добре, я думаю. 998 00:53:12,940 --> 00:53:18,180 Таким чином, сайт Настій тут, і вони мають Швидкий старт підручник, який 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 >> Peewee має документацію та вони мають Швидкий старт підручник 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 >> Крім того, якщо у вас є питання про Peewee, 1008 00:53:44,690 --> 00:53:47,530 і ви розмістити їх на StackOverflow, хлопець, який зробив насправді Peewee 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