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