1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:03,227 [Bermain muzik] 3 00:00:03,227 --> 00:00:04,705 4 00:00:04,705 --> 00:00:05,830 EZRA Zigmond: Hi, semua orang. 5 00:00:05,830 --> 00:00:08,020 Terima kasih kerana datang keluar hari ini. 6 00:00:08,020 --> 00:00:10,660 Seminar ini adalah "Python Web Apps dengan Flask. " 7 00:00:10,660 --> 00:00:14,510 >> Oleh itu, saya akan bercakap sedikit tentang mengapa 8 00:00:14,510 --> 00:00:17,400 anda mungkin mahu menggunakan Flask untuk membuat aplikasi web dengan Python, yang bertentangan 9 00:00:17,400 --> 00:00:21,556 kepada beberapa rangka kerja lain di luar sana, seperti Django, yang amat terkenal. 10 00:00:21,556 --> 00:00:24,330 Sari kata "dan peewee, "yang merupakan sesuatu 11 00:00:24,330 --> 00:00:27,250 kita akan bercakap tentang bagaimana untuk berinteraksi dengan pangkalan data SQL. 12 00:00:27,250 --> 00:00:29,610 Ia membuatkan ia benar-benar baik. 13 00:00:29,610 --> 00:00:32,390 >> Jadi, di sini hanya buruk cepat apa yang saya mahu pergi ke atas. 14 00:00:32,390 --> 00:00:35,520 Jadi, pertama, hanya satu slaid yang akan menjadi mula pantas, 15 00:00:35,520 --> 00:00:38,530 iaitu bagaimana untuk mendapatkan segala-galanya ditubuhkan pada komputer anda. 16 00:00:38,530 --> 00:00:41,760 Saya akan menunjukkan ini pada mesin Mac tempatan saya, 17 00:00:41,760 --> 00:00:45,220 hanya kerana itulah di mana saya telah melakukan ini sebelum ini, saya paling selesa dengannya, 18 00:00:45,220 --> 00:00:48,510 tetapi ini adalah pasti mungkin pada IDE CD50. 19 00:00:48,510 --> 00:00:52,050 >> Jadi, selepas itu, saya ingin memperkenalkan apa Flask adalah, 20 00:00:52,050 --> 00:00:55,089 dan meyakinkan anda mengapa anda perlu menggunakannya dalam tempat pertama. 21 00:00:55,089 --> 00:00:56,880 Kemudian, saya akan memberikan yang cepat contoh apa yang anda 22 00:00:56,880 --> 00:01:00,550 boleh lakukan dalam Flask, contoh cepat apa yang boleh anda lakukan dalam peewee, 23 00:01:00,550 --> 00:01:05,010 dan kemudian saya akan menunjukkan kepada anda yang lebih permohonan contoh lengkap 24 00:01:05,010 --> 00:01:07,520 bahawa saya meletakkan bersama-sama kita boleh berjalan melalui bersama-sama. 25 00:01:07,520 --> 00:01:10,040 >> Dan kemudian akhirnya, dalam slaid terakhir, saya mempunyai 26 00:01:10,040 --> 00:01:12,730 beberapa sumber bahawa anda melihat di talian untuk maklumat lanjut. 27 00:01:12,730 --> 00:01:15,560 Ini bukan satu lengkap tutorial bagaimana untuk menggunakan Flask. 28 00:01:15,560 --> 00:01:18,140 Dan saya akan berharap untuk meninggalkan sedikit masa untuk soalan. 29 00:01:18,140 --> 00:01:21,050 Sesiapa menonton dalam negara, hanya seperti, melaungkan di tengah-tengah 30 00:01:21,050 --> 00:01:22,340 jika anda mempunyai sebarang soalan. 31 00:01:22,340 --> 00:01:27,150 >> Jadi barangan pemasangan pantas, jika anda mahu ikut bersama-sama, 32 00:01:27,150 --> 00:01:29,240 atau jika anda mahu untuk mendapatkan ini sehingga pada mesin anda sendiri, 33 00:01:29,240 --> 00:01:32,440 Saya akan menggunakan Python 2.7.10. 34 00:01:32,440 --> 00:01:35,860 Flask berfungsi dengan Python 3, tetapi saya suka 35 00:01:35,860 --> 00:01:38,660 menggunakan Python 2, kerana ada beberapa pakej Python yang 36 00:01:38,660 --> 00:01:40,910 tidak berfungsi dengan 3 lagi. 37 00:01:40,910 --> 00:01:44,800 Jika anda telah pip dipasang, yang adalah pengurus pakej Python, 38 00:01:44,800 --> 00:01:48,190 Saya fikir jika Python anda lebih besar daripada atau sama dengan 2.7.9, 39 00:01:48,190 --> 00:01:52,220 anda mempunyai ia dipasang sudah, ia sangat mudah untuk memasang pakej ini. 40 00:01:52,220 --> 00:01:54,990 >> Anda boleh melakukan pip memasang Flask, memintas memasang peewee, 41 00:01:54,990 --> 00:01:58,600 biasanya anda perlu menjalankan sudo hanya supaya kebenaran bersenam. 42 00:01:58,600 --> 00:02:01,080 Dan, jika anda menggunakan super versi lama Python, 43 00:02:01,080 --> 00:02:05,100 Saya cadangkan mengemaskini Python anda, atau menggunakan EasyInstall memasang pip. 44 00:02:05,100 --> 00:02:09,180 45 00:02:09,180 --> 00:02:11,120 Jadi, soalan berikutnya adalah, apa yang Flask? 46 00:02:11,120 --> 00:02:13,280 Dan saya rasa, pertama soalan yang munasabah saya tertanya-tanya 47 00:02:13,280 --> 00:02:15,585 untuk masa yang lama, apa yang adalah aplikasi web? 48 00:02:15,585 --> 00:02:17,960 Kerana itulah satu perkataan yang saya fikir adalah di sekeliling anda 49 00:02:17,960 --> 00:02:19,240 bahawa saya tidak benar-benar tahu. 50 00:02:19,240 --> 00:02:22,340 Dan saya fikir bahawa yang terbaik contoh apa aplikasi web adalah, 51 00:02:22,340 --> 00:02:26,960 benar-benar adalah CS50 Kewangan, di mana ia tidak benar-benar hanya sebuah laman web, 52 00:02:26,960 --> 00:02:29,320 tetapi ia adalah sesuatu yang anda semacam boleh berinteraksi dengan. 53 00:02:29,320 --> 00:02:31,736 Terdapat akaun pengguna dan pelbagai perkara yang berbeza. 54 00:02:31,736 --> 00:02:35,010 Jadi, di mana sebenarnya anda menarik garis antara apa yang laman web, 55 00:02:35,010 --> 00:02:38,780 dan apa yang adalah aplikasi web, umpama sewenang-wenangnya, tetapi saya rasa idea, 56 00:02:38,780 --> 00:02:42,110 ia adalah sesuatu yang lebih daripada sebuah laman web dan ia adalah aplikasi yang berguna. 57 00:02:42,110 --> 00:02:46,081 >> Jadi, Flask adalah satu rangka kerja untuk membuat aplikasi web menggunakan Python. 58 00:02:46,081 --> 00:02:48,330 Dan diharapkan, menjelang akhir ini, saya akan meyakinkan anda 59 00:02:48,330 --> 00:02:52,210 bahawa anda sebenarnya boleh menulis sesuatu seperti CS50 Kewangan menggunakan Python, yang saya 60 00:02:52,210 --> 00:02:53,950 seperti banyak yang lebih baik daripada PHP, secara peribadi. 61 00:02:53,950 --> 00:02:57,320 >> Jadi, Flask, mereka memanggil microframework, yang, 62 00:02:57,320 --> 00:02:59,800 mereka bermakna ia sangat mudah, tetapi extensible. 63 00:02:59,800 --> 00:03:02,980 Jadi, ia mempunyai apa yang anda perlukan, tetapi jika anda ingin lebih banyak ciri-ciri, 64 00:03:02,980 --> 00:03:04,522 ia adalah mudah untuk membawa mereka masuk. 65 00:03:04,522 --> 00:03:06,480 Tetapi hanya kerana ia adalah satu microframework, tidak 66 00:03:06,480 --> 00:03:08,960 bermakna bahawa ia hanya untuk projek-projek kecil. 67 00:03:08,960 --> 00:03:12,590 Saya mempunyai kaitannya di sini yang mengatakan bahawa Obama digunakan Flask pada tahun 2012 68 00:03:12,590 --> 00:03:14,410 untuk kempen laman web, yang diharapkan, 69 00:03:14,410 --> 00:03:16,937 adalah sesuatu pengendorsan. 70 00:03:16,937 --> 00:03:18,770 Tetapi perkara yang saya benar-benar suka tentang Flask 71 00:03:18,770 --> 00:03:22,401 ialah, ia tidak benar-benar membuat apa-apa jenis keputusan untuk anda. 72 00:03:22,401 --> 00:03:24,150 Hanya kerana kita berada bercakap mengenai aplikasi web, 73 00:03:24,150 --> 00:03:26,940 Saya perlu membandingkannya dengan Ruby on Landasan dan Django, kedua-duanya 74 00:03:26,940 --> 00:03:30,450 adalah rangka kerja yang besar, tetapi kedua-dua mereka membuat andaian 75 00:03:30,450 --> 00:03:33,600 tentang bagaimana anda mahu berinteraksi dengan pangkalan data, 76 00:03:33,600 --> 00:03:36,900 bagaimana anda mahu untuk membentangkan anda pandangan, dan mereka pasti 77 00:03:36,900 --> 00:03:38,850 aspek-aspek yang baik untuk itu. 78 00:03:38,850 --> 00:03:41,490 >> Sebagai contoh, Ruby on Rails mempunyai sistem rekod aktif ini, 79 00:03:41,490 --> 00:03:43,100 yang merupakan benar-benar baik cara untuk berinteraksi dengan data, 80 00:03:43,100 --> 00:03:45,960 tetapi jika anda mahu menggunakan Ruby on Rails, anda jenis terikat ke dalam itu. 81 00:03:45,960 --> 00:03:47,835 Tetapi dengan Flask, kerana saya akan menunjukkan kepada anda dengan peewee, 82 00:03:47,835 --> 00:03:49,830 anda boleh menggunakan apa sahaja jenis pangkalan data yang anda mahu, 83 00:03:49,830 --> 00:03:53,980 dan anda hanya boleh menarik bahawa dalam sebagai lanjutan ke dalam kelalang. 84 00:03:53,980 --> 00:03:56,350 >> Jadi sebab itu saya benar-benar seperti Flask, ia adalah bahawa ia 85 00:03:56,350 --> 00:04:01,170 tidak membuat andaian untuk anda berdasarkan perkara yang anda tidak perlu benar-benar. 86 00:04:01,170 --> 00:04:04,440 >> Jadi, mengapa anda perlu menggunakan Flask? 87 00:04:04,440 --> 00:04:08,230 Kelebihan adalah, ia hanya mempunyai benar-benar ciri-ciri teras 88 00:04:08,230 --> 00:04:09,420 dibina ke dalamnya yang anda perlukan. 89 00:04:09,420 --> 00:04:11,980 Jadi, anda tidak perlu bimbang tentang memahami sejumlah besar perkara 90 00:04:11,980 --> 00:04:13,175 bahawa anda tidak benar-benar perlu. 91 00:04:13,175 --> 00:04:15,060 Anda tidak perlu perlu bimbang tentang mematikan ciri- 92 00:04:15,060 --> 00:04:16,620 bahawa anda tidak benar-benar perlu. 93 00:04:16,620 --> 00:04:21,082 >> Dan, seperti yang saya sebutkan, ia sangat mudah untuk menambah di sambungan perkara 94 00:04:21,082 --> 00:04:21,790 bahawa anda perlukan. 95 00:04:21,790 --> 00:04:24,700 Sesetengah daripada mereka, Flask mempunyai sokongan mereka sendiri untuk itu. 96 00:04:24,700 --> 00:04:28,230 Jadi ada sesuatu yang dinamakan Flask admin, yang mencerminkan bahawa admin 97 00:04:28,230 --> 00:04:32,060 panel yang Django menyediakan, yang memberikan anda cara yang visual yang bagus 98 00:04:32,060 --> 00:04:33,405 untuk mentadbir laman web anda. 99 00:04:33,405 --> 00:04:35,280 Tetapi sekali lagi, jika anda membuat sesuatu yang mudah, 100 00:04:35,280 --> 00:04:39,550 anda mungkin tidak memerlukan admin besar panel, jadi saya rasa itu hilang bagus. 101 00:04:39,550 --> 00:04:45,940 Dan keburukan, yang anda mempunyai kuasa yang kurang daripada kotak. 102 00:04:45,940 --> 00:04:49,660 Jadi, apabila anda pertama kali membuka Flask, dan dalam program Python anda, 103 00:04:49,660 --> 00:04:53,150 anda hanya perlu menaip dari Flask import *, atau apa sahaja, 104 00:04:53,150 --> 00:04:55,957 anda tidak betul-betul mendapat semua ciri-ciri yang anda mungkin mahu. 105 00:04:55,957 --> 00:04:58,540 Dan jadi anda perlu untuk lebih jelas senarai ciri-ciri yang anda mahu. 106 00:04:58,540 --> 00:05:01,990 Jadi, itu satu kelemahan, tetapi saya berfikir bahawa untuk membina web kecil 107 00:05:01,990 --> 00:05:04,782 aplikasi seperti saya akan menunjukkan anda, yang tidak benar-benar masalah. 108 00:05:04,782 --> 00:05:07,281 Dan apa yang perkara terakhir adalah sepatutnya berkata, yang merupakan kesilapan menaip, 109 00:05:07,281 --> 00:05:10,240 adalah bahawa terdapat kurang seragam konvensyen bagaimana untuk menggunakan Flask, 110 00:05:10,240 --> 00:05:12,400 hanya kerana ada yang tidak kerana banyak orang yang menggunakan secara profesional 111 00:05:12,400 --> 00:05:13,191 berbanding Django. 112 00:05:13,191 --> 00:05:16,380 Jadi, jika anda melihat sesuatu seperti, "bagaimana saya lakukan x" dalam Django, 113 00:05:16,380 --> 00:05:18,190 anda mungkin akan merasa. 114 00:05:18,190 --> 00:05:20,260 >> Terdapat reka bentuk yang baik corak anda boleh menggunakan, 115 00:05:20,260 --> 00:05:22,660 tetapi dengan Flask, ia semacam pergi cara anda sendiri, 116 00:05:22,660 --> 00:05:24,850 hanya kerana ia adalah satu perpustakaan agak kecil. 117 00:05:24,850 --> 00:05:27,100 Jadi mereka adalah keburukan, tetapi saya fikir 118 00:05:27,100 --> 00:05:29,370 bahawa ia masih sebuah perpustakaan yang baik untuk digunakan. 119 00:05:29,370 --> 00:05:31,909 >> Jadi mari kita melompat terus ke dalam kelalang. 120 00:05:31,909 --> 00:05:34,200 Ini pasti tidak akan menjadi tutorial lengkap, 121 00:05:34,200 --> 00:05:37,480 tetapi ia memberi anda idea bagaimana untuk menstrukturkan perkara, 122 00:05:37,480 --> 00:05:40,790 dan supaya anda berasa selesa pergi kira dan melihat dokumentasi 123 00:05:40,790 --> 00:05:42,570 dan untuk mengetahui lebih lanjut. 124 00:05:42,570 --> 00:05:48,500 >> Jadi, biarlah saya membuka benar-benar contoh mudah pada mulanya, 125 00:05:48,500 --> 00:05:50,737 dan menunjukkan kepada anda apa yang kelihatan seperti, dan kemudian kami akan 126 00:05:50,737 --> 00:05:52,070 memecahkan ia ke bawah sedikit lagi. 127 00:05:52,070 --> 00:05:56,160 >> Jadi ini di sini, biarlah saya mendapatkannya berjalan. 128 00:05:56,160 --> 00:06:06,800 129 00:06:06,800 --> 00:06:09,750 Jadi, saya kini mempunyai aplikasi yang berjalan saya. 130 00:06:09,750 --> 00:06:15,910 Saya akan membuka Safari, dan ia berjalan pada host tempatan saya. 131 00:06:15,910 --> 00:06:19,360 Jadi saya hanya akan membuat ini lebih besar. 132 00:06:19,360 --> 00:06:23,960 Tetapi localhost: 5000 133 00:06:23,960 --> 00:06:27,650 >> Dan sebagainya, sekarang, semua ini tidak adalah, apabila anda melawat laman web, 134 00:06:27,650 --> 00:06:31,490 ia mencetak "Hello Flask," yang tidak super berguna, 135 00:06:31,490 --> 00:06:34,630 tetapi saya fikir ia adalah sejuk yang dalam fail kecil ini di sini, 136 00:06:34,630 --> 00:06:37,390 kita mempunyai berjalan pelayan web yang mencetak sesuatu. 137 00:06:37,390 --> 00:06:40,500 Jadi, mari kita sebenarnya melihat pada kod untuk kali kedua, 138 00:06:40,500 --> 00:06:43,080 dan memecahkan ia ke bawah sedikit. 139 00:06:43,080 --> 00:06:45,260 Adakah saiz yang baik untuk semua orang di sini? 140 00:06:45,260 --> 00:06:51,560 >> Jadi, mudah-mudahan, anda berada agak selesa menggunakan Python. 141 00:06:51,560 --> 00:06:55,820 Saya menganggap bahawa kita boleh melihat Python dan membaca melaluinya. 142 00:06:55,820 --> 00:06:59,290 Jika anda mempunyai sebarang soalan mengenai apa-apa, saya juga boleh pergi ke atas itu. 143 00:06:59,290 --> 00:07:03,974 >> Jadi baris pertama, dari Flask, kita mengimport, Flask dengan modal "F" 144 00:07:03,974 --> 00:07:06,140 yang merupakan sejenis semua ciri-ciri utama yang anda perlukan. 145 00:07:06,140 --> 00:07:08,890 Setiap kali anda menulis fail dan menggunakan Flask, 146 00:07:08,890 --> 00:07:12,120 anda akan mahu mengimport itu, hanya kerana yang mempunyai semua perkara yang utama. 147 00:07:12,120 --> 00:07:15,400 Perkara seterusnya yang kita lakukan, adalah kita memanggil fungsi Flask ini, hanya 148 00:07:15,400 --> 00:07:19,270 untuk mencipta objek aplikasi, dan anda sentiasa akan mahu berbuat demikian. 149 00:07:19,270 --> 00:07:25,960 >> Dan kemudian, melompat turun ke bawah dengan cepat, bahagian ini di sini adalah, 150 00:07:25,960 --> 00:07:28,760 'if_name _ == "_ main_"' iaitu semacam konvensyen Python. 151 00:07:28,760 --> 00:07:32,750 Jadi ini hanya akan melaksanakan jika anda menjalankan fail ini secara langsung menggunakan Python. 152 00:07:32,750 --> 00:07:36,040 Kemudian, kita panggil app.run, yang akan sebenarnya memulakan aplikasi berterusan. 153 00:07:36,040 --> 00:07:39,570 >> Jadi, itulah struktur utama yang anda akan mempunyai dalam apa-apa permohonan Flask, 154 00:07:39,570 --> 00:07:48,550 adalah anda akan mempunyai ini app = Flask (_name_), dan kemudian app.run. 155 00:07:48,550 --> 00:07:54,940 >> Jadi, dua perkara yang saya ada di sini, adalah apa yang kita panggil laluan. 156 00:07:54,940 --> 00:07:57,150 Jadi, mari kita bercakap tentang laluan yang lebih sedikit. 157 00:07:57,150 --> 00:07:58,430 Saya akan kembali ke slaid. 158 00:07:58,430 --> 00:08:02,540 >> Jadi yang paling asas konsep dalam Flask adalah routing. 159 00:08:02,540 --> 00:08:06,750 Dan ia adalah idea bahawa anda memberi fungsi dalam Python 160 00:08:06,750 --> 00:08:11,280 ke alamat tertentu di laman web anda. 161 00:08:11,280 --> 00:08:13,930 Jadi, apabila anda mahu untuk mewujudkan laluan baru, 162 00:08:13,930 --> 00:08:16,500 anda menggunakan ini @ app.route fungsi penghias. 163 00:08:16,500 --> 00:08:19,770 Jadi, jika anda tidak biasa dengan Penghias majlis di Python, 164 00:08:19,770 --> 00:08:24,160 ia adalah konsep ini yang membolehkan anda mengambil fungsi 165 00:08:24,160 --> 00:08:26,800 dan mengelilinginya dengan sesuatu yang lain. 166 00:08:26,800 --> 00:08:30,140 >> Jadi benar-benar, apa penghias ini tidak, adalah bahawa ia mengambil fungsi di bawahnya, 167 00:08:30,140 --> 00:08:33,409 dan ia menambah maklumat lanjut kepadanya, tetapi apa yang sebenarnya Flask 168 00:08:33,409 --> 00:08:37,480 tidak membuat yang berlaku bukan super penting, tetapi apa yang penting, 169 00:08:37,480 --> 00:08:43,640 adalah bahawa sebelum laluan itu, anda meletakkan ini @ app.route, dan kemudian 170 00:08:43,640 --> 00:08:46,480 alamat laluan itu, supaya slash adalah apa yang kita 171 00:08:46,480 --> 00:08:48,360 lihat apabila kita hanya membuka laman web. 172 00:08:48,360 --> 00:08:49,580 Jadi itulah laman utama. 173 00:08:49,580 --> 00:08:51,037 Ia hanya laluan slash. 174 00:08:51,037 --> 00:08:52,370 Dan kemudian anda perlu fungsi ini. 175 00:08:52,370 --> 00:08:54,453 Nama fungsi boleh menjadi apa sahaja yang anda mahu. 176 00:08:54,453 --> 00:08:56,930 Ia tidak perlu semestinya mempunyai kaitan dengan laluan. 177 00:08:56,930 --> 00:08:59,440 Dan kemudian, apa sahaja kembali fungsi-kanak, 178 00:08:59,440 --> 00:09:01,730 fungsi tersebut hendaklah mengembalikan rentetan. 179 00:09:01,730 --> 00:09:03,740 Dan tali yang boleh mengandungi HTML atau apa-apa, 180 00:09:03,740 --> 00:09:06,920 dan itulah sebenarnya apa yang akan mendapatkan kembali ke pelayar web anda sebagai HTML, 181 00:09:06,920 --> 00:09:08,200 dan ia akan menyebabkan itu. 182 00:09:08,200 --> 00:09:12,030 >> Jadi ini adalah kod yang sama itu adalah dari contoh di 183 00:09:12,030 --> 00:09:16,430 bahawa saya hanya berlari, jadi apabila kita melawat slash, ia memerlukan fungsi Hello World, yang 184 00:09:16,430 --> 00:09:20,470 hanya mengembalikan rentetan, Hello Flask, dan yang mendapat dicetak pada skrin. 185 00:09:20,470 --> 00:09:27,290 >> Jadi ada contoh lain, yang, apabila anda melawat / hello, 186 00:09:27,290 --> 00:09:30,370 ia mencetak Hello Word, yang sebenarnya tidak mengatakan, Hello World, 187 00:09:30,370 --> 00:09:32,010 tetapi mari kita berpura-pura bahawa disengajakan. 188 00:09:32,010 --> 00:09:35,140 Jadi mari kita tarik bahawa sehingga sangat cepat. 189 00:09:35,140 --> 00:09:41,290 >> Jadi, jika anda pergi ke localhost / hello, sekarang akan mencetak sesuatu yang lain. 190 00:09:41,290 --> 00:09:45,680 Jadi itu hanya satu contoh yang cepat bagaimana anda boleh membuat dua laluan yang berbeza. 191 00:09:45,680 --> 00:09:50,630 >> Jadi, setakat ini tidak super berguna, tidak ada banyak keseluruhan anda boleh lakukan, 192 00:09:50,630 --> 00:09:55,360 anda hanya boleh melakukan semua itu dengan mempunyai laman HTML yang berbeza, 193 00:09:55,360 --> 00:09:58,000 dan apabila anda melawat tertentu Laman ia hanya memuatkan halaman. 194 00:09:58,000 --> 00:10:00,864 Jadi mari kita lihat beberapa lagi perkara yang berguna yang boleh anda lakukan. 195 00:10:00,864 --> 00:10:03,780 Jadi, satu perkara yang anda mungkin mempunyai perasan dalam contoh yang saya menarik 196 00:10:03,780 --> 00:10:07,160 sehingga, adalah bahawa saya telah app.run (debug = Benar). 197 00:10:07,160 --> 00:10:09,580 Dan sebagainya, apa ini hujah debug tidak, adalah 198 00:10:09,580 --> 00:10:14,600 bahawa apabila anda menjalankan pelayan web anda, apabila anda berada dalam permohonan anda, 199 00:10:14,600 --> 00:10:18,100 jika anda menukar fail, ia akan secara automatik menambah nilai pelayan. 200 00:10:18,100 --> 00:10:21,160 >> Dan supaya anda tidak benar-benar perlu restart Python, yang super berguna. 201 00:10:21,160 --> 00:10:24,020 Saya boleh menunjukkan bahawa. 202 00:10:24,020 --> 00:10:26,960 Biar saya tarik sehingga kod saya dengan kesilapan menaip di dalamnya, 203 00:10:26,960 --> 00:10:30,420 dan berpura-pura kesilapan menaip yang diletakkan di sana sengaja untuk tujuan pengajaran. 204 00:10:30,420 --> 00:10:31,625 Jadi mari kita menambah kembali ini. 205 00:10:31,625 --> 00:10:33,140 Oleh sebab itu ia berkata Hello World. 206 00:10:33,140 --> 00:10:34,410 Saya akan menyelamatkannya. 207 00:10:34,410 --> 00:10:36,540 Dan jika kita tarik kembali terminal, anda akan 208 00:10:36,540 --> 00:10:39,520 mengatakan bahawa ia mula semula, kerana ia mengesan perubahan, 209 00:10:39,520 --> 00:10:43,620 dan sebagainya sekarang apabila kita muat semula laman ini, ia akan mencetak perkara yang betul. 210 00:10:43,620 --> 00:10:45,630 >> Jadi debug adalah super berguna untuk itu. 211 00:10:45,630 --> 00:10:48,740 Juga, jika anda mempunyai apa-apa jenis kemalangan, jadi 212 00:10:48,740 --> 00:10:54,370 izinkan saya membuat kemalangan permohonan ini dengan mengakibatkan ia tidak kembali rentetan. 213 00:10:54,370 --> 00:10:57,540 Jadi, mari kita hanya perlu ia kembali Tiada sebab tertentu. 214 00:10:57,540 --> 00:11:00,810 Dan kemudian apabila saya melawat ini halaman, ia hanya akan kemalangan, 215 00:11:00,810 --> 00:11:04,465 tetapi pelayan tidak hanya kemalangan, ia sebenarnya memberikan anda kembali super berguna 216 00:11:04,465 --> 00:11:06,490 kesan dari segala sesuatu yang tidak kena. 217 00:11:06,490 --> 00:11:10,050 Dan apa yang benar-benar baik, adalah bahawa di mana-mana langkah dalam jejak belakang ini, 218 00:11:10,050 --> 00:11:14,260 anda boleh membuka interaktif shell di sini, dan jenis mencetak apa 219 00:11:14,260 --> 00:11:17,780 pembolehubah anda mahu mengambil lihat. 220 00:11:17,780 --> 00:11:21,054 >> Dan sebagainya debugging adalah benar-benar berguna untuk memikirkan 221 00:11:21,054 --> 00:11:23,470 apa yang sedang berlaku dengan pelayan, dan bukannya hanya melihat 222 00:11:23,470 --> 00:11:28,201 sesuatu dalam PHP seperti dalaman 500 Ralat pelayan, yang hilang sia-sia. 223 00:11:28,201 --> 00:11:30,700 Satu perkara yang perlu diberi perhatian adalah bahawa jika anda meletakkan talian aplikasi anda 224 00:11:30,700 --> 00:11:34,260 jadi ia boleh dilihat oleh orang ramai, anda tidak mahu meninggalkan mod debug pada, 225 00:11:34,260 --> 00:11:37,320 kerana orang boleh sebenarnya menggunakan konsol itu yang saya 226 00:11:37,320 --> 00:11:39,150 menunjukkan anda untuk melaksanakan kod sewenang-wenangnya. 227 00:11:39,150 --> 00:11:42,120 >> Jadi mereka boleh mencetak seperti mana-mana kod rahsia yang ada dalam sana, 228 00:11:42,120 --> 00:11:44,755 mereka boleh melihat tepat bagaimana laman web anda berfungsi. 229 00:11:44,755 --> 00:11:46,630 Jadi ia adalah benar-benar berguna untuk ujian, tetapi sentiasa 230 00:11:46,630 --> 00:11:50,090 pastikan anda mengambil di hadapan anda menyiarkan apa-apa talian. 231 00:11:50,090 --> 00:11:56,640 >> Oleh itu, apabila anda menggunakan sesuatu seperti PHP, ada idea ini 232 00:11:56,640 --> 00:11:58,920 bahawa anda boleh lulus maklumat antara laman web 233 00:11:58,920 --> 00:12:03,620 dengan meletakkan maklumat yang benar-benar dalam URL, yang merupakan permintaan GET, 234 00:12:03,620 --> 00:12:07,490 tetapi dalam Flask, anda boleh sebenarnya melakukan sesuatu jenis seperti itu, 235 00:12:07,490 --> 00:12:10,590 dengan mempunyai laluan yang mempunyai pembolehubah sebagai sebahagian daripadanya. 236 00:12:10,590 --> 00:12:14,090 >> Jadi, jika anda melihat ini contoh pada skrin di sini, 237 00:12:14,090 --> 00:12:19,930 kita mempunyai laluan itu ('/ hello /'), dan sebagainya, jika anda melawat 238 00:12:19,930 --> 00:12:23,790 / hello / sesuatu, bahawa sesuatu akan benar-benar mendapatkan diisi 239 00:12:23,790 --> 00:12:25,490 ke dalam pembolehubah nama. 240 00:12:25,490 --> 00:12:27,850 Dan perhatikan bahawa fungsi yang datang dengan laluan yang 241 00:12:27,850 --> 00:12:31,302 mempunyai ke luar parameter nama, supaya ia akan benar-benar 242 00:12:31,302 --> 00:12:32,510 Dapatkan berlalu ke majlis itu. 243 00:12:32,510 --> 00:12:34,190 >> Kemudian, sebaik sahaja anda berada dalam fungsi itu, 244 00:12:34,190 --> 00:12:36,420 anda boleh merawat bahawa seperti Python berubah normal, 245 00:12:36,420 --> 00:12:39,650 dan sebagainya maka, ia akan mencetak Hello, dan ia 246 00:12:39,650 --> 00:12:42,000 akan mengisi nama yang menggunakan beberapa format tali. 247 00:12:42,000 --> 00:12:48,060 >> Jadi untuk menambah bahagian berubah-ubah untuk penghalaan yang, anda menggunakan tanda kurung sudut yang menandakan. 248 00:12:48,060 --> 00:12:51,220 Dan pilihan, anda boleh menggunakan apa yang dipanggil penukar. 249 00:12:51,220 --> 00:12:56,840 Dan sebagainya, jika anda meletakkan ini anotasi dengan kolon, 250 00:12:56,840 --> 00:13:00,015 anda boleh menentukan bahawa itu int, atau apungan, atau jalan, 251 00:13:00,015 --> 00:13:01,640 dan ia secara automatik akan menukar itu. 252 00:13:01,640 --> 00:13:05,130 Anda juga boleh membuat penukaran dalam fungsi Python, 253 00:13:05,130 --> 00:13:09,710 hanya dengan menggunakan pelakon, tetapi kadang-kadang jika anda ingin memastikan bahawa itu int, 254 00:13:09,710 --> 00:13:12,080 anda boleh meletakkan bahawa peraturan penukaran di sana. 255 00:13:12,080 --> 00:13:15,930 >> Jadi mari kita tarik ke atas contoh beberapa peraturan berubah-ubah. 256 00:13:15,930 --> 00:13:21,480 Jadi di sini, ini mempunyai asas yang sama struktur dengan dari Flask import 257 00:13:21,480 --> 00:13:25,030 Flask, aplikasi = Flask (_name_), dan kemudian ia berjalan pada akhir. 258 00:13:25,030 --> 00:13:28,050 Kita mempunyai dua yang berbeza laluan berubah-ubah di sini. 259 00:13:28,050 --> 00:13:29,900 Dan yang pertama, adalah satu yang saya menunjukkan 260 00:13:29,900 --> 00:13:34,230 dalam slaid, yang yang ia hanya mengambil masa dalam nama rentetan 261 00:13:34,230 --> 00:13:35,650 dan ia akan mencetak Hello, Nama. 262 00:13:35,650 --> 00:13:41,410 >> Dan kemudian, yang kedua satu menggunakan penukaran. 263 00:13:41,410 --> 00:13:44,690 Jadi ini secara automatik akan menukar untuk int, dan kemudian dua kali ganda int, 264 00:13:44,690 --> 00:13:46,150 dan mencetak yang keluar. 265 00:13:46,150 --> 00:13:48,220 Dan, kita tidak melakukan apa-apa jenis penukaran dalamnya 266 00:13:48,220 --> 00:13:49,594 kerana Flask menjaga itu. 267 00:13:49,594 --> 00:13:53,181 Jadi mari kita berjalan ini. 268 00:13:53,181 --> 00:13:54,930 Apabila anda mempunyai Flask yang aplikasi yang berjalan, 269 00:13:54,930 --> 00:13:58,440 anda boleh Mengawal-C daripada itu berhenti berjalan pelayan. 270 00:13:58,440 --> 00:14:02,420 Dan kemudian saya akan berjalan pembolehubah. 271 00:14:02,420 --> 00:14:11,740 >> Oleh itu, marilah kita pergi ke localhost / hello / ezra dan mudah-mudahan, ini akan bertanya khabar kepada saya. 272 00:14:11,740 --> 00:14:14,530 273 00:14:14,530 --> 00:14:20,310 >> Jadi ia mengambil nama-Ku, dalam pembolehubah laluan, dan ia mengisinya di sini. 274 00:14:20,310 --> 00:14:23,950 Oleh itu, saya juga akan menunjukkan kepada yang cepat contoh penggandaan. 275 00:14:23,950 --> 00:14:28,600 Jadi, jika anda pergi ke / double / 3, ia akan mencetak 6. 276 00:14:28,600 --> 00:14:31,440 Jadi ini menjaga penukaran untuk kita. 277 00:14:31,440 --> 00:14:34,190 >> Oleh itu, anda juga boleh melakukannya dengan terapung, dan sesuatu yang istimewa, 278 00:14:34,190 --> 00:14:37,530 jika anda perlu untuk menentukan sesuatu seperti jalan, yang membolehkan ia menerima garis condong, 279 00:14:37,530 --> 00:14:39,155 tetapi ini tidak seharusnya biasanya menjadi isu. 280 00:14:39,155 --> 00:14:41,480 281 00:14:41,480 --> 00:14:43,820 Setakat ini kita masih mempunyai baru sahaja kembali 282 00:14:43,820 --> 00:14:46,320 tali, yang tidak sangat menarik. 283 00:14:46,320 --> 00:14:48,730 >> Kami benar-benar dapat kembali rentetan HTML literal. 284 00:14:48,730 --> 00:14:54,322 Jadi dalam kod yang kami boleh memasukkan sesuatu seperti b-tag untuk menjadikannya berani, 285 00:14:54,322 --> 00:14:56,030 tetapi kebanyakan masa yang anda sebenarnya tidak mahu 286 00:14:56,030 --> 00:14:58,420 menjadi menulis kod HTML kod Python anda. 287 00:14:58,420 --> 00:15:01,940 Ia akan benar-benar tidak kemas, dan ia bukan masa yang baik. 288 00:15:01,940 --> 00:15:06,430 >> Flask membolehkan kita mengasingkan yang HTML ke dalam apa yang dipanggil Templat, 289 00:15:06,430 --> 00:15:09,467 dan jadi jika anda berfikir dari segi model MVC yang 290 00:15:09,467 --> 00:15:11,550 yang anda sudah biasa dengan, mudah-mudahan, daripada bekerja 291 00:15:11,550 --> 00:15:15,520 dengan CS50 Kewangan sedikit, yang boleh anda fikirkan fail Python 292 00:15:15,520 --> 00:15:19,430 sebagai lebih daripada Pengawal, di mana mereka berinteraksi dengan apa sahaja 293 00:15:19,430 --> 00:15:20,970 model data anda mungkin mempunyai. 294 00:15:20,970 --> 00:15:24,900 >> Dan kemudian mereka memanggil kepada Views dan lulus maklumat kepada Lihat yang 295 00:15:24,900 --> 00:15:28,120 untuk mengisi maklumat yang dalam HTML yang diperlukan. 296 00:15:28,120 --> 00:15:30,490 Dan apa yang kita panggil mereka Views adalah Templates di dalam kelas. 297 00:15:30,490 --> 00:15:35,280 >> Jadi Flask menggunakan Python lain modul bahawa ia akan secara automatik 298 00:15:35,280 --> 00:15:38,620 memasang apabila anda PIP memasang Flask dipanggil Jinja, yang 299 00:15:38,620 --> 00:15:40,885 membolehkan anda menambah ini penjelasan kepada HTML 300 00:15:40,885 --> 00:15:45,140 yang anda lihat pada skrin, yang membolehkan anda masukkan ke dalam perkara-perkara seperti conditional, 301 00:15:45,140 --> 00:15:47,230 dan gelung ke dalam HTML. 302 00:15:47,230 --> 00:15:51,140 >> Supaya ia kelihatan sedikit seperti bagaimana anda mungkin menggunakan PHP dalam fail HTML, 303 00:15:51,140 --> 00:15:57,380 tetapi ini adalah hanya apabila Flask pelayan menyajikan fail HTML, 304 00:15:57,380 --> 00:16:01,610 ia akan berjalan enjin template ini dan menghuraikan melalui ini dan isi yang ada di. 305 00:16:01,610 --> 00:16:06,650 Jadi Flask mempunyai fungsi render_template yang anda boleh lihat di bahagian bawah di sini. 306 00:16:06,650 --> 00:16:14,300 Dan jadi apabila anda melawat laman ini, boleh menyebabkan Template hello.html ini, 307 00:16:14,300 --> 00:16:16,407 dan kemudian mengisi dalam halaman HTML ini. 308 00:16:16,407 --> 00:16:18,990 Jadi mari kita hanya menjalankan sebenar ini cepat, dan melihat apa yang kelihatan seperti, 309 00:16:18,990 --> 00:16:21,198 dan kemudian saya akan pergi melalui sedikit dengan lebih terperinci. 310 00:16:21,198 --> 00:16:25,380 311 00:16:25,380 --> 00:16:30,260 Jadi, Templat anda akan pergi dalam folder Templat. 312 00:16:30,260 --> 00:16:33,980 Ia secara automatik akan kelihatan dalam Templat folder Templat itu. 313 00:16:33,980 --> 00:16:35,615 Jadi mari kita membuka ini. 314 00:16:35,615 --> 00:16:47,350 315 00:16:47,350 --> 00:16:50,005 Jadi, saya akan menjalankan contoh template ini. 316 00:16:50,005 --> 00:16:52,820 317 00:16:52,820 --> 00:17:03,660 >> Jadi, jika saya pergi ke / hello / ezra, ia mempunyai ini dahsyat, 318 00:17:03,660 --> 00:17:05,930 tag marquee menjijikkan yang saya masukkan ke dalam. 319 00:17:05,930 --> 00:17:08,050 Sangat bagus, sangat dinamik. 320 00:17:08,050 --> 00:17:09,349 Saya peminat besar. 321 00:17:09,349 --> 00:17:13,900 Tetapi apa yang berlaku jika Saya hanya pergi ke, / hello? 322 00:17:13,900 --> 00:17:15,220 Oleh itu, ia hanya berkata Hello World. 323 00:17:15,220 --> 00:17:17,678 Saya tidak lulus nama, dan ia mengisinya secara automatik. 324 00:17:17,678 --> 00:17:22,050 Jadi mari kita lihat bagaimana ia melakukan itu, dan bagaimana kita boleh menghilangkan khemah yang mungkin. 325 00:17:22,050 --> 00:17:26,240 >> Jadi di sini, ini adalah jenis satu contoh yang menarik, 326 00:17:26,240 --> 00:17:29,101 jika anda sudah biasa dengan bagaimana suis kenyataan yang bekerja dalam sesuatu bahasa. 327 00:17:29,101 --> 00:17:31,350 Bahawa ini adalah jenis seperti, yang jenis jatuh melalui, 328 00:17:31,350 --> 00:17:34,266 di mana anda sebenarnya dilampirkan dua laluan yang berbeza untuk fungsi yang sama. 329 00:17:34,266 --> 00:17:41,190 Oleh itu, kita melampirkan / hello laluan dan yang / hello / laluan nama kepada Hello, 330 00:17:41,190 --> 00:17:45,130 dan kami nyatakan using-- Python membolehkan anda menentukan fungsi lalai arguments-- 331 00:17:45,130 --> 00:17:48,300 jadi jika ini tidak ada nama, jadi jika kita pergi ke hanya / hello, 332 00:17:48,300 --> 00:17:50,680 ia secara automatik akan menapis kepada nama adalah sama dengan Tiada. 333 00:17:50,680 --> 00:17:55,010 >> Sebab itu, kita boleh menjadikan Templat dengan name = nama, 334 00:17:55,010 --> 00:17:59,510 jadi ia akan lulus dalam parameter nama sama dengan ini parameter fungsi nama, 335 00:17:59,510 --> 00:18:00,730 ke dalam Templat. 336 00:18:00,730 --> 00:18:04,040 Yang masih tidak menjelaskan bagaimana memutuskan sama ada untuk mencetak Hello World, 337 00:18:04,040 --> 00:18:05,100 atau mencetak nama saya. 338 00:18:05,100 --> 00:18:08,050 Jadi mari kita sebenarnya melihat ke dalam template sendiri, 339 00:18:08,050 --> 00:18:11,610 dan melihat di mana yang datang dari. 340 00:18:11,610 --> 00:18:18,680 >> Jadi, dalam template ini, kami benar-benar mempunyai beberapa logik bersyarat, 341 00:18:18,680 --> 00:18:20,580 yang sesetengah orang akan berhujah, anda sebenarnya 342 00:18:20,580 --> 00:18:23,730 tidak perlu mempunyai banyak bersyarat logik dalam Template sendiri anda. 343 00:18:23,730 --> 00:18:26,310 Ia perlu lebih dalam Pengawal, tetapi sebagai contoh ini 344 00:18:26,310 --> 00:18:27,476 ia adalah sesuatu yang cukup kecil. 345 00:18:27,476 --> 00:18:31,060 Jadi di sini, kita memeriksa, jika nama, jadi jika nama tidak sama dengan None, 346 00:18:31,060 --> 00:18:33,130 jika nama yang sebenarnya diluluskan pada, maka kita akan 347 00:18:33,130 --> 00:18:36,210 mengatakan Hello, Nama dengan header dan khemah, 348 00:18:36,210 --> 00:18:41,490 semua HTML biasa ini, jika tidak, kami akan mencetak Hello, World hanya seperti biasa. 349 00:18:41,490 --> 00:18:45,820 Jadi beberapa perkara yang perlu perhatikan di sini tentang bagaimana anda memformat template ini, 350 00:18:45,820 --> 00:18:49,110 ialah, semua ini kenyataan bersyarat, 351 00:18:49,110 --> 00:18:54,475 jenis seperti bagaimana kita PHP apabila anda mahu masukkan beberapa PHP, 352 00:18:54,475 --> 00:18:58,380 anda menggunakan kurang daripada soalan tanda, ia semacam analogi di sini 353 00:18:58,380 --> 00:19:00,140 dengan {%. 354 00:19:00,140 --> 00:19:02,130 >> Jadi di sini, kami mempunyai kod bersyarat kami. 355 00:19:02,130 --> 00:19:05,920 Kemudian, apabila anda benar-benar mahu benar-benar menilai sesuatu, dan cetak 356 00:19:05,920 --> 00:19:08,710 ia keluar ke skrin, anda menggunakan pendakap berganda. 357 00:19:08,710 --> 00:19:12,310 Jadi di sini adalah penyokong gigi dua kali, dan kemudian kita nyatakan nama, 358 00:19:12,310 --> 00:19:15,500 demikian dalam itu, ia akan menilai kepada nama yang berubah-ubah, yang 359 00:19:15,500 --> 00:19:18,860 telah diluluskan pada dari menyebabkan fungsi template, 360 00:19:18,860 --> 00:19:21,484 bukan hanya percetakan keluar, jika kita tidak perlu lagi ambil ini, 361 00:19:21,484 --> 00:19:23,150 ia hanya akan mencetak perkataan "nama." 362 00:19:23,150 --> 00:19:26,340 Jadi, itulah sesuatu untuk berhati-hati. 363 00:19:26,340 --> 00:19:29,792 >> Jadi satu lagi perkara yang perlu notis adalah bahawa, apabila kita 364 00:19:29,792 --> 00:19:31,500 mahu menggunakan fungsi render_template, 365 00:19:31,500 --> 00:19:34,490 kita benar-benar perlu mengimport ia jelas dari Flask. 366 00:19:34,490 --> 00:19:36,915 Dan ini adalah contoh yang suai daripada Flask, 367 00:19:36,915 --> 00:19:39,290 bahawa anda tidak perlu mengimport perkara yang anda tidak perlu. 368 00:19:39,290 --> 00:19:41,290 Anda hanya boleh membawa masuk fungsi yang anda sebenarnya 369 00:19:41,290 --> 00:19:43,450 yang perlu, yang kadang-kadang baik, supaya anda tidak 370 00:19:43,450 --> 00:19:46,560 perlu mempunyai semua fungsi ini duduk di sekitar bahawa anda tidak menggunakan, 371 00:19:46,560 --> 00:19:49,730 tetapi juga, jika anda lupa bahawa anda perlu mengimport render_template, 372 00:19:49,730 --> 00:19:52,660 anda mungkin akan mendapat amaran yang akan memberitahu anda tentang itu. 373 00:19:52,660 --> 00:19:56,700 Jadi, iaitu template. 374 00:19:56,700 --> 00:20:01,680 >> Jadi, kami telah ditunjukkan bagaimana untuk membuat laman web yang mudah, 375 00:20:01,680 --> 00:20:04,947 dan menambah logik yang lebih sedikit untuk ia, dari segi laluan yang berubah-ubah. 376 00:20:04,947 --> 00:20:08,280 Ia membolehkan anda melakukan perkara-perkara yang berbeza berdasarkan apa URL anda pergi ke, dan juga ketika itu, memberi 377 00:20:08,280 --> 00:20:11,950 rasa HTML sedikit lebih dalam segi bagaimana anda ingin menjadikan sesuatu. 378 00:20:11,950 --> 00:20:14,210 Anda tidak perlu meletakkan semua HTML anda dalam Python anda, 379 00:20:14,210 --> 00:20:16,640 tetapi cukup banyak setiap aplikasi web, 380 00:20:16,640 --> 00:20:21,480 anda akan mahu beberapa jenis model data yang berkaitan dengannya. 381 00:20:21,480 --> 00:20:25,560 >> Dan sebagainya tradisional, adakah ini menjadi sesuatu yang seperti pangkalan data SQL. 382 00:20:25,560 --> 00:20:30,280 Dan anda hanya boleh berinteraksi terus dengan SQL. 383 00:20:30,280 --> 00:20:32,190 Python mempunyai, saya fikir ia dipanggil. 384 00:20:32,190 --> 00:20:33,040 SQLite 3. 385 00:20:33,040 --> 00:20:38,454 Anda hanya boleh mengimport SQLite 3 dan melaksanakan pertanyaan SQL secara langsung, 386 00:20:38,454 --> 00:20:40,870 tetapi saya tidak tahu tentang anda, tetapi saya benar-benar tidak suka, adil, 387 00:20:40,870 --> 00:20:42,750 bertulis daripada pertanyaan SQL. 388 00:20:42,750 --> 00:20:45,350 Ia cenderung untuk benar-benar panjang dan rumit. 389 00:20:45,350 --> 00:20:49,180 >> Dan sebagainya, sesuatu yang Saya suka menggunakan adalah apa yang 390 00:20:49,180 --> 00:20:53,610 dikenali sebagai PRO, yang merupakan objek hubungan pemetaan. 391 00:20:53,610 --> 00:20:56,890 Dan titik yang pemetaan objek hubungan, 392 00:20:56,890 --> 00:21:00,100 adalah bahawa ada dua yang berbeza cara-cara yang anda boleh berfikir tentang pangkalan data. 393 00:21:00,100 --> 00:21:03,240 >> Jadi contoh yang Profesor Malan biasanya 394 00:21:03,240 --> 00:21:07,660 menggunakan dalam kelas, adalah jadual Excel, di mana anda mempunyai ini baris dan lajur ini, 395 00:21:07,660 --> 00:21:10,210 dan itu benar-benar berguna untuk bagaimana ia diwakili dalam SQL 396 00:21:10,210 --> 00:21:13,170 dan bagaimana anda berinteraksi dengannya, tetapi satu lagi cara yang ia sebenarnya 397 00:21:13,170 --> 00:21:16,390 berguna untuk berfikir tentang hal itu kadang-kadang, adalah dari segi kelas dan objek. 398 00:21:16,390 --> 00:21:20,420 >> Jadi, daripada pemikiran setiap meja sebagai mempunyai 399 00:21:20,420 --> 00:21:23,040 berturut-turut ini yang mempunyai tertentu maklumat, anda boleh sebenarnya 400 00:21:23,040 --> 00:21:26,100 memikirkan ia sebagai setiap meja adalah kelas, 401 00:21:26,100 --> 00:21:29,810 dan kemudian setiap contoh daripada kelas mempunyai ciri-ciri tertentu. 402 00:21:29,810 --> 00:21:35,110 Jadi, dalam contoh ini, contoh-contoh kelas adalah baris dalam jadual, 403 00:21:35,110 --> 00:21:37,490 dan kemudian setiap hartanah akan menjadi lajur dalam jadual. 404 00:21:37,490 --> 00:21:40,840 >> Jadi, ORM yang saya suka menggunakan dipanggil peewee. 405 00:21:40,840 --> 00:21:43,520 Ia benar-benar kecil, jenis seperti Flask. 406 00:21:43,520 --> 00:21:46,760 Saya rasa bahawa mereka pergi dengan baik bersama-sama, tetapi terdapat banyak ORMs lain 407 00:21:46,760 --> 00:21:47,730 yang boleh anda gunakan. 408 00:21:47,730 --> 00:21:52,180 Seorang yang lebih popular adalah dikenali sebagai SQLAlchemy, 409 00:21:52,180 --> 00:21:56,050 dan saya tidak boleh ingat mengapa saya asalnya memilih peewee lebih SQLAlchemy, 410 00:21:56,050 --> 00:21:58,311 atau saya akan memberitahu anda mengapa saya fikir ia adalah yang terbaik, 411 00:21:58,311 --> 00:22:01,060 tetapi kami hanya akan menggunakan ini satu kerana saya tahu bagaimana untuk menggunakannya. 412 00:22:01,060 --> 00:22:04,760 >> Jadi, satu soalan, mengapa anda perlu bersusah payah menggunakan ORM yang, 413 00:22:04,760 --> 00:22:07,552 bukan hanya secara langsung menulis pertanyaan SQL? 414 00:22:07,552 --> 00:22:09,760 Dan saya rasa kes ini, adalah bahawa anda tidak benar-benar 415 00:22:09,760 --> 00:22:11,356 perlu menulis pertanyaan SQL. 416 00:22:11,356 --> 00:22:14,480 Ia lebih mudah, kerana saya akan menunjukkan kepada anda, untuk melakukan perkara-perkara seperti pemilihan, kemasukan, 417 00:22:14,480 --> 00:22:16,157 penghapusan, terutama mewujudkan jadual. 418 00:22:16,157 --> 00:22:17,990 Ia lebih mudah untuk menulis struktur kelas, 419 00:22:17,990 --> 00:22:22,250 daripada ia adalah untuk menstruktur Buat Kenyataan Jadual, tetapi satu perkara 420 00:22:22,250 --> 00:22:25,710 untuk menyedari, adalah bahawa ORM akan cuba yang terbaik 421 00:22:25,710 --> 00:22:28,640 untuk mencari tahu apa yang paling cekap SQL akan menjadi, 422 00:22:28,640 --> 00:22:30,110 tetapi kadang-kadang ia menjadi salah. 423 00:22:30,110 --> 00:22:32,660 >> Dan terutamanya jika anda bekerja dengan pangkalan data yang besar, 424 00:22:32,660 --> 00:22:35,557 anda boleh melihat bahawa pertanyaan yang harus berjalan cepat, 425 00:22:35,557 --> 00:22:36,640 sebenarnya lebih panjang. 426 00:22:36,640 --> 00:22:40,164 Dan jika anda lihat di bawah hood bagaimana yang ORM adalah mentafsirkan itu ke dalam SQL, 427 00:22:40,164 --> 00:22:42,080 ia mungkin akan melakukan sesuatu yang benar-benar tidak masuk akal, 428 00:22:42,080 --> 00:22:44,371 hanya kerana ia semacam isyarat niat anda salah. 429 00:22:44,371 --> 00:22:48,080 Dan, terdapat masa di mana Saya terpaksa mengatasinya, dan hanya 430 00:22:48,080 --> 00:22:52,429 melaksanakan pertanyaan SQL saya sendiri, hanya kerana ia telah menghuraikan dengan cara yang pelik. 431 00:22:52,429 --> 00:22:54,220 Jadi, terdapat beberapa atas, hanya dengan cara yang 432 00:22:54,220 --> 00:22:58,680 bahawa ia menyusun anda penyata ke dalam SQL. 433 00:22:58,680 --> 00:23:06,200 >> Jadi, mari kita lihat super cepat pada contoh mudah dari model data 434 00:23:06,200 --> 00:23:07,350 yang mungkin anda gunakan. 435 00:23:07,350 --> 00:23:11,880 Jadi, ini adalah kod Python, dan sebagainya Perkara pertama yang anda mahu lakukan adalah dari 436 00:23:11,880 --> 00:23:12,950 import peewee *. 437 00:23:12,950 --> 00:23:15,850 Jadi, tidak seperti Flask, di mana anda perlu semua modul individu, 438 00:23:15,850 --> 00:23:18,125 dan anda ingin mengimport Flask, dan naik Template, dan beberapa orang lain 439 00:23:18,125 --> 00:23:20,690 bahawa kita akan lihat nanti, dari peewee, anda hanya boleh mengimport segala-galanya, 440 00:23:20,690 --> 00:23:22,290 kerana ia adalah satu perpustakaan agak kecil. 441 00:23:22,290 --> 00:23:26,490 >> Jadi, perkara pertama yang anda mahu lakukan, adalah sebenarnya mencipta objek pangkalan data ini. 442 00:23:26,490 --> 00:23:31,212 Jadi, anda mempunyai db = SqliteDatabase, dan kemudian nama pangkalan data anda. 443 00:23:31,212 --> 00:23:33,170 Dan ini akan benar-benar mencipta objek pangkalan data 444 00:23:33,170 --> 00:23:36,230 bahawa anda boleh berinteraksi dengan, dengan peewee. 445 00:23:36,230 --> 00:23:40,570 >> Dan kemudian, kami mempunyai sebenar model yang kita mahu buat. 446 00:23:40,570 --> 00:23:42,470 Jadi jadual kita mahu buat. 447 00:23:42,470 --> 00:23:47,270 Jadi, dalam masa peewee, setiap kelas mempunyai jadual sendiri dalam pangkalan data anda. 448 00:23:47,270 --> 00:23:52,800 Jadi, semua kelas mewarisi daripada model asas, 449 00:23:52,800 --> 00:23:55,960 dan model modal M adalah sesuatu yang ditakrifkan dalam peewee. 450 00:23:55,960 --> 00:24:02,162 >> Jadi, semua model anda perlu mewarisi sebagai superclass tertinggi mereka, 451 00:24:02,162 --> 00:24:04,620 mereka harus mewarisi sebahagian model, tetapi apa yang benar-benar sejuk, 452 00:24:04,620 --> 00:24:07,610 adalah bahawa anda sebenarnya boleh mempunyai anda model mewarisi antara satu sama lain. 453 00:24:07,610 --> 00:24:10,530 Dan banyak masa, anda model data tidak semestinya 454 00:24:10,530 --> 00:24:13,754 membuat pusaka hierarki bagus, tetapi masa di mana mereka lakukan, ia benar-benar bagus, 455 00:24:13,754 --> 00:24:15,920 kerana anda mempunyai model yang wujud antara satu sama lain. 456 00:24:15,920 --> 00:24:19,710 >> Jadi, kita ditakrifkan kelas ini 'pelajar' yang mewarisi model, 457 00:24:19,710 --> 00:24:21,170 dan ia mempunyai tiga hartanah. 458 00:24:21,170 --> 00:24:24,080 Ia mempunyai ID, yang yang PrimaryKeyField, yang 459 00:24:24,080 --> 00:24:26,920 adalah sesuatu yang disediakan oleh peewee, nama adalah Charfield, 460 00:24:26,920 --> 00:24:28,490 dan gred yang merupakan IntegerField. 461 00:24:28,490 --> 00:24:32,260 Jadi ini mungkin atau mungkin tidak bagaimana CS50 sebenarnya menyimpan semua 462 00:24:32,260 --> 00:24:33,650 gred pelajar. 463 00:24:33,650 --> 00:24:36,060 Ia tidak, tetapi ini adalah bagaimana saya akan melakukannya. 464 00:24:36,060 --> 00:24:37,920 >> Dan kemudian ia telah, dalam kelas ini, dan ini 465 00:24:37,920 --> 00:24:41,620 adalah sesuatu yang anda boleh lakukan dengan Python, anda boleh mempunyai kelas bersarang. 466 00:24:41,620 --> 00:24:43,920 Dan ini adalah sesuatu yang yang dikehendaki oleh peewee. 467 00:24:43,920 --> 00:24:47,250 Jadi, Meta kelas ini, anda perlu untuk menentukan bahawa pangkalan data adalah 468 00:24:47,250 --> 00:24:49,830 sama dengan objek yang kita buat di atas. 469 00:24:49,830 --> 00:24:54,339 Dan ini berkata apa fail adalah jadual ini sebenarnya akan terkandung di dalam. 470 00:24:54,339 --> 00:24:57,130 Jadi ini adalah sesuatu yang anda perlu yang perlu dilakukan dalam semua model anda. 471 00:24:57,130 --> 00:24:59,380 Anda hanya perlu nyatakan dalam kelas Meta ini 472 00:24:59,380 --> 00:25:01,400 pangkalan data yang sama dengan db. 473 00:25:01,400 --> 00:25:03,940 Jadi apa yang saya biasanya melakukan, jika saya mempunyai sekumpulan model yang berbeza, 474 00:25:03,940 --> 00:25:05,910 adalah bahawa saya mempunyai satu asas model, yang saya biasanya 475 00:25:05,910 --> 00:25:08,839 hanya memanggil "model asas" yang mempunyai kelas Meta, 476 00:25:08,839 --> 00:25:10,380 dan ia menetapkan pangkalan data sama dengan db. 477 00:25:10,380 --> 00:25:13,710 Dan kemudian semua model berikutnya saya akan mewarisi dari kelas asas. 478 00:25:13,710 --> 00:25:16,760 Dan maka saya tidak perlu bimbang mengenai menetapkan kelas Meta. 479 00:25:16,760 --> 00:25:21,490 >> Jadi, apabila ini sebenarnya mendapat disusun ke dalam satu kenyataan SQL, 480 00:25:21,490 --> 00:25:24,875 ia kelihatan seperti perkara ini jahat ke bawah di sini, "Buat jadual ID pelajar integer, 481 00:25:24,875 --> 00:25:26,020 " apa-apa sahajalah. 482 00:25:26,020 --> 00:25:30,002 >> Dan, saya berfikir bahawa ia adalah lebih pendek, Pertanyaan SQL ini di sini, 483 00:25:30,002 --> 00:25:32,960 tetapi jika anda melihat penggunaan di kelas ini di sini anda boleh melihat apa yang sedang berlaku. 484 00:25:32,960 --> 00:25:36,116 Anda boleh melihat apa jenis bidang ada, apa yang mereka telah dipanggil, 485 00:25:36,116 --> 00:25:38,115 dan sebagainya, saya berfikir bahawa melihat kod Python ini 486 00:25:38,115 --> 00:25:43,340 banyak lagi yang boleh dibaca daripada cuba untuk menulis SQL pertanyaan ini. 487 00:25:43,340 --> 00:25:45,990 >> Jadi, untuk benar-benar menggunakan pangkalan data, 488 00:25:45,990 --> 00:25:48,470 kita perlu menyambung kepadanya dalam Python. 489 00:25:48,470 --> 00:25:52,770 Jadi, saya biasanya menulis fungsi yang dipanggil initialize_db yang melakukan dua perkara. 490 00:25:52,770 --> 00:25:54,880 Ia mengambil masa di dalam pangkalan data db objek dan ia 491 00:25:54,880 --> 00:25:58,360 bersambung dengannya, yang hanya boleh dibuka sehingga bahagian untuk pangkalan data. 492 00:25:58,360 --> 00:26:00,860 Jika anda hanya berjalan walaupun laman web pada mesin tempatan anda, 493 00:26:00,860 --> 00:26:04,320 ia bukan masalah besar super bimbang mengenai menyambung dan memutuskan sambungan, 494 00:26:04,320 --> 00:26:06,885 tetapi jika anda menjalankan pada laman web, anda 495 00:26:06,885 --> 00:26:10,010 ingin memastikan bahawa, setiap kali pengguna bersambung dengannya, apabila mereka menutup 496 00:26:10,010 --> 00:26:12,270 laman web, mereka memutuskan supaya anda tidak mempunyai sekumpulan orang yang berkaitan 497 00:26:12,270 --> 00:26:14,480 kepada pangkalan data anda semua sekali gus. 498 00:26:14,480 --> 00:26:16,370 >> Kemudian, apabila anda menyambung kepada pangkalan data, 499 00:26:16,370 --> 00:26:20,832 anda mahu panggil db.create_tables, dan senarai model untuk apa yang anda mahu 500 00:26:20,832 --> 00:26:21,540 untuk membuat jadual. 501 00:26:21,540 --> 00:26:23,950 Jadi di sini, saya hanya mahu menciptakannya untuk pelajar ini. 502 00:26:23,950 --> 00:26:28,070 Dan kemudian, apa yang penting, adalah untuk nyatakan selamat = Benar paling masa. 503 00:26:28,070 --> 00:26:30,380 Jadi apa kenyataan ini akan lakukan, adalah bahawa ia 504 00:26:30,380 --> 00:26:33,580 mencipta jadual bagi model pelajar, tetapi hanya 505 00:26:33,580 --> 00:26:36,109 jika jadual yang tidak mempunyai diwujudkan sudah. 506 00:26:36,109 --> 00:26:37,400 Itulah yang dinyatakan oleh selamat. 507 00:26:37,400 --> 00:26:39,150 Jadi ia tidak akan menulis ganti meja anda yang sedia ada, 508 00:26:39,150 --> 00:26:41,525 ia hanya akan mewujudkan baru meja jika tidak ada seorang pun di sana. 509 00:26:41,525 --> 00:26:45,090 Jadi, anda hanya boleh membuat jadual sekali menggunakan SQL. 510 00:26:45,090 --> 00:26:49,410 Dan kemudian ada yang duduk dalam pangkalan data di sana, dan kemudian sambung ke setiap kali, 511 00:26:49,410 --> 00:26:52,450 tetapi ia biasanya baik hanya untuk dimasukkan ke dalam panggilan create_tables ini, 512 00:26:52,450 --> 00:26:55,550 supaya, jika anda pernah memadam anda pangkalan data apabila anda menjalankan web anda 513 00:26:55,550 --> 00:26:57,960 app lagi, ia akan mencipta ia. 514 00:26:57,960 --> 00:27:00,730 >> Jadi, hanya memastikan bahawa selamat yang dinyatakan adalah benar, 515 00:27:00,730 --> 00:27:03,580 atau anda akan mencari data anda hanya mendapat musnah setiap kali. 516 00:27:03,580 --> 00:27:06,380 Dan kemudian, anda hanya boleh memanggil initialize_db untuk mewujudkan 517 00:27:06,380 --> 00:27:09,820 sambungan, dan mewujudkan jadual jika perlu. 518 00:27:09,820 --> 00:27:13,150 >> Jadi, perkara yang paling biasa bahawa anda akan mahu lakukan, 519 00:27:13,150 --> 00:27:15,920 atau salah satu perkara yang paling biasa, sebenarnya adalah untuk memasukkan perkara 520 00:27:15,920 --> 00:27:17,170 ke dalam pangkalan data anda. 521 00:27:17,170 --> 00:27:19,430 Dan sebagainya, daripada harus untuk menulis bersisipan INTO 522 00:27:19,430 --> 00:27:21,990 kenyataan dengan semua nilai-nilai yang dinyatakan, 523 00:27:21,990 --> 00:27:24,650 anda sebenarnya boleh memanggil fungsi kepada kelas pelajar. 524 00:27:24,650 --> 00:27:28,200 Jadi, apabila anda mencipta kelas yang mewarisi dari model, 525 00:27:28,200 --> 00:27:30,200 ia mempunyai ini mewujudkan kaedah. 526 00:27:30,200 --> 00:27:33,870 >> Jadi, anda melakukan kelas name.create, dan anda menentukan parameter 527 00:27:33,870 --> 00:27:35,260 yang anda mahu untuk lulus dalam. 528 00:27:35,260 --> 00:27:39,200 Jadi, jika saya ingin menambah beberapa pelajar kepada contoh buku gred CS50 kami, 529 00:27:39,200 --> 00:27:41,820 Saya akan dimasukkan ke dalam Daud, yang mempunyai gred yang sangat baik, dia mempunyai 95. 530 00:27:41,820 --> 00:27:45,100 Dan saya sendiri, siapa yang tidak melakukan dengan baik dalam CS50, saya mempunyai 50. 531 00:27:45,100 --> 00:27:47,600 Dan sebagainya, perkara yang baik tentang apa fungsi mewujudkan ini tidak, 532 00:27:47,600 --> 00:27:53,040 adalah bahawa ia mengembalikan contoh, atau berturut-turut, bahawa ia diwujudkan dalam jadual, 533 00:27:53,040 --> 00:27:55,750 dan sebagainya maka anda menyimpan bahawa dalam berubah-ubah, dan bekerja dengan kemudian. 534 00:27:55,750 --> 00:27:58,830 Anda boleh menukar di sekeliling, yang Saya akan menunjukkan satu contoh. 535 00:27:58,830 --> 00:28:03,050 >> Perhatikan bahawa saya tidak perlu nyatakan ID, 536 00:28:03,050 --> 00:28:09,340 kerana kerana ia adalah PrimaryKeyField, ia secara automatik 537 00:28:09,340 --> 00:28:10,930 kenaikan jika anda tidak menentukan ia. 538 00:28:10,930 --> 00:28:12,250 Dan, sebenarnya, anda mungkin tidak boleh menentukan ia, 539 00:28:12,250 --> 00:28:14,810 kerana anda mungkin secara tidak sengaja memukul berkali-kali ID orang lain. 540 00:28:14,810 --> 00:28:16,830 Dan anda ingin memastikan bahawa ia adalah unik. 541 00:28:16,830 --> 00:28:20,662 >> Jadi, sebenarnya, yang paling perkara yang biasa yang anda mahu lakukan, 542 00:28:20,662 --> 00:28:22,620 adalah mungkin memilih keluar pangkalan data sebaik sahaja anda 543 00:28:22,620 --> 00:28:24,078 mempunyai banyak maklumat di sana. 544 00:28:24,078 --> 00:28:27,360 Dan sebagainya, jika anda mahu untuk mendapatkan segala-galanya, supaya bersamaan pilih bintang 545 00:28:27,360 --> 00:28:30,940 dari kenyataan pelajar, hanya akan menjadi student.select. 546 00:28:30,940 --> 00:28:34,380 Dan yang akan memberikan anda kembali array dengan semua pelajar objek di dalamnya 547 00:28:34,380 --> 00:28:35,770 bahawa anda melelar yang anda mahu. 548 00:28:35,770 --> 00:28:37,019 Anda boleh mendapatkan sesuatu daripada itu. 549 00:28:37,019 --> 00:28:39,310 Dan kebanyakan masa, anda jangan hanya mahu melakukan pilih, 550 00:28:39,310 --> 00:28:40,935 anda benar-benar ingin menentukan sesuatu. 551 00:28:40,935 --> 00:28:44,580 Dan sebagainya, anda boleh rantai bersama-sama ini panggilan fungsi, 552 00:28:44,580 --> 00:28:48,830 seperti bagaimana anda akan rantai bersama-sama kenyataan dalam SQL. 553 00:28:48,830 --> 00:28:53,002 Jadi, anda boleh melakukan student.select (). Di mana dalam contoh ini. 554 00:28:53,002 --> 00:28:54,710 Dan kemudian, anda boleh menentukan syarat-syarat, 555 00:28:54,710 --> 00:28:57,880 hanya menggunakan Python normal Booleans untuk memeriksa sesuatu. 556 00:28:57,880 --> 00:29:02,110 >> Jadi, dalam kes ini, anda mahu menghadkan apa yang anda memilih untuk, 557 00:29:02,110 --> 00:29:06,790 mana student.grade adalah sama dengan 50, dan student.name adalah sama dengan Ezra, 558 00:29:06,790 --> 00:29:09,130 supaya, sama akan mendapat saya daripada itu. 559 00:29:09,130 --> 00:29:11,340 Dan perhatikan, salah benar-benar Perkara yang halus di sini adalah 560 00:29:11,340 --> 00:29:15,570 bahawa, jika anda ingin menentukan dan / atau dan atau / atau, 561 00:29:15,570 --> 00:29:19,840 dalam Python, anda biasanya akan digunakan, Saya rasa perkataan "dan" sebenarnya, 562 00:29:19,840 --> 00:29:23,351 tetapi di sini anda menggunakan Ampersand tunggal, yang biasanya pengendali bitwise, 563 00:29:23,351 --> 00:29:25,600 tetapi dalam kes yang istimewa ini, hanya cara peewee yang melakukannya, 564 00:29:25,600 --> 00:29:27,660 anda menggunakan tunggal Ampersand untuk menentukan "dan". 565 00:29:27,660 --> 00:29:29,451 Itu sesuatu yang Saya bercampur banyak, 566 00:29:29,451 --> 00:29:32,530 tetapi ia tidak datang yang banyak dalam amalan. 567 00:29:32,530 --> 00:29:36,350 >> Kemudian, apabila anda mempunyai semua pelajar daripada pangkalan data, 568 00:29:36,350 --> 00:29:39,420 sebaik sahaja anda telah dilakukan anda pilih dan memakai atau anda apa sahaja, 569 00:29:39,420 --> 00:29:42,334 anda boleh menggunakan gelung foreach, seperti biasa dalam Python, 570 00:29:42,334 --> 00:29:44,500 dengan apa-apa jenis iterator atau dengan apa-apa jenis tatasusunan. 571 00:29:44,500 --> 00:29:46,333 Jadi, anda boleh lakukan, untuk orang dalam student.select (). whe 572 00:29:46,333 --> 00:29:52,930 semula (Student.grade <75), dan kemahuan ini melelar setiap pelajar dalam jadual 573 00:29:52,930 --> 00:29:56,260 yang gred kurang daripada 75, yang dalam kes ini, masih hanya saya. 574 00:29:56,260 --> 00:29:59,218 Dan kemudian anda boleh melakukan sesuatu dalam gelung bahawa, seperti menghantar e-mel saya 575 00:29:59,218 --> 00:30:01,680 dan beritahu saya untuk benar-benar menghidupkan dalam Masalah Set saya. 576 00:30:01,680 --> 00:30:04,550 >> Jadi, satu lagi perkara yang anda boleh lakukan, adakah ia benar-benar mudah 577 00:30:04,550 --> 00:30:06,460 untuk mengemas kini baris dalam jadual. 578 00:30:06,460 --> 00:30:08,720 Jadi, ingat kembali ke sini, anda apabila saya dimasukkan, 579 00:30:08,720 --> 00:30:11,440 Saya mengambil nilai yang di dikembalikan oleh student.create, 580 00:30:11,440 --> 00:30:14,920 dan saya diberikan kepada nama yang dipanggil Ezra. 581 00:30:14,920 --> 00:30:18,995 Dan sehingga kini, anda boleh menukar nilai dalam contoh itu, 582 00:30:18,995 --> 00:30:20,870 seperti anda yang kelas biasa dalam Python. 583 00:30:20,870 --> 00:30:25,060 >> Jadi, anda boleh menetapkan ezra.grade = 95 dan yang akan mengemas kini salinan tempatan, 584 00:30:25,060 --> 00:30:28,380 tetapi jika anda benar-benar ingin melakukan perubahan itu kepada pangkalan data, 585 00:30:28,380 --> 00:30:31,410 anda perlu untuk memanggil ezra.save, supaya anda dipanggil kaedah .save 586 00:30:31,410 --> 00:30:32,650 pada contoh. 587 00:30:32,650 --> 00:30:38,085 >> Dan sehingga kini, saya telah berjaya menukar gred saya sendiri dalam pangkalan data. 588 00:30:38,085 --> 00:30:41,210 Oleh itu, maka katakan bahawa saya terperangkap menukar gred saya dalam pangkalan data. 589 00:30:41,210 --> 00:30:44,126 Profesor Malan mungkin akan mahu memadam saya dari kelas, 590 00:30:44,126 --> 00:30:48,630 dan supaya anda boleh menghubungi .delete yang kaedah misalnya hanya pada perkara itu. 591 00:30:48,630 --> 00:30:51,674 >> Jadi, jika anda mahu pergi kembali ke dalam gelung ini di sini, 592 00:30:51,674 --> 00:30:53,465 dan benar-benar, dan bukannya penghantaran e-mel semua 593 00:30:53,465 --> 00:30:56,577 pelajar yang gred kurang daripada 75, anda mahu untuk memadamnya, 594 00:30:56,577 --> 00:30:58,660 dalam gelung ini anda boleh memanggil contoh s.delete. 595 00:30:58,660 --> 00:31:04,180 596 00:31:04,180 --> 00:31:07,780 Dan perkara yang terakhir yang anda mahu lakukan, adalah apabila anda mewujudkan sambungan, 597 00:31:07,780 --> 00:31:10,350 dan anda selesai dengan kerja anda, anda mahu panggil db.close, 598 00:31:10,350 --> 00:31:13,190 mana db adalah pangkalan data yang objek yang kita ada sebelum ini. 599 00:31:13,190 --> 00:31:18,290 Dan anda ingin memastikan bahawa segala-galanya mendapat ditutup daripada. 600 00:31:18,290 --> 00:31:18,790 >> Sejuk. 601 00:31:18,790 --> 00:31:22,410 Jadi sekarang, saya mempunyai aplikasi contoh. 602 00:31:22,410 --> 00:31:26,880 Saya semacam pra-dibuat segala-galanya hanya supaya tidak akan ada apa-apa kod sebenar 603 00:31:26,880 --> 00:31:30,220 kesilapan, tetapi kita boleh berjalan melalui dan melihat bagaimana anda akan meletakkan Flask 604 00:31:30,220 --> 00:31:33,685 dan PEEWEE bersama-sama, dan membuat aplikasi yang mudah. 605 00:31:33,685 --> 00:31:38,680 Saya memanggilnya CS50 kata-kata kasar, dan ia jenis platform blog yang mudah. 606 00:31:38,680 --> 00:31:41,150 >> Jadi, pertama, saya akan berjalan dan menunjukkan apa yang ia kelihatan seperti, 607 00:31:41,150 --> 00:31:42,890 dan kemudian kita boleh melihat lebih ke dalam kod. 608 00:31:42,890 --> 00:32:00,470 609 00:32:00,470 --> 00:32:02,830 Okay, jadi mari kita hanya menjalankan ini. 610 00:32:02,830 --> 00:32:14,040 611 00:32:14,040 --> 00:32:17,250 Hebat, saya akan membuat ini sedikit lebih kecil. 612 00:32:17,250 --> 00:32:20,000 Ia bukan sangat cantik, hanya kerana Saya tidak membuat banyak CSS, 613 00:32:20,000 --> 00:32:23,255 tetapi apa yang ia adalah, ia mempunyai pangkalan data ini untuk posting blog, 614 00:32:23,255 --> 00:32:25,630 dan ia pergi melalui semua mereka, dan ia akan memaparkannya 615 00:32:25,630 --> 00:32:28,170 pada halaman untuk satu yang paling baru-baru ini. 616 00:32:28,170 --> 00:32:30,920 Dan sebagainya ini adalah hanya beberapa jawatan bahawa saya telah disimpan di dalam pangkalan data. 617 00:32:30,920 --> 00:32:35,680 >> Jadi, jika kita mahu untuk mewujudkan baru jawatan, kita boleh pergi untuk Tambah Post baru, 618 00:32:35,680 --> 00:32:42,720 dan kita boleh memasukkan tajuk yang jawatan, jadi sesuatu seperti, seminar CS50. 619 00:32:42,720 --> 00:32:45,360 620 00:32:45,360 --> 00:32:46,735 Wow, benar-benar menikmati seminar itu. 621 00:32:46,735 --> 00:32:51,070 622 00:32:51,070 --> 00:32:52,270 >> Sejuk. 623 00:32:52,270 --> 00:32:56,060 Kemudian anda menekan pos, dan ia akan mengarahkan anda kembali ke halaman rumah, 624 00:32:56,060 --> 00:33:00,039 dan kemudian anda akan melihat bahawa jawatan terkini telah ditambah. 625 00:33:00,039 --> 00:33:01,580 Dan kita masih mempunyai semua orang-orang di sana. 626 00:33:01,580 --> 00:33:08,080 Oleh sebab itu, mari kita melangkah melalui semua kod dan melihat bagaimana ini dilaksanakan. 627 00:33:08,080 --> 00:33:11,995 >> Jadi, saya fikir perkara pertama yang membolehkan kita lihat, sebenarnya model. 628 00:33:11,995 --> 00:33:14,120 Banyak masa, apabila anda mereka bentuk sesuatu, 629 00:33:14,120 --> 00:33:17,036 anda mahu untuk berfikir pertama tentang bagaimana anda akan mewakili data anda, 630 00:33:17,036 --> 00:33:22,915 dan kemudian mereka bentuk perkara di sekeliling itu, jadi segala-galanya yang masuk akal. 631 00:33:22,915 --> 00:33:25,290 Dan itulah sebenarnya bagaimana saya yang berlaku apabila saya membuat ini, 632 00:33:25,290 --> 00:33:28,030 Saya duduk dan berfikir, apa yang saya mahu dalam sesuatu jawatan. 633 00:33:28,030 --> 00:33:32,130 >> Jadi, di sini, kami mempunyai struktur yang sama bahawa saya telah menyebut sebelum ini, 634 00:33:32,130 --> 00:33:33,755 di mana kita menjalankan db = Sqldatabase ('posts.db'). 635 00:33:33,755 --> 00:33:37,840 636 00:33:37,840 --> 00:33:40,980 Pada hakikatnya, anda mungkin tidak mahu kepada kod keras dalam pangkalan data nama anda. 637 00:33:40,980 --> 00:33:43,730 Yang mungkin perlu menjadi parameter yang disimpan di suatu tempat, mungkin 638 00:33:43,730 --> 00:33:45,940 dalam fail config, tetapi dalam contoh yang kecil seperti ini, 639 00:33:45,940 --> 00:33:48,310 ia mengapa untuk kod keras yang masuk. 640 00:33:48,310 --> 00:33:53,510 >> Oleh sebab itu, kami mempunyai kelas Post ini, yang mewarisi daripada model asas. 641 00:33:53,510 --> 00:33:56,930 Dan ia mempunyai, sekali lagi, ID = PrimaryKeyField. 642 00:33:56,930 --> 00:34:02,250 Sebenarnya, jika anda tidak menentukan, jika saya benar-benar tidak perlu lagi ambil ini, 643 00:34:02,250 --> 00:34:07,152 kemudian PEEWEE kami akan menjaga secara automatik mewujudkan medan ID, 644 00:34:07,152 --> 00:34:09,360 dan ia akan secara automatik menjadikannya sebagai PrimaryKey, yang 645 00:34:09,360 --> 00:34:12,485 Saya fikir adalah benar-benar baik, kerana biasanya, itu sesuatu yang anda mahu mempunyai, 646 00:34:12,485 --> 00:34:16,239 tetapi saya suka untuk memasukkannya ke dalam khusus, hanya jadi saya ingat bahawa itu di sana. 647 00:34:16,239 --> 00:34:19,480 Tetapi jika anda tidak menyatakan bahawa, yang akan berada di sana secara automatik. 648 00:34:19,480 --> 00:34:22,198 >> Sebab itu, saya mempunyai tarikh yang adalah DateTimeField, dan semua 649 00:34:22,198 --> 00:34:24,864 bidang-bidang yang berbeza, jika anda melihat dokumentasi peewee, 650 00:34:24,864 --> 00:34:28,920 ia akan memberikan anda satu senarai yang berbeza jenis bidang yang boleh anda gunakan. 651 00:34:28,920 --> 00:34:34,440 Bagi sebahagian besar, ia seakan- dengan apa yang anda akan lihat di dalam SQL. 652 00:34:34,440 --> 00:34:37,699 Jadi ada Charfield, yang VarCharFields, TextFields, 653 00:34:37,699 --> 00:34:40,550 yang buat masa yang lama teks, seperti blog post 654 00:34:40,550 --> 00:34:44,460 berpotensi, DateTimeFields, DoubleFields, FloatFields, 655 00:34:44,460 --> 00:34:46,100 segala sesuatu seperti itu. 656 00:34:46,100 --> 00:34:51,570 >> Dan anda boleh lulus dalam hujah-hujah lain kepadanya, yang saya tidak nyatakan di sini. 657 00:34:51,570 --> 00:34:55,719 Katakanlah, sebagai contoh, anda tidak mahu membenarkan dua jawatan untuk mempunyai tajuk yang sama, 658 00:34:55,719 --> 00:34:59,672 anda boleh menentukan sesuatu seperti unik = Benar, 659 00:34:59,672 --> 00:35:02,880 dan itu hanya satu parameter tambahan untuk bidang yang apabila ia menyusun ke bawah 660 00:35:02,880 --> 00:35:06,865 ke dalam SQL, ia akan menentukan bahawa ia mempunyai untuk menjadi unik. 661 00:35:06,865 --> 00:35:09,740 Anda juga boleh menentukan sesuatu seperti tidak batal dan semua perkara lain 662 00:35:09,740 --> 00:35:11,750 biasanya anda lakukan dalam SQL. 663 00:35:11,750 --> 00:35:16,020 Jadi, ini adalah agak mudah model yang mempunyai tarikh. 664 00:35:16,020 --> 00:35:19,460 Perhatikan di sini, dalam DateTimeField, Saya sebutkan apa yang lalai itu. 665 00:35:19,460 --> 00:35:22,560 Saya dinyatakan ia menjadi datetime.datetime.now, 666 00:35:22,560 --> 00:35:24,920 kerana cara yang ini mendapat dinilai, 667 00:35:24,920 --> 00:35:28,750 ia benar-benar menilai datetime.now apabila 668 00:35:28,750 --> 00:35:32,110 ia akan dimasukkan ke dalam pangkalan data. 669 00:35:32,110 --> 00:35:34,760 >> Saya fikir, saya perlu periksa ini, 670 00:35:34,760 --> 00:35:38,222 tetapi jika anda melakukan sesuatu seperti ini, maka ia sebenarnya akan menilai bahawa sekali, 671 00:35:38,222 --> 00:35:40,180 dan kemudian DateTime akan sentiasa sama. 672 00:35:40,180 --> 00:35:44,240 Jadi, hanya jika anda melakukan sesuatu dengan datetimes, periksa 673 00:35:44,240 --> 00:35:47,080 bahawa ia menilai apabila sebenarnya mendapat dimasukkan, jika tidak 674 00:35:47,080 --> 00:35:48,780 anda mungkin keliru. 675 00:35:48,780 --> 00:35:51,221 >> Gelaran ini hanya Charfield, yang terdapat 676 00:35:51,221 --> 00:35:53,970 lebih hujah-hujah anda boleh lulus dalam menentukan berapa lama anda 677 00:35:53,970 --> 00:35:56,170 mahu ia menjadi, tetapi di sini, ia tidak benar-benar perkara. 678 00:35:56,170 --> 00:35:58,687 Dan Teks akan menjadi teks seluruh pos, 679 00:35:58,687 --> 00:36:01,020 dan itu akan menjadi Medan Teks hanya kerana anda mahu 680 00:36:01,020 --> 00:36:03,370 untuk membolehkan ia menjadi tali yang cukup panjang. 681 00:36:03,370 --> 00:36:05,970 >> Kemudian kita mempunyai Meta ini subkelas yang hanya 682 00:36:05,970 --> 00:36:11,250 menyatakan bahawa kita mahu pangkalan data di mana ini sebenarnya membuka ke dalam 683 00:36:11,250 --> 00:36:14,267 menjadi objek db yang kita ada di sini. 684 00:36:14,267 --> 00:36:16,350 Dan perkara terakhir yang kita ada di sini, hanya fungsi ini 685 00:36:16,350 --> 00:36:18,120 bahawa kita akan gunakan dari aplikasi utama kami 686 00:36:18,120 --> 00:36:23,970 untuk memulakan pangkalan data untuk menyambung kepada , dan kemudian untuk mencipta jadual Post. 687 00:36:23,970 --> 00:36:26,880 >> Sekarang, mari kita lihat aplikasi utama sendiri. 688 00:36:26,880 --> 00:36:30,800 Jadi yang satu ini cukup sedikit lebih lama daripada orang-orang yang 689 00:36:30,800 --> 00:36:34,840 yang kita lihat sebelum ini, tetapi mudah-mudahan tidak terlalu buruk. 690 00:36:34,840 --> 00:36:37,140 Jadi, biarlah saya melanjutkan ini keluar. 691 00:36:37,140 --> 00:36:38,370 Baik. 692 00:36:38,370 --> 00:36:42,070 >> Jadi, notis dan bahagian atas saya yang diimport sejumlah besar perkara-perkara lain 693 00:36:42,070 --> 00:36:44,129 dari Flask bahawa kita tidak mempunyai benar-benar dilihat sebelum ini. 694 00:36:44,129 --> 00:36:46,670 Dan mudah-mudahan, kita boleh pergi melalui setiap seorang daripada ini satu per satu 695 00:36:46,670 --> 00:36:49,420 dan bercakap sedikit lebih lanjut mengenai mereka, disusun mengikut contoh. 696 00:36:49,420 --> 00:36:51,380 Jadi, kita mempunyai Flask, dan render_template itu, 697 00:36:51,380 --> 00:36:54,370 yang kita lihat sebelum ini, objek permintaan ini, 698 00:36:54,370 --> 00:37:00,400 yang akan datang apabila kita melihat bagaimana bentuk yang saya telah menunjukkan sebenarnya 699 00:37:00,400 --> 00:37:01,170 berfungsi. 700 00:37:01,170 --> 00:37:04,850 Ubah hala, yang membolehkan anda mengarahkan kembali dari Create New Post 701 00:37:04,850 --> 00:37:11,710 Kembali ke Laman asal, dan kemudian URL, yang merupakan sesuatu yang membolehkan anda 702 00:37:11,710 --> 00:37:15,550 memikirkan di mana di laman web laman tertentu adalah. 703 00:37:15,550 --> 00:37:17,810 >> Sebab itu, yang akan datang Perkara yang saya lakukan, adalah saya import 704 00:37:17,810 --> 00:37:21,550 semua maklumat daripada Model fail yang kami hanya melihat. 705 00:37:21,550 --> 00:37:23,140 Dan, ya. 706 00:37:23,140 --> 00:37:28,720 >> Jadi, sesuatu yang lain baru yang datang sehingga apabila anda berurusan dengan, 707 00:37:28,720 --> 00:37:31,850 terutama pangkalan data, adalah bahawa anda boleh menentukan 708 00:37:31,850 --> 00:37:35,110 fungsi yang mendapat dipanggil sebelum setiap permintaan, dan fungsi yang mendapat 709 00:37:35,110 --> 00:37:39,690 dipanggil selepas setiap permintaan, menggunakan ini permintaan fungsi penghias app.before. 710 00:37:39,690 --> 00:37:42,324 >> Dan hal ini akan dapat dilaksanakan di mana sahaja fungsi ini. 711 00:37:42,324 --> 00:37:44,240 Ini tidak perlu dipanggil sebelum permintaan, 712 00:37:44,240 --> 00:37:46,281 tetapi biasanya itu sesuatu wajar untuk memanggilnya. 713 00:37:46,281 --> 00:37:48,580 714 00:37:48,580 --> 00:37:51,650 Anda boleh menentukan apa sahaja fungsi anda ingin mendapat dipanggil di sana, 715 00:37:51,650 --> 00:37:56,330 jadi saya dinyatakan initialize_db ini fungsi yang kami terpaksa kembali dalam Model 716 00:37:56,330 --> 00:38:02,390 fail, jadi sebelum setiap permintaan, anda mahu menyambung kepada pangkalan data. 717 00:38:02,390 --> 00:38:04,560 >> Terdapat dua yang berbeza cara-cara yang boleh anda lakukan ini. 718 00:38:04,560 --> 00:38:10,830 Anda boleh melakukanapp., I percaya ia after_request. 719 00:38:10,830 --> 00:38:13,800 Dan perbezaan antara after_request dan teardown_request, 720 00:38:13,800 --> 00:38:17,590 adalah bahawa after_request hanya akan berlaku jika permintaan itu sebenarnya adalah sah. 721 00:38:17,590 --> 00:38:20,440 Dan sebagainya, hanya jika permintaan berjaya, 722 00:38:20,440 --> 00:38:22,490 jika apa-apa yang salah, tetapi teardown_request 723 00:38:22,490 --> 00:38:26,300 berlaku dalam kes yang berjaya permintaan, atau dalam hal ralat. 724 00:38:26,300 --> 00:38:28,252 >> Jadi, biasanya, anda mahu menggunakan teardown_request, 725 00:38:28,252 --> 00:38:30,460 melainkan jika anda mahu lakukan sesuatu, terutama yang berbeza 726 00:38:30,460 --> 00:38:31,470 dalam hal suatu kesalahan. 727 00:38:31,470 --> 00:38:35,122 Tetapi hanya untuk menutup pangkalan data, sama ada ia berjaya atau jika ia gagal, 728 00:38:35,122 --> 00:38:37,080 yang kita lakukan anda mahu putuskan sambungan dari pangkalan data. 729 00:38:37,080 --> 00:38:41,240 Jadi ia dipanggil, db.close pada objek db. 730 00:38:41,240 --> 00:38:43,740 >> Perhatikan bahawa teardown_request mengambil masa dalam pengecualian. 731 00:38:43,740 --> 00:38:46,781 Jadi, anda boleh menyemak jika ada sebenarnya ralat apabila ia menutup, 732 00:38:46,781 --> 00:38:49,390 tetapi di sini, mudah-mudahan, di sana tidak banyak keseluruhan kesilapan, 733 00:38:49,390 --> 00:38:52,720 jadi kita hanya jenis mengabaikan itu. 734 00:38:52,720 --> 00:38:55,990 >> Okay, dan seluruh ia tidak terlalu buruk. 735 00:38:55,990 --> 00:39:02,240 Jadi, apabila kita pergi ke halaman rumah, kita diberikan Template home.html ini 736 00:39:02,240 --> 00:39:03,490 yang akan membuka. 737 00:39:03,490 --> 00:39:06,240 Pas adalah dalam jawatan sama dengan, dan apa ini 738 00:39:06,240 --> 00:39:10,260 tidak adalah, ingat kita mempunyai catatan ini model, jadi kami memilih semua jawatan itu, 739 00:39:10,260 --> 00:39:13,890 dan kemudian satu lagi perkara yang anda boleh lakukan, anda boleh menentukan klausa WHERE itu, 740 00:39:13,890 --> 00:39:16,910 anda menyatakan memerintahkan dengan, dan jadi kami mengambil 741 00:39:16,910 --> 00:39:18,820 semua jawatan yang mendapatkan dipilih, dan kemudian 742 00:39:18,820 --> 00:39:22,590 kami memesan mereka oleh post.date.descending. 743 00:39:22,590 --> 00:39:25,030 Dan yang akan menentukan, apabila mereka benar-benar keluar, 744 00:39:25,030 --> 00:39:29,250 yang paling baru-baru ini akan menjadi salah satu yang pertama. 745 00:39:29,250 --> 00:39:31,420 >> Dan kemudian, kita lulus itu ke dalam Templat home.html itu, 746 00:39:31,420 --> 00:39:34,240 jadi mari kita sebenarnya membuka Templat yang benar-benar cepat, 747 00:39:34,240 --> 00:39:36,760 dan kita lihat bagaimana yang bekerja. 748 00:39:36,760 --> 00:39:42,130 Dan ini bukan HTML besar, tetapi mudah-mudahan, kita boleh memberi tumpuan kepada Python. 749 00:39:42,130 --> 00:39:46,960 >> Jadi ada pautan kepada Tambah Baru Pos, dan sebagainya ini menentukan laluan 750 00:39:46,960 --> 00:39:51,580 dalam kelalang yang kita menentukan, yang di sini. 751 00:39:51,580 --> 00:39:56,310 Ini adalah laluan jawatan baru, dan kami menentukan bahawa di sini. 752 00:39:56,310 --> 00:40:00,450 Dan supaya adalah pautan yang kemudian akan pergi to bahawa dalam pelayan Flask itu. 753 00:40:00,450 --> 00:40:03,820 >> Perkara yang lebih menarik adakah ini untuk gelung di sini. 754 00:40:03,820 --> 00:40:07,685 Oleh itu, kita menentukan bahawa ini parameter jawatan yang 755 00:40:07,685 --> 00:40:09,560 telah diluluskan ke dalam fungsi render_template, 756 00:40:09,560 --> 00:40:13,550 untuk setiap jawatan dalam jawatan ini objek yang mendapat diluluskan pada. 757 00:40:13,550 --> 00:40:16,600 Kami mahu mencetak tajuk pos, di H1, 758 00:40:16,600 --> 00:40:21,930 dan kemudian di bawah, kami ingin cetak teks jawatan dalam perenggan. 759 00:40:21,930 --> 00:40:25,710 >> Dan di sini, kita boleh sebenarnya memanggil fungsi Python, 760 00:40:25,710 --> 00:40:35,130 supaya kita boleh memanggil strftime, ST-RF-masa, dan anda boleh lulus dalam rentetan format 761 00:40:35,130 --> 00:40:37,064 yang anda ingin mencetak data di dalam. 762 00:40:37,064 --> 00:40:39,980 Jadi ia adalah cukup baik bahawa anda boleh sebenarnya memanggil fungsi Python ini 763 00:40:39,980 --> 00:40:41,090 dari dalam sini. 764 00:40:41,090 --> 00:40:44,370 Anda tidak perlu berbuat pemformatan pada pihak pengawal, kerana benar-benar, 765 00:40:44,370 --> 00:40:47,770 format tarikh adalah sesuatu yang anda mahu berurusan dalam Paparan. 766 00:40:47,770 --> 00:40:51,480 >> Dan semua peratus ini perkara yang tidak adalah sangat penting. 767 00:40:51,480 --> 00:40:55,270 Jika kamu melihat ke atas dokumentasi untuk fungsi strftime dalam Python, 768 00:40:55,270 --> 00:40:57,040 ia menyatakan semua ini perkara, tetapi yang ini 769 00:40:57,040 --> 00:40:59,190 bagaimana, bila kita cari di halaman rumah di sini, 770 00:40:59,190 --> 00:41:04,440 ia format ini dengan baik tarikh, dan ia menyatakan AM atau PM, 771 00:41:04,440 --> 00:41:09,410 tetapi biasanya, jika kita tidak mempunyai ini di sini, 772 00:41:09,410 --> 00:41:14,024 anda mungkin akan mendapatkan beberapa sampah tarikh itu tidak kelihatan sangat baik. 773 00:41:14,024 --> 00:41:15,940 Dan kemudian kita menentukan post.text, dan saya boleh 774 00:41:15,940 --> 00:41:19,460 telah meletakkan beberapa garis pecah di sini, hanya 775 00:41:19,460 --> 00:41:21,820 untuk meletakkan beberapa ruang di antara setiap jawatan. 776 00:41:21,820 --> 00:41:26,270 >> Jadi, saya rasa yang paling penting perkara dalam contoh ini, 777 00:41:26,270 --> 00:41:28,697 adalah bahawa anda boleh menggunakan ini untuk gelung. 778 00:41:28,697 --> 00:41:30,780 Dan ini adalah mirip kepada perkara yang boleh anda lakukan dalam PHP. 779 00:41:30,780 --> 00:41:32,905 Anda boleh melelar melalui, segala-galanya mendapat diluluskan pada, 780 00:41:32,905 --> 00:41:36,719 dan sebagainya, daripada harus melakukan copy / paste, copy / paste semua HTML, 781 00:41:36,719 --> 00:41:40,010 anda hanya perlu menulis sekali, dan kemudian anda boleh melelar semua jawatan. 782 00:41:40,010 --> 00:41:41,510 >> Dan ini adalah sesuatu biasa yang anda mahu 783 00:41:41,510 --> 00:41:44,510 yang perlu dilakukan, apabila anda mempunyai banyak data, adalah bahawa untuk segala-galanya dalam data anda, 784 00:41:44,510 --> 00:41:48,370 yang anda mahu lakukan perkara yang sama. 785 00:41:48,370 --> 00:41:51,690 Dan kemudian, hanya ingat, bahawa apabila anda mahu mencetak sesuatu yang jelas 786 00:41:51,690 --> 00:41:54,780 dalam HTML, anda menggunakan pendakap double sini, 787 00:41:54,780 --> 00:41:57,820 tetapi kemudian apabila anda mahu untuk menentukan beberapa maklumat mengenai keadaan, 788 00:41:57,820 --> 00:42:02,430 atau kira-kira untuk gelung, anda menggunakan peratus pendakap. 789 00:42:02,430 --> 00:42:08,730 >> Jadi, kembali kepada Python kod, supaya menerangkan 790 00:42:08,730 --> 00:42:12,242 apa yang berlaku di utama laluan, apabila kita pergi ke sana, 791 00:42:12,242 --> 00:42:14,450 ia hanya memaparkan semua jawatan, tetapi kemudian soalan 792 00:42:14,450 --> 00:42:17,440 adalah, bagaimana kita benar-benar mendapatkan jawatan ke dalam pangkalan data, yang 793 00:42:17,440 --> 00:42:18,970 adalah sedikit lebih menarik. 794 00:42:18,970 --> 00:42:23,960 >> Jadi, apabila anda klik pada New Post link, yang kita lihat di sini, 795 00:42:23,960 --> 00:42:26,000 ia pelencongan anda untuk borang ini. 796 00:42:26,000 --> 00:42:29,580 Dan itu hanya panggilan mudah kepada fungsi render_template, yang kemudiannya 797 00:42:29,580 --> 00:42:32,110 pas dalam jawatan baru dalam bentuk HTML. 798 00:42:32,110 --> 00:42:36,212 Jadi mari kita lihat itu. 799 00:42:36,212 --> 00:42:37,420 Jadi yang satu ini adalah agak mudah. 800 00:42:37,420 --> 00:42:45,110 Ia mempunyai bentuk HTML yang mudah, yang akan kelihatan sedikit biasa, 801 00:42:45,110 --> 00:42:47,380 berdasarkan bentuk dalam CS50 Kewangan. 802 00:42:47,380 --> 00:42:49,940 Dan sebagainya, kita nyatakan di sini, tindakan itu. 803 00:42:49,940 --> 00:42:52,435 Dan di sini, jika anda bekerja dengan PHP, seperti biasa, ia 804 00:42:52,435 --> 00:42:55,930 akan menjadi sesuatu seperti, create.PHP, tetapi di sini 805 00:42:55,930 --> 00:42:59,960 kita benar-benar menentukan laluan dalam pelayan Flask itu. 806 00:42:59,960 --> 00:43:02,520 Dan sebagainya, sepadan found to yang mewujudkan 807 00:43:02,520 --> 00:43:05,680 yang kita ada di sini, yang kita akan pergi ke dalam satu saat. 808 00:43:05,680 --> 00:43:07,630 >> Dan sebagainya, kita menentukan bahawa ia adalah satu kaedah pos, 809 00:43:07,630 --> 00:43:09,820 kerana kami ingin menghantar borang ini data, dan biasanya 810 00:43:09,820 --> 00:43:12,945 apabila anda menghantar data dari borang, anda mungkin mahu menggunakan permintaan pos, 811 00:43:12,945 --> 00:43:15,760 hanya supaya anda tidak berakhir dengan besar, URL dikawal ini. 812 00:43:15,760 --> 00:43:18,970 Tetapi anda juga boleh menggunakan permintaan GET, dan lulus dalam dengan routing berubah-ubah, 813 00:43:18,970 --> 00:43:21,170 tetapi untuk bentuk, ia adalah baik kepada permintaan post di sini. 814 00:43:21,170 --> 00:43:24,620 Dan sebagainya itu, sama seperti anda akan melakukan dengan HTML dan PHP, 815 00:43:24,620 --> 00:43:28,420 anda boleh menentukan ini input teks, dan anda boleh menentukan nama mereka, 816 00:43:28,420 --> 00:43:33,490 dan itulah nama yang akan mendapat lulus ke dalam objek permintaan itu dalam kelalang. 817 00:43:33,490 --> 00:43:36,960 >> Dan kemudian kita telah Hantar butang yang mengatakan Post. 818 00:43:36,960 --> 00:43:40,760 Dan di sini, Pos adalah nama yang butang, kerana ia adalah satu blog post, 819 00:43:40,760 --> 00:43:42,700 tetapi di sini, pos adalah kaedah permintaan itu. 820 00:43:42,700 --> 00:43:47,060 Jadi mereka adalah perkataan yang sama tetapi sebenarnya tidak berkaitan. 821 00:43:47,060 --> 00:43:48,460 Yeah 822 00:43:48,460 --> 00:43:54,800 >> Kembali kepada kod Python, apabila kita dipanggil kaedah membuat, 823 00:43:54,800 --> 00:43:57,702 perhatikan di sini bahawa anda boleh sebenarnya menentukan dalam laluan 824 00:43:57,702 --> 00:44:00,650 kaedah permintaan yang anda hendak menerima, 825 00:44:00,650 --> 00:44:04,770 dan sebagainya di sini, saya nyatakan bahawa saya hanya mahu menerima kaedah Post. 826 00:44:04,770 --> 00:44:09,800 Jadi, jika saya benar-benar cuba untuk melawat halaman secara langsung, yang menggunakan permintaan GET, 827 00:44:09,800 --> 00:44:11,700 ia akan memberitahu saya "Kaedah tidak dibenarkan." 828 00:44:11,700 --> 00:44:15,840 >> Dan sebagainya, anda mempunyai laman, jenis seperti halaman ini mencipta, yang saya hanya 829 00:44:15,840 --> 00:44:20,192 benar-benar menggunakan sebagai satu cara untuk borang untuk dikemukakan, 830 00:44:20,192 --> 00:44:22,900 anda boleh menentukan bahawa anda tidak mahu orang ramai untuk dapat pergi ke sana 831 00:44:22,900 --> 00:44:25,650 secara langsung melalui permintaan GET, atau jika anda tidak mahu, 832 00:44:25,650 --> 00:44:28,580 atas sebab tertentu, permintaan pos, anda hanya boleh menentukan DAPATKAN sini, 833 00:44:28,580 --> 00:44:32,720 tetapi dalam contoh ini, kita hanya mahu permintaan Post untuk keluar. 834 00:44:32,720 --> 00:44:38,700 >> Jadi, apabila create_post dipanggil, apabila kita melawat yang melalui permintaan Post, 835 00:44:38,700 --> 00:44:43,600 setiap kali anda pergi ke tertentu laluan, ada objek permintaan ini, 836 00:44:43,600 --> 00:44:46,640 dan kami terpaksa mengimport permintaan di bahagian paling atas, 837 00:44:46,640 --> 00:44:49,640 tetapi ada permintaan ini objek yang mendapat diluluskan pada, 838 00:44:49,640 --> 00:44:53,210 dan anda boleh mengakses data borang, yang akan secara automatik mendapatkan diisi 839 00:44:53,210 --> 00:44:55,070 apabila anda menghantar permintaan daripada borang. 840 00:44:55,070 --> 00:44:56,990 >> Dan kemudian, apa yang saya fikir adalah benar-benar sejuk, adalah 841 00:44:56,990 --> 00:45:02,840 bahawa objek borang untuk mendapat lulus dalam, hanyalah kamus Python yang 842 00:45:02,840 --> 00:45:10,560 mengandungi, jika anda access-- jadi di sini, mari saya tarik sehingga HTML sebelahnya, hanya 843 00:45:10,560 --> 00:45:17,670 supaya anda boleh mempunyai yang sebagai rujukan, ya, jadi 844 00:45:17,670 --> 00:45:21,060 nama-nama yang kita nyatakan di sini bagi bidang-bidang yang berbeza, jadi 845 00:45:21,060 --> 00:45:23,900 tajuk dan teks, kita kemudian hanya menggunakan orang-orang di sini 846 00:45:23,900 --> 00:45:27,110 sebagai indeks ke dalam data bentuk. 847 00:45:27,110 --> 00:45:28,950 Jadi itulah super mudah. 848 00:45:28,950 --> 00:45:33,320 >> Sebab itu kita panggil post.create, yang akan mewujudkan dan secara automatik memasukkan 849 00:45:33,320 --> 00:45:36,850 ini objek pos baru ke dalam pangkalan data. 850 00:45:36,850 --> 00:45:40,690 Dan saya rasa ini mewujudkan fungsi di sini adalah satu contoh yang benar-benar sejuk bagaimana 851 00:45:40,690 --> 00:45:44,900 kuat Flask ini dan bekerja dengan ini, kerana jika anda telah melakukan sesuatu yang 852 00:45:44,900 --> 00:45:48,660 dalam PHP, anda mungkin perlu melakukan banyak validasi, 853 00:45:48,660 --> 00:45:51,730 anda akan mempunyai untuk kemudian mewujudkan sambungan pangkalan data, 854 00:45:51,730 --> 00:45:55,210 anda akan mempunyai untuk kemudian melaksanakan Pertanyaan SQL, 855 00:45:55,210 --> 00:45:59,550 tetapi di sini kita hanya perlu ini bagus post.create, yang kita boleh kemudian hanya 856 00:45:59,550 --> 00:46:01,520 mendapatkan maklumat daripada objek permintaan itu, 857 00:46:01,520 --> 00:46:05,370 dan kemudian lulus ia ke dalam yang baru hantar bahawa kita mencipta. 858 00:46:05,370 --> 00:46:07,850 >> Dan kemudian, yang terakhir perkara yang kita mahu lakukan, 859 00:46:07,850 --> 00:46:09,630 ialah untuk menyalurkan semula kembali pengguna ke rumah. 860 00:46:09,630 --> 00:46:13,020 Dan supaya kita menggunakan ini Flask mengarahkan fungsi. 861 00:46:13,020 --> 00:46:17,770 Dan sesuatu yang kita tidak melihat sebelum ini, adalah fungsi URL ini. 862 00:46:17,770 --> 00:46:21,970 Jadi URL untuk membolehkan fungsi anda lulus dalam sebenarnya nama 863 00:46:21,970 --> 00:46:26,090 sesuatu fungsi kod Python anda, dan bukan laluan yang tertentu 864 00:46:26,090 --> 00:46:26,720 bahawa itu di. 865 00:46:26,720 --> 00:46:32,107 >> Jadi saya boleh mempunyai hanya sebagai mudah diarahkan pengguna untuk mengurangkan, 866 00:46:32,107 --> 00:46:37,050 yang akan menghantar kembali ke rumah, tetapi menggunakan URL untuk fungsi bagus, 867 00:46:37,050 --> 00:46:39,990 kerana jika anda menukar lokasi di mana perkara-perkara yang, 868 00:46:39,990 --> 00:46:44,080 jadi mari kita mengatakan bahawa saya menukar rumah untuk berada di / rumah sebaliknya, 869 00:46:44,080 --> 00:46:47,040 ini masih lagi kemudian kembali / rumah, kerana sebenarnya pergi dan memandang ke atas 870 00:46:47,040 --> 00:46:50,770 nama fungsi, dan ia akan memberikan anda menyokong URL yang untuk itu. 871 00:46:50,770 --> 00:46:52,490 >> Jadi, jenis pada andaian bahawa anda 872 00:46:52,490 --> 00:46:55,489 lebih cenderung untuk menukar mana perkara-perkara adalah, daripada nama-nama fungsi. 873 00:46:55,489 --> 00:46:58,840 Anda boleh menggunakan ini benar-benar URL yang baik untuk fungsi. 874 00:46:58,840 --> 00:47:02,470 Dan satu perkara yang perlu diberi perhatian yang sedikit rumit, 875 00:47:02,470 --> 00:47:05,750 adalah bahawa anda fikir anda boleh hanya memanggil mengarahkan pada URL untuk, 876 00:47:05,750 --> 00:47:10,600 tetapi sebenarnya semua laluan mempunyai untuk kembali beberapa jenis teks dan HTML, 877 00:47:10,600 --> 00:47:14,360 supaya anda sebenarnya perlu kembali panggilan peralihan. 878 00:47:14,360 --> 00:47:18,379 Jika tidak, anda akan mendapat sesuatu tidak sah tentang tidak kembali rentetan, 879 00:47:18,379 --> 00:47:21,420 kerana semua ini perlu kembali HTML yang anda benar-benar mahu untuk memberi. 880 00:47:21,420 --> 00:47:26,980 >> Dan sebagainya, yang kamu berdoa peralihan, ia pelencongan anda ke halaman, 881 00:47:26,980 --> 00:47:30,270 tetapi ia sebenarnya mengembalikan HTML anda perlu melaksanakan peralihan itu. 882 00:47:30,270 --> 00:47:34,430 883 00:47:34,430 --> 00:47:37,110 Kembali ke laman utama. 884 00:47:37,110 --> 00:47:39,200 Oleh itu, kita mempunyai kedua-dua pandangan yang berbeza. 885 00:47:39,200 --> 00:47:40,132 Kami mempunyai pandangan rumah. 886 00:47:40,132 --> 00:47:41,590 Atau, saya rasa saya tidak mengatakan template. 887 00:47:41,590 --> 00:47:44,190 Kami mempunyai dua template, Templat rumah yang 888 00:47:44,190 --> 00:47:48,500 memaparkan semua jawatan kami, dan maka kita mempunyai perkara iklan ini, 889 00:47:48,500 --> 00:47:52,970 dan apabila anda klik jawatan itu, ia pergi ke laluan baru dalam Flask, 890 00:47:52,970 --> 00:47:55,920 tetapi laluan yang tidak semestinya mempunyai template yang sepadan. 891 00:47:55,920 --> 00:47:59,290 892 00:47:59,290 --> 00:48:01,560 Anda tidak perlu melihat apa-apa, tetapi anda masih boleh 893 00:48:01,560 --> 00:48:04,090 mempunyai kerja-kerja ini akan di belakang tabir. 894 00:48:04,090 --> 00:48:07,450 Dan kemudian anda diarahkan semula belakang untuk halaman rumah. 895 00:48:07,450 --> 00:48:12,230 Dan pasti, ia adalah mudah untuk bekerja dalam beberapa CSS lebih bagus ke dalam template 896 00:48:12,230 --> 00:48:15,580 dan menjadikannya kelihatan lebih bagus, tetapi semua logik utama 897 00:48:15,580 --> 00:48:18,590 ada dalam Python. 898 00:48:18,590 --> 00:48:20,020 >> Apa-apa soalan tentang contoh itu? 899 00:48:20,020 --> 00:48:22,760 Saya tahu ada banyak perkara yang berbeza berlaku di sana, 900 00:48:22,760 --> 00:48:25,341 banyak perkara yang kita tidak melihat sebelum ini, tetapi seperti apa-apa. 901 00:48:25,341 --> 00:48:25,840 Yeah. 902 00:48:25,840 --> 00:48:28,346 >> PENONTON 1: Adakah anda mempunyai berbuat apa-apa khas untuk gosok data yang ada 903 00:48:28,346 --> 00:48:29,600 datang dari borang ini? 904 00:48:29,600 --> 00:48:31,109 Saya perhatikan anda hanya berkata "buat," 905 00:48:31,109 --> 00:48:33,900 EZRA Zigmond: Ya, supaya sebenarnya, itu adalah satu titik benar-benar baik. 906 00:48:33,900 --> 00:48:36,350 Jadi persoalannya adalah, adakah anda perlu menyemak dan memastikan 907 00:48:36,350 --> 00:48:39,190 bahawa data adalah sah, dan melakukan apa-apa jenis menyental 908 00:48:39,190 --> 00:48:41,840 memastikan bahawa ia adalah sah, kerana seperti yang anda boleh lihat di sini, 909 00:48:41,840 --> 00:48:42,660 Saya tidak melakukan itu. 910 00:48:42,660 --> 00:48:48,140 Jadi mari kita lihat apa yang berlaku jika saya menyiarkan sesuatu kosong. 911 00:48:48,140 --> 00:48:51,190 Jadi, ia akan benar-benar hanya membuat jawatan kosong dan mengisi DateTime itu. 912 00:48:51,190 --> 00:48:55,990 >> Jadi pada hakikatnya, anda akan mungkin mahu melakukan sesuatu seperti, 913 00:48:55,990 --> 00:49:04,749 mungkin menentukan jika tajuk adalah sama dengan rentetan kosong, maka tidak melakukannya. 914 00:49:04,749 --> 00:49:07,290 Atau, hanya melakukannya jika tajuk adalah tidak sama dengan rentetan kosong. 915 00:49:07,290 --> 00:49:10,330 Oleh itu, ia tidak benar-benar secara automatik menjaga menyental yang 916 00:49:10,330 --> 00:49:12,820 untuk anda, jadi anda masih perlu untuk berbuat demikian. 917 00:49:12,820 --> 00:49:14,330 Ya, soalan yang baik. 918 00:49:14,330 --> 00:49:18,497 >> PENONTON 2: Adakah ia scrub untuk suntikan sekuel? 919 00:49:18,497 --> 00:49:19,890 Adakah awak tahu? 920 00:49:19,890 --> 00:49:22,830 >> EZRA Zigmond: Mudah-mudahan, peewee adakah itu. 921 00:49:22,830 --> 00:49:25,830 Saya rasa ia pasti akan menjadi cantik perpustakaan buruk jika ia tidak berbuat demikian. 922 00:49:25,830 --> 00:49:29,511 923 00:49:29,511 --> 00:49:32,690 Saya tidak tahu betul-betul. 924 00:49:32,690 --> 00:49:34,820 Saya perlu melihat query bahawa ia dihasilkan. 925 00:49:34,820 --> 00:49:38,980 Saya berfikir bahawa, jika saya menaip dalam blog post yang jenis kelihatan 926 00:49:38,980 --> 00:49:46,370 seperti serangan suntikan SQL, sesuatu seperti ini, jika ini 927 00:49:46,370 --> 00:49:49,370 adalah seperti medan kata laluan atau sesuatu, anda mungkin melakukan sesuatu seperti ini. 928 00:49:49,370 --> 00:49:53,410 >> Saya berfikir bahawa akan masih mendapatkan beribu-diposkan, 929 00:49:53,410 --> 00:49:59,200 tetapi saya berfikir bahawa peewee tidak melakukan semacam menyental data 930 00:49:59,200 --> 00:50:01,680 sebelum ia benar-benar melaksanakannya. 931 00:50:01,680 --> 00:50:04,510 >> PENONTON 1: Itu medan teks adalah direka untuk mengambil teks biasa, bukan? 932 00:50:04,510 --> 00:50:05,710 >> EZRA Zigmond: Ya, ia adalah. 933 00:50:05,710 --> 00:50:06,465 Yeah. 934 00:50:06,465 --> 00:50:09,590 Jadi saya berfikir bahawa semua, jadi ini adalah tingkah laku yang betul, yang akan berbuat demikian, 935 00:50:09,590 --> 00:50:12,170 tetapi saya fikir peewee yang mudah-mudahan tidak melakukan 936 00:50:12,170 --> 00:50:13,780 beberapa jenis perlindungan pada akhir mereka. 937 00:50:13,780 --> 00:50:16,090 Dan jika anda mahu periksa itu, terdapat 938 00:50:16,090 --> 00:50:19,530 cara apabila anda menjana pertanyaan. 939 00:50:19,530 --> 00:50:22,622 supaya anda tidak perlu melaksanakannya secara langsung. 940 00:50:22,622 --> 00:50:24,330 Saya perlu mengambil melihat dokumentasi, 941 00:50:24,330 --> 00:50:27,930 tetapi anda sebenarnya boleh melihat SQL yang ia menghasilkan, 942 00:50:27,930 --> 00:50:30,840 dan kita lihat itu, serta memperbaiki memastikan bahawa ia melarikan diri sesuatu. 943 00:50:30,840 --> 00:50:33,700 >> Satu lagi sebab mengapa anda mungkin mahu melihat SQL 944 00:50:33,700 --> 00:50:37,920 peewee yang keluarkan, adalah jika perkara yang seolah-olah untuk pergi benar-benar perlahan-lahan, 945 00:50:37,920 --> 00:50:41,090 anda boleh melihat dan melihat apa yang ia sebenarnya melakukan, kerana ia kadang-kadang 946 00:50:41,090 --> 00:50:44,670 mudah untuk sengaja menambah dalam, cara anda menulis, 947 00:50:44,670 --> 00:50:47,880 anda secara tidak sengaja boleh memilikinya memilih keseluruhan pangkalan data yang pertama, 948 00:50:47,880 --> 00:50:50,230 dan kemudian melakukan operasi semacam pada itu, apabila anda benar-benar 949 00:50:50,230 --> 00:50:51,320 bertujuan untuk memilih subset. 950 00:50:51,320 --> 00:50:53,560 >> Justeru, jika perkara yang tidak agak berjalan dengan betul, 951 00:50:53,560 --> 00:50:57,300 ia baik untuk mengambil lihat di atas permintaan yang sebenarnya mendapat dijana. 952 00:50:57,300 --> 00:50:57,800 Yeah. 953 00:50:57,800 --> 00:51:02,100 >> PENONTON 2: Apabila anda mula-mula bermula, anda masukkan ke dalam pelabuhan itu sebagai 5000. 954 00:51:02,100 --> 00:51:02,904 >> EZRA Zigmond: Ya. 955 00:51:02,904 --> 00:51:06,070 PENONTON 2: Adakah lalai dengan peewee, atau adalah bahawa sesuatu yang boleh berubah? 956 00:51:06,070 --> 00:51:10,870 EZRA Zigmond: Ya, jadi pelabuhan adalah lalai dengan Flask. 957 00:51:10,870 --> 00:51:13,061 Jika anda berjalan tanpa menyatakan apa-apa, 958 00:51:13,061 --> 00:51:14,310 ia secara automatik akan berbuat demikian. 959 00:51:14,310 --> 00:51:16,060 Saya percaya, saya perlu periksa ini, 960 00:51:16,060 --> 00:51:19,130 tetapi anda boleh menentukan bahawa dalam app.run itu, Saya rasa anda boleh lakukan sesuatu seperti, 961 00:51:19,130 --> 00:51:19,629 port = 8080. 962 00:51:19,629 --> 00:51:22,375 963 00:51:22,375 --> 00:51:23,750 Mari kita memberikan yang cuba sangat cepat. 964 00:51:23,750 --> 00:51:29,100 965 00:51:29,100 --> 00:51:32,230 Ya, jadi anda hanya boleh menentukan port = 8080, dan ia akan berjalan di sana, 966 00:51:32,230 --> 00:51:36,130 yang saya fikir, jika anda mahu untuk menjalankannya pada IDE, saya tidak mencuba ini, 967 00:51:36,130 --> 00:51:38,527 tetapi saya berfikir bahawa jika anda berlari pada port 8080, 968 00:51:38,527 --> 00:51:40,360 anda mungkin akan dapat untuk mengakses pelayan, 969 00:51:40,360 --> 00:51:41,870 seperti anda adalah untuk laman web. 970 00:51:41,870 --> 00:51:44,390 >> Ya, tetapi ia mudah untuk menukar bahawa jika anda 971 00:51:44,390 --> 00:51:48,540 mempunyai apa-apa jenis seperti pelabuhan-penghantaran perkara yang anda perlu lakukan. 972 00:51:48,540 --> 00:51:50,410 >> Apa-apa soalan lain? 973 00:51:50,410 --> 00:51:50,916 Ya? 974 00:51:50,916 --> 00:51:53,416 PENONTON 1: Jadi, saya melihat dalam anda model itu, seperti yang anda nyatakan, 975 00:51:53,416 --> 00:51:55,647 anda perlu menentukan pangkalan data bagi setiap objek. 976 00:51:55,647 --> 00:51:58,105 Adakah anda kebetulan tahu, adakah yang membuatnya sangat mudah jika anda 977 00:51:58,105 --> 00:52:03,210 mempunyai banyak pangkalan data SQLite anda hendak gunakan untuk satu aplikasi web tunggal, 978 00:52:03,210 --> 00:52:07,210 bahawa anda hanya boleh menentukan sekumpulan orang yang berbeza dalam model anda? 979 00:52:07,210 --> 00:52:11,620 >> EZRA Zigmond: Ya, saya membuka bahawa sehingga sangat cepat. 980 00:52:11,620 --> 00:52:17,570 Jadi, anda katakan, jika anda ingin mempunyai sekumpulan sesuatu yang berbeza, mungkin 981 00:52:17,570 --> 00:52:22,670 suka dan pelajar, bagi sesetengah sebab, sesuatu seperti itu? 982 00:52:22,670 --> 00:52:26,870 Ya, jadi saya berfikir bahawa anda masih, setiap model 983 00:52:26,870 --> 00:52:30,652 perlu masih mempunyai hanya satu pangkalan data yang diberikan kepadanya, 984 00:52:30,652 --> 00:52:32,610 tetapi jika anda mahu mempunyai model yang berbeza yang 985 00:52:32,610 --> 00:52:35,818 telah objek pangkalan data yang berbeza yang diberikan kepadanya, anda pasti boleh melakukannya. 986 00:52:35,818 --> 00:52:43,070 Jadi, jika saya mencipta yang baru, sesuatu seperti ini, 987 00:52:43,070 --> 00:52:47,000 dan sekarang ini adalah pelajar yang kelihatan aneh seperti blog post, 988 00:52:47,000 --> 00:52:49,390 Saya boleh menentukan bahawa pangkalan data adalah sama dengan db_2 sini. 989 00:52:49,390 --> 00:52:51,390 Jadi, saya fikir itulah cara utama anda boleh berbuat demikian. 990 00:52:51,390 --> 00:52:54,560 991 00:52:54,560 --> 00:52:56,200 >> Sejuk. 992 00:52:56,200 --> 00:52:58,410 Apa-apa soalan lain? 993 00:52:58,410 --> 00:53:02,170 >> Jadi hanya untuk selesaikan sedikit sedikit, berikut adalah beberapa sumber, 994 00:53:02,170 --> 00:53:06,030 dan slaid ini akan disiarkan dalam talian jadi anda boleh pergi ke pautan ini. 995 00:53:06,030 --> 00:53:08,500 Sumber-sumber terbaik adalah benar-benar dokumentasi untuk Flask 996 00:53:08,500 --> 00:53:09,930 dan PEEWEE diri mereka sendiri. 997 00:53:09,930 --> 00:53:12,940 Mereka yang ditulis dengan baik, saya fikir. 998 00:53:12,940 --> 00:53:18,180 Jadi, laman web Flask adalah di sini, dan mereka mempunyai tutorial mula pantas yang 999 00:53:18,180 --> 00:53:20,710 akan berjalan melalui sama perkara yang perlu apa yang saya berjalan melalui, 1000 00:53:20,710 --> 00:53:23,560 tetapi jika anda mahu apa-apa jenis kajian satu perkara yang saya pergi ke sana, 1001 00:53:23,560 --> 00:53:26,200 atau anda berfikir bahawa saya menjelaskan sesuatu dengan cara yang mengelirukan, 1002 00:53:26,200 --> 00:53:28,390 mereka akan mempunyai contoh-contoh serupa di sana. 1003 00:53:28,390 --> 00:53:31,570 >> Peewee mempunyai dokumentasi, dan mereka mempunyai tutorial mula pantas 1004 00:53:31,570 --> 00:53:34,650 yang pergi ke atas parameter utama yang akan anda ingin gunakan. 1005 00:53:34,650 --> 00:53:38,900 Jadi, perkara yang saya bercakap mengenai dengan yang unik, dan menyatakan mungkir, 1006 00:53:38,900 --> 00:53:42,710 macam yang berbeza dari bidang yang anda boleh menggunakan, mereka semua akan berada di sana. 1007 00:53:42,710 --> 00:53:44,690 >> Juga, jika anda mempunyai soalan mengenai peewee, 1008 00:53:44,690 --> 00:53:47,530 dan anda meletakkannya di StackOverflow, Lelaki yang membuat peewee sebenarnya 1009 00:53:47,530 --> 00:53:49,500 menyala dan jawapan mereka yang kadang-kadang. 1010 00:53:49,500 --> 00:53:53,200 Jika anda mempunyai soalan, mudah-mudahan dia akan dapat menjawabnya, 1011 00:53:53,200 --> 00:53:54,867 sebab ia telah menulis segala-galanya. 1012 00:53:54,867 --> 00:53:56,700 Saya rasa itu adalah segala-galanya Saya mahu menutup. 1013 00:53:56,700 --> 00:53:58,930 Terima kasih kerana keluar. 1014 00:53:58,930 --> 00:54:02,688