1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:03,227 [MÜZİK OYUN] 3 00:00:03,227 --> 00:00:04,705 4 00:00:04,705 --> 00:00:05,830 EZRA Zigmond: Merhaba, herkes. 5 00:00:05,830 --> 00:00:08,020 Bugün geldiğiniz için teşekkür ederiz. 6 00:00:08,020 --> 00:00:10,660 Bu seminer "Python Web Flask ile Uygulamalar. " 7 00:00:10,660 --> 00:00:14,510 >> Yani, ben konuşmak için gidiyorum neden biraz 8 00:00:14,510 --> 00:00:17,400 Yapmak Flask kullanmak isteyebilirsiniz Python ile web uygulamaları olarak karşı 9 00:00:17,400 --> 00:00:21,556 Orada diğer bazı çerçeveler, benzerlerine En iyi bilinen Django. 10 00:00:21,556 --> 00:00:24,330 Altyazı olduğunu "ve bir şey peewee, " 11 00:00:24,330 --> 00:00:27,250 Biz nasıl hakkında konuşmak için gidiyoruz SQL veritabanları ile etkileşim. 12 00:00:27,250 --> 00:00:29,610 O gerçekten güzel yapar. 13 00:00:29,610 --> 00:00:32,390 >> Yani, burada sadece hızlı bir yıkık Ben üzerinden gitmek istiyorum ne. 14 00:00:32,390 --> 00:00:35,520 Yani, ilk olarak, sadece bir slayt Bu, hızlı başlangıç ​​olacak 15 00:00:35,520 --> 00:00:38,530 hangi her şeyi almak için nasıl Bilgisayarınızda kurmak. 16 00:00:38,530 --> 00:00:41,760 Ben gösteren olacağım benim yerel Mac makinede bu, 17 00:00:41,760 --> 00:00:45,220 işte sırf ben yaptım nerede daha önce, ben onunla en rahat olduğum 18 00:00:45,220 --> 00:00:48,510 ama bu kesinlikle CD50 IDE mümkün. 19 00:00:48,510 --> 00:00:52,050 >> Yani, bundan sonra, ben istiyorum , Flask ne tanıtmak 20 00:00:52,050 --> 00:00:55,089 ve sizi ikna neden gerektiğini ilk etapta kullanabilirsiniz. 21 00:00:55,089 --> 00:00:56,880 Sonra, ben hızlı vereceğim Senin ne örnek 22 00:00:56,880 --> 00:01:00,550 Flask, hızlı bir örnekte yapabilirsiniz Eğer peewee içinde neler yapabileceğini, 23 00:01:00,550 --> 00:01:05,010 ve sonra ben size daha gösterecektir tam bir örnek uygulama 24 00:01:05,010 --> 00:01:07,520 Ben biz bir araya koymak Birlikte yürüyelim olabilir. 25 00:01:07,520 --> 00:01:10,040 >> Sonra son olarak, Geçen slayt, ben 26 00:01:10,040 --> 00:01:12,730 bakmak bazı kaynaklar Daha fazla bilgi için çevrimiçi olarak. 27 00:01:12,730 --> 00:01:15,560 Bu, tam değildir Flask nasıl kullanılacağına ilişkin öğretici. 28 00:01:15,560 --> 00:01:18,140 Ve ben ayrılmak umuyoruz sorularınız için biraz zaman. 29 00:01:18,140 --> 00:01:21,050 Herkes sadece yerel izliyor gibi, ortada haykırmak 30 00:01:21,050 --> 00:01:22,340 Eğer sorunuz varsa. 31 00:01:22,340 --> 00:01:27,150 >> Yani hızlı montaj malzeme, Eğer birlikte takip etmek istiyorsanız, 32 00:01:27,150 --> 00:01:29,240 veya bu almak istiyorsanız Kendi makinesinde, 33 00:01:29,240 --> 00:01:32,440 Python 2.7.10 kullanıyor gidiyorum. 34 00:01:32,440 --> 00:01:35,860 Flask ile çalışır Python 3, ama ben seviyorum 35 00:01:35,860 --> 00:01:38,660 var çünkü, Python 2 ile Bazı Python paketleri olduğunu 36 00:01:38,660 --> 00:01:40,910 Henüz 3 ile çalışmaz. 37 00:01:40,910 --> 00:01:44,800 Eğer pip kurduysanız, hangi Bir Python paketi yöneticisi, 38 00:01:44,800 --> 00:01:48,190 Python ise bence ya da daha büyük 2.7.9 eşit 39 00:01:48,190 --> 00:01:52,220 Eğer zaten yüklü, bu kadar Bu paketleri yüklemek için süper kolay. 40 00:01:52,220 --> 00:01:54,990 >> Sen pip kurarım edebilirsiniz Flask, Peewee yüklemek pip, 41 00:01:54,990 --> 00:01:58,600 genellikle sadece sudo çalıştırmak zorunda yani izinler işe söyledi. 42 00:01:58,600 --> 00:02:01,080 Ve, kullandığınız takdirde Süper Python eski sürümü, 43 00:02:01,080 --> 00:02:05,100 Ben, senin Python güncellemenizi öneririz veya EasyInstall kullanarak pip yükleyin. 44 00:02:05,100 --> 00:02:09,180 45 00:02:09,180 --> 00:02:11,120 Yani, bir sonraki soru, Flask nedir? 46 00:02:11,120 --> 00:02:13,280 Ve ben ilk, tahmin makul bir soru merak ettim 47 00:02:13,280 --> 00:02:15,585 çok uzun bir süre için, bir web uygulaması nedir? 48 00:02:15,585 --> 00:02:17,960 Bir kelime Çünkü ben Bir sürü etrafında atılır düşünüyorum 49 00:02:17,960 --> 00:02:19,240 Ben gerçekten bilmiyordum. 50 00:02:19,240 --> 00:02:22,340 Ve ben en iyi olduğunu düşünüyorum Bir web uygulaması ne örneği 51 00:02:22,340 --> 00:02:26,960 Gerçekten CS50 Finans olduğunu o, gerçekten sadece bir web sitesi değil 52 00:02:26,960 --> 00:02:29,320 ama bu bir şey olduğunu tür etkileşim olabilir. 53 00:02:29,320 --> 00:02:31,736 Kullanıcı hesapları vardır ve Farklı şeyler her türlü. 54 00:02:31,736 --> 00:02:35,010 Peki, tam olarak nerede çizmek Bir web sitesi nedir arasındaki çizgi, 55 00:02:35,010 --> 00:02:38,780 ve bir web uygulaması, ne tür bir olduğunu keyfi, ama ben fikir sanırım, 56 00:02:38,780 --> 00:02:42,110 Bir web sitesi daha fazla şey ve yararlı bir uygulama var. 57 00:02:42,110 --> 00:02:46,081 >> Bu nedenle, şişenin bir çerçeve için Python kullanarak web uygulamaları yapma. 58 00:02:46,081 --> 00:02:48,330 Ve umarım, sonuna kadar Bu, seni ikna edecek 59 00:02:48,330 --> 00:02:52,210 Aslında bir şey yazabilirsiniz CS50 Finans gibi Python kullanarak hangi ben 60 00:02:52,210 --> 00:02:53,950 Şahsen, PHP çok daha iyi gibi. 61 00:02:53,950 --> 00:02:57,320 >> Yani, Flask, onlar diyoruz microframework, bu suretle, 62 00:02:57,320 --> 00:02:59,800 onlar çok demek basit ama genişletilebilir. 63 00:02:59,800 --> 00:03:02,980 Yani, bu, sadece neye ihtiyacınız vardır ancak daha fazla özellik istiyorsanız, 64 00:03:02,980 --> 00:03:04,522 o onları getirmek kolaydır. 65 00:03:04,522 --> 00:03:06,480 Ama sırf bir microframework, değil 66 00:03:06,480 --> 00:03:08,960 küçük projeler için sadece olduğunu anlamına gelir. 67 00:03:08,960 --> 00:03:12,590 Ben diyor burada bir bağlantı var Obama 2012 yılında Flask kullanılan 68 00:03:12,590 --> 00:03:14,410 Onun kampanya için Web sitesi, hangi umarım 69 00:03:14,410 --> 00:03:16,937 bir ciro şeydir. 70 00:03:16,937 --> 00:03:18,770 Ama bir şey ben Gerçekten Flask hakkında gibi 71 00:03:18,770 --> 00:03:22,401 gerçekten yapmaz olmasıdır Sizin için kararların herhangi bir tür. 72 00:03:22,401 --> 00:03:24,150 Sadece biz çünkü web uygulamaları hakkında konuşurken, 73 00:03:24,150 --> 00:03:26,940 Ben Ruby on karşılaştırmak zorunda Raylar ve Django her ikisi de 74 00:03:26,940 --> 00:03:30,450 Büyük çerçeveler, ama ikisi de varsayımlar yapmak 75 00:03:30,450 --> 00:03:33,600 hakkında nasıl istiyorum veritabanları ile etkileşim, 76 00:03:33,600 --> 00:03:36,900 nasıl sizin yanınızdaki sunmak istiyorum Gösterim ve onlar kesinlikle konum 77 00:03:36,900 --> 00:03:38,850 Bunun iyi yönleri. 78 00:03:38,850 --> 00:03:41,490 >> Örneğin, Ruby on Rails için Bu etkin kayıt sistemine sahiptir, 79 00:03:41,490 --> 00:03:43,100 hangi bir gerçekten güzel verilerle etkileşim yolu 80 00:03:43,100 --> 00:03:45,960 ancak Ruby on kullanmak istiyorsanız Raylar, sıralama bu haline bağlı ediyoruz. 81 00:03:45,960 --> 00:03:47,835 Ama Flask, ben olacak şekilde peewee ile göstermek, 82 00:03:47,835 --> 00:03:49,830 ne olursa olsun sıralama kullanabilirsiniz veritabanının istediğiniz, 83 00:03:49,830 --> 00:03:53,980 ve sadece o indirebiliriz şişe içine bir uzantısı olarak. 84 00:03:53,980 --> 00:03:56,350 >> Böylece neden gerçekten Flask gibi, o işte 85 00:03:56,350 --> 00:04:01,170 Sizin için varsayımlar yapmaz şeyler dayalı gerçekten gerek yok. 86 00:04:01,170 --> 00:04:04,440 >> Peki, neden Flask kullanmalıyım? 87 00:04:04,440 --> 00:04:08,230 Avantajları sadece vardır Gerçekten çekirdek özelliklere sahiptir 88 00:04:08,230 --> 00:04:09,420 yerleşik ihtiyacınız olduğunu. 89 00:04:09,420 --> 00:04:11,980 Peki, hakkında endişelenmenize gerek yok şeylerin bir sürü anlama 90 00:04:11,980 --> 00:04:13,175 Eğer gerçekten gerekmez. 91 00:04:13,175 --> 00:04:15,060 Sen endişelenmenize gerek gerek yok özellikleri kapatarak hakkında 92 00:04:15,060 --> 00:04:16,620 Eğer gerçekten gerekmez. 93 00:04:16,620 --> 00:04:21,082 >> Bahsettiğim gibi, bu süper bulunuyor şeylerin uzantıları eklemek çok kolay 94 00:04:21,082 --> 00:04:21,790 İhtiyacınız emin. 95 00:04:21,790 --> 00:04:24,700 Bazıları, Flask vardır Bunun için kendi destek. 96 00:04:24,700 --> 00:04:28,230 Yani Flask adı verilen bir şey var O yönetici aynaları admin 97 00:04:28,230 --> 00:04:32,060 Django sağlayan panel hangi size güzel bir görsel bir yol verir 98 00:04:32,060 --> 00:04:33,405 Web sitenizi yönetmek için. 99 00:04:33,405 --> 00:04:35,280 Fakat yine de, sen eğer basit bir şey yapma, 100 00:04:35,280 --> 00:04:39,550 muhtemelen büyük bir yönetici gerekmez Panel, bu yüzden o güzel süper olduğunu düşünüyorum. 101 00:04:39,550 --> 00:04:45,940 Ve dezavantajları, bu vardır Eğer kutunun dışında daha az güce sahip. 102 00:04:45,940 --> 00:04:49,660 Yani, ilk olarak Flask açtığınızda, ve Python programında, 103 00:04:49,660 --> 00:04:53,150 Sadece Flask gelen tip ithalat *, ya da her neyse, 104 00:04:53,150 --> 00:04:55,957 tam olarak tüm alamadım özellikleri isteyebilirsiniz. 105 00:04:55,957 --> 00:04:58,540 Ve böylece daha açıkça var istediğiniz özellikleri listeleyin. 106 00:04:58,540 --> 00:05:01,990 Yani bu bir dezavantaj, ama ben küçük web için inşa düşünüyorum 107 00:05:01,990 --> 00:05:04,782 I gibi uygulamalar göstermesi için gidiyorum Eğer, bu gerçekten bir sorun değil. 108 00:05:04,782 --> 00:05:07,281 Ve son şey nedir Bir yazım hatası olduğu demen gerekiyordu, 109 00:05:07,281 --> 00:05:10,240 daha az standart olmasıdır Flask nasıl kullanılacağı için sözleşmeler, 110 00:05:10,240 --> 00:05:12,400 gibi birçok değildir çünkü profesyonelce kullanan kişiler 111 00:05:12,400 --> 00:05:13,191 Django'ya karşılaştırdık. 112 00:05:13,191 --> 00:05:16,380 Yani, böyle bir şey bakarsanız, Django "nasıl x yapmalıyım", 113 00:05:16,380 --> 00:05:18,190 muhtemelen bulacaksınız. 114 00:05:18,190 --> 00:05:20,260 >> Iyi tasarım var kullanabileceğiniz desenler, 115 00:05:20,260 --> 00:05:22,660 ama Flask ile bu kadar çeşit kendi yol, 116 00:05:22,660 --> 00:05:24,850 sadece bir çünkü Oldukça küçük bir kütüphane. 117 00:05:24,850 --> 00:05:27,100 Yani olanlardır Dezavantajları, ama sanırım 118 00:05:27,100 --> 00:05:29,370 o hala kullanmak için iyi bir kütüphanesi var. 119 00:05:29,370 --> 00:05:31,909 >> Yani sadece sağ Flask içine atlamak edelim. 120 00:05:31,909 --> 00:05:34,200 Bu kesinlikle gidiş değil Tam bir öğretici olmak, 121 00:05:34,200 --> 00:05:37,480 ama bu size bir fikir vermek için var şeyleri yapısı nasıl, 122 00:05:37,480 --> 00:05:40,790 ve böylece gidiyor rahat hissediyorum kapalı ve belgelere bakarak 123 00:05:40,790 --> 00:05:42,570 ve daha fazla bilgi edinmek. 124 00:05:42,570 --> 00:05:48,500 >> Yani, bana bir gerçekten açalım İlk başta basit bir örnek, 125 00:05:48,500 --> 00:05:50,737 ve sen ne olduğunu göstermek gibi görünüyor, sonra yaparız 126 00:05:50,737 --> 00:05:52,070 biraz daha yıkmak. 127 00:05:52,070 --> 00:05:56,160 >> Yani bu burada beni Çalışıyorsa başlayalım. 128 00:05:56,160 --> 00:06:06,800 129 00:06:06,800 --> 00:06:09,750 Yani, ben şimdi benim uygulaması çalışırken. 130 00:06:09,750 --> 00:06:15,910 Ben Safari açmak için gidiyor ve ben benim yerel ana bilgisayar üzerinde çalışıyor. 131 00:06:15,910 --> 00:06:19,360 Yani sadece bu büyük yapmak için gidiyorum. 132 00:06:19,360 --> 00:06:23,960 Ancak localhost: 5000 133 00:06:23,960 --> 00:06:27,650 >> Ve böylece, şu anda, bütün bu yapar , sen web sitesini ziyaret ettiğinizde, 134 00:06:27,650 --> 00:06:31,490 o "Hello Flask" yazdırır hangi süper kullanışlı değil 135 00:06:31,490 --> 00:06:34,630 ama ben o serin olduğunu düşünüyorum Burada bu küçük dosyada, 136 00:06:34,630 --> 00:06:37,390 Biz web sunucusu çalıştırıyorum O bir şey yazdırıyor. 137 00:06:37,390 --> 00:06:40,500 Yani, aslında bakalım Bir saniye kodu, 138 00:06:40,500 --> 00:06:43,080 ve biraz yıkmak. 139 00:06:43,080 --> 00:06:45,260 Boyutu burada herkes için iyi midir? 140 00:06:45,260 --> 00:06:51,560 >> Yani, umarım, sen biraz konum Python kullanarak rahat. 141 00:06:51,560 --> 00:06:55,820 Ben bakabilirsiniz varsayarak yaşıyorum Python ve bunun üzerinden okuyun. 142 00:06:55,820 --> 00:06:59,290 Hakkında herhangi bir sorunuz varsa şey, ben de o üzerinden gidebilirsiniz. 143 00:06:59,290 --> 00:07:03,974 >> Yani ilk satırı Flask gelen ise, Biz sermaye ile, Flask ithal "F" 144 00:07:03,974 --> 00:07:06,140 hangi tüm çeşit İhtiyacınız temel özellikleri. 145 00:07:06,140 --> 00:07:08,890 Ne zaman yazıyoruz Bir dosya kullanılarak Flask, 146 00:07:08,890 --> 00:07:12,120 Bunu almak istediğiniz gidiyoruz, tüm ana şeyler vardır çünkü. 147 00:07:12,120 --> 00:07:15,400 Yaptığımız sonraki şey, biz ise Sadece, bu işlev Flask, çağrı 148 00:07:15,400 --> 00:07:19,270 Bir uygulama nesnesi oluşturmak, ve sen kadar Her zaman bunu yapmak istiyorum olacak. 149 00:07:19,270 --> 00:07:25,960 >> Ve sonra, aşağı atlama Alt çabuk, bu bölümü burada olduğunu 150 00:07:25,960 --> 00:07:28,760 konumundadır 'if_name _ == "_ main_"' Python sözleşmenin tür. 151 00:07:28,760 --> 00:07:32,750 Yani bu sadece eğer yürüteceğini doğrudan Python kullanarak bu dosyayı çalıştırın. 152 00:07:32,750 --> 00:07:36,040 Sonra, biz hangi irade, app.run çağrı Aslında gidiş uygulamasını başlatmak. 153 00:07:36,040 --> 00:07:39,570 >> Yani, bu ana yapı olduğunu Eğer herhangi bir Matara uygulamasında gerekecek 154 00:07:39,570 --> 00:07:48,550 Eğer bu olacak olan app = Flask (_NAME_) ve ardından app.run. 155 00:07:48,550 --> 00:07:54,940 >> Yani, iki şey var Burada biz yolları dediğimiz vardır. 156 00:07:54,940 --> 00:07:57,150 Yani, hakkında konuşalım Biraz daha yönlendirme. 157 00:07:57,150 --> 00:07:58,430 Ben geri slayt gidersiniz. 158 00:07:58,430 --> 00:08:02,540 >> Yani en temel Flask konsept yönlendirme olduğunu. 159 00:08:02,540 --> 00:08:06,750 Ve bu fikir sizi Python işlevleri atamak 160 00:08:06,750 --> 00:08:11,280 Özellikle adreslere web sayfasında. 161 00:08:11,280 --> 00:08:13,930 Peki, istediğiniz zaman Yeni bir rota oluşturmak için, 162 00:08:13,930 --> 00:08:16,500 Bu @ app.route kullanmak Fonksiyon dekoratör. 163 00:08:16,500 --> 00:08:19,770 Yani, aşina eğer vardır Python fonksiyon dekoratörler, 164 00:08:19,770 --> 00:08:24,160 Bu kavram olduğunu Eğer bir işlevi almak sağlar 165 00:08:24,160 --> 00:08:26,800 ve başka bir şey ile onu çevreleyen. 166 00:08:26,800 --> 00:08:30,140 >> Yani gerçekten bu dekoratör ne, , bunun altındaki fonksiyon almasıdır 167 00:08:30,140 --> 00:08:33,409 ve daha fazla bilgi ekler ona, ama ne Flask aslında 168 00:08:33,409 --> 00:08:37,480 Bunun olmasına yapar süper değil önemli, ancak önemli olanın, 169 00:08:37,480 --> 00:08:43,640 Bu size, rota öncedir Daha sonra bu @ app.route koymak ve 170 00:08:43,640 --> 00:08:46,480 Rotanın adresi, yani eğik olduğunu ne 171 00:08:46,480 --> 00:08:48,360 Biz sadece web sayfasını açtığınızda gördüm. 172 00:08:48,360 --> 00:08:49,580 Yani Web Sitesini. 173 00:08:49,580 --> 00:08:51,037 Sadece çizgi yol var. 174 00:08:51,037 --> 00:08:52,370 Ve sonra bu işlevi var. 175 00:08:52,370 --> 00:08:54,453 Işlevin adı istersen olabilir. 176 00:08:54,453 --> 00:08:56,930 Mutlaka zorunda değildir rota ile yapmak zorundayız. 177 00:08:56,930 --> 00:08:59,440 Ve sonra, her türlü işlevin dönüş, 178 00:08:59,440 --> 00:09:01,730 işlevi bir dize dönmelidir. 179 00:09:01,730 --> 00:09:03,740 Ve bu dize can HTML ya da bir şey içermez 180 00:09:03,740 --> 00:09:06,920 ve bu ne alırsınız aslında HTML olarak web tarayıcınıza döndü 181 00:09:06,920 --> 00:09:08,200 ve o hale getirecektir. 182 00:09:08,200 --> 00:09:12,030 >> Yani bu aynı kodu Bu örnekten elde edilen oldu 183 00:09:12,030 --> 00:09:16,430 Ben sadece koştu, bu yüzden eğik ziyaret ettiğinizde, Bir Merhaba Dünya işlevi, çağıran 184 00:09:16,430 --> 00:09:20,470 Sadece bir dize Merhaba Flask döndürür ve o ekranda basılı alır. 185 00:09:20,470 --> 00:09:27,290 >> Yani başka bir örnek var, hangi, ne zaman merhaba / ziyaret 186 00:09:27,290 --> 00:09:30,370 o Alo Word yazdırır hangi Aslında, Hello World demeliyim, 187 00:09:30,370 --> 00:09:32,010 ama en bu kasıtlı olduğunu iddia edelim. 188 00:09:32,010 --> 00:09:35,140 Yani gerçek hızlı olduğunu yukarı çekin izin. 189 00:09:35,140 --> 00:09:41,290 >> Yani merhaba / localhost giderseniz, Şimdi başka bir şey basacaktır. 190 00:09:41,290 --> 00:09:45,680 Yani bu nasıl sadece hızlı bir örnek Eğer iki farklı güzergah oluşturabilirsiniz. 191 00:09:45,680 --> 00:09:50,630 >> Yani, şimdiye kadar bu süper kullanışlı değil Yapabileceğiniz bir sürü değil, 192 00:09:50,630 --> 00:09:55,360 Sadece tüm bu yapabilirdi Farklı HTML sayfaları sahip 193 00:09:55,360 --> 00:09:58,000 ve belirli bir ziyaret ettiğinizde sayfa sadece sayfa yükler. 194 00:09:58,000 --> 00:10:00,864 O yüzden biraz daha görelim Yapabileceğiniz yararlı şeyler. 195 00:10:00,864 --> 00:10:03,780 Yani, bir şey olabileceğini I çekilmiş örnekte fark 196 00:10:03,780 --> 00:10:07,160 yukarı, ben app.run vardı ki (debug = true). 197 00:10:07,160 --> 00:10:09,580 Ve böylece, bu ne ayıklama argümanı, yapar 198 00:10:09,580 --> 00:10:14,600 Eğer web sunucusu çalıştırmak zaman ki Eğer uygulamanızda olduğunuzda, 199 00:10:14,600 --> 00:10:18,100 Bir dosyayı değiştirirseniz, o olacak sunucuyu otomatik olarak yeniden. 200 00:10:18,100 --> 00:10:21,160 >> Ve böylece aslında gerek yok süper yararlı yeniden Python. 201 00:10:21,160 --> 00:10:24,020 Bunu gösterebilir. 202 00:10:24,020 --> 00:10:26,960 Benim kodu çekelim İçinde yazım hatası ile, 203 00:10:26,960 --> 00:10:30,420 ve bu yazım hatası var konulmuştur savundukları kasten öğretici amaçlar için. 204 00:10:30,420 --> 00:10:31,625 Yani bu geri ekleyelim. 205 00:10:31,625 --> 00:10:33,140 Yani şimdi Hello World diyor. 206 00:10:33,140 --> 00:10:34,410 Onu kurtaracak. 207 00:10:34,410 --> 00:10:36,540 Ve biz geri çekerseniz Terminal, sen olacak 208 00:10:36,540 --> 00:10:39,520 o yeniden başlatılmasını oluyor demek, Bir değişiklik algıladı, çünkü 209 00:10:39,520 --> 00:10:43,620 ve şimdi biz, bu sayfayı yeniden ne zaman Doğru şeyi basacaktır. 210 00:10:43,620 --> 00:10:45,630 >> Yani hata ayıklama bunun için süper yararlıdır. 211 00:10:45,630 --> 00:10:48,740 Ayrıca, herhangi birine sahipseniz Bir kaza tür, yani 212 00:10:48,740 --> 00:10:54,370 Beni bu uygulama kazasında yapalım alarak bir dize döndürür değil. 213 00:10:54,370 --> 00:10:57,540 Yani, sadece o var diyelim Herhangi bir nedenle hiçbiri döndürür. 214 00:10:57,540 --> 00:11:00,810 Ve sonra bu ziyaret ettiğinizde sayfa, sadece çökmesine, 215 00:11:00,810 --> 00:11:04,465 ancak sunucu, sadece o çökmez Aslında size süper kullanışlı geri verir 216 00:11:04,465 --> 00:11:06,490 Her şeyin iz yanlış gitti. 217 00:11:06,490 --> 00:11:10,050 Ve gerçekten ne güzel yani var Bu geri izleme herhangi bir aşamada, 218 00:11:10,050 --> 00:11:14,260 Eğer interaktif açmak olabilir Burada kabuk ve çeşit çıktı neler 219 00:11:14,260 --> 00:11:17,780 değişkenleri bakmak istiyorum. 220 00:11:17,780 --> 00:11:21,054 >> Ve böylece hata ayıklama gerçekten bulmaktan için yararlı 221 00:11:21,054 --> 00:11:23,470 ne oluyor senin Sunucu, yerine sadece görme 222 00:11:23,470 --> 00:11:28,201 500 dahili gibi PHP şey Süper faydasız sunucu hatası. 223 00:11:28,201 --> 00:11:30,700 Bir şey, farkında olmak Bu online sizin app koyarsanız 224 00:11:30,700 --> 00:11:34,260 bu yüzden, halka görünür olduğunu sen Hiç hata ayıklama modundan çıkmak istiyorum, 225 00:11:34,260 --> 00:11:37,320 insanlar aslında can çünkü Bu konsolunu kullanabilirsiniz ben 226 00:11:37,320 --> 00:11:39,150 Eğer isteğe bağlı kod çalıştırmasına gösterdi. 227 00:11:39,150 --> 00:11:42,120 >> Böylece herhangi gibi yazdırabilirsiniz Orada var gizli kodlar, 228 00:11:42,120 --> 00:11:44,755 Onlar tam bakabilirsiniz nasıl web çalışıyor. 229 00:11:44,755 --> 00:11:46,630 Bu yüzden gerçekten kullanışlı testleri için, ama her zaman 230 00:11:46,630 --> 00:11:50,090 yapmadan önce dışarı almak için emin Eğer online bir şey yayınlamak. 231 00:11:50,090 --> 00:11:56,640 >> Peki ne zaman bir şey kullanıyorsanız PHP gibi, bu fikir var 232 00:11:56,640 --> 00:11:58,920 Eğer geçebilir web sayfaları arasında bilgi 233 00:11:58,920 --> 00:12:03,620 aslında bilgiyi koyarak GET isteği URL içinde, 234 00:12:03,620 --> 00:12:07,490 ama Flask, aslında can sıralama böyle bir şey, 235 00:12:07,490 --> 00:12:10,590 sahip bir rota sağlayarak bunun bir parçası olarak, bir değişken. 236 00:12:10,590 --> 00:12:14,090 >> Bu bakarsanız Yani Burada ekranda örnek 237 00:12:14,090 --> 00:12:19,930 Biz var bir rota var ('/ merhaba /'), ve bu yüzden, eğer sen ziyaret 238 00:12:19,930 --> 00:12:23,790 / merhaba / bir şey, o şey Aslında dolu gidecek 239 00:12:23,790 --> 00:12:25,490 isim değişkene. 240 00:12:25,490 --> 00:12:27,850 Ve işlevi olduğunu fark o rota ile geliyor 241 00:12:27,850 --> 00:12:31,302 parametresinde almak zorundadır ad, aslında olacak, böylece 242 00:12:31,302 --> 00:12:32,510 işlevi geçmiş olsun. 243 00:12:32,510 --> 00:12:34,190 >> Ve sonra, bir kez sen bu işlev içinde 244 00:12:34,190 --> 00:12:36,420 Eğer gibi bu davranabilirsiniz Normal bir Python değişkeni 245 00:12:36,420 --> 00:12:39,650 ve bu nedenle, sonra o olacak Merhaba çıktısını ve 246 00:12:39,650 --> 00:12:42,000 kullanarak adını dolduracak Bazı dize biçimlendirme. 247 00:12:42,000 --> 00:12:48,060 >> Yani yönlendirme değişken parçalar eklemek için, Eğer işaretleme açılı köşebent kullanın. 248 00:12:48,060 --> 00:12:51,220 Ve isteğe bağlı kullanabilirsiniz ne bir dönüştürücü denir. 249 00:12:51,220 --> 00:12:56,840 Ve böylece, bu koyarsanız kolon ile açıklama, 250 00:12:56,840 --> 00:13:00,015 Eğer bu kadar belirtebilirsiniz bir int, ya da bir şamandıra veya yol, 251 00:13:00,015 --> 00:13:01,640 ve otomatik olarak bu çevirecektir. 252 00:13:01,640 --> 00:13:05,130 Ayrıca dönüştürme yapabilirsiniz Python işlev içinde, 253 00:13:05,130 --> 00:13:09,710 Sadece bir döküm kullanarak, ama bazen eğer Eğer bir int olduğunu sağlamak istiyoruz, 254 00:13:09,710 --> 00:13:12,080 Bunu koyabilirsiniz Orada dönüşüm kuralı. 255 00:13:12,080 --> 00:13:15,930 >> Yani bir örnek yukarı çekin izin Bazı değişken kurallar. 256 00:13:15,930 --> 00:13:21,480 Yani burada, bu temel aynıdır vardır Matara ithalattan ile yapı 257 00:13:21,480 --> 00:13:25,030 Flask, app = Flask (_NAME_), ve o sonunda çalışıyor. 258 00:13:25,030 --> 00:13:28,050 Bu iki farklı olması Burada değişken yolları. 259 00:13:28,050 --> 00:13:29,900 Ve ilki olan Ben gösterdi biri 260 00:13:29,900 --> 00:13:34,230 oldu slayt içinde bu sadece bir dize adı alır 261 00:13:34,230 --> 00:13:35,650 ve, Adını Merhaba yazdırılır. 262 00:13:35,650 --> 00:13:41,410 >> Ve sonra, ikinci bir dönüşüm kullanır. 263 00:13:41,410 --> 00:13:44,690 Yani bu otomatik olarak dönüştürür bir int ve sonra, int çift 264 00:13:44,690 --> 00:13:46,150 ve o çıktı. 265 00:13:46,150 --> 00:13:48,220 Ve biz her türlü yapmıyoruz içindeki dönüşüm 266 00:13:48,220 --> 00:13:49,594 Flask o ilgilenir, çünkü. 267 00:13:49,594 --> 00:13:53,181 Yani bu çalışmasını alalım. 268 00:13:53,181 --> 00:13:54,930 Bir Flask varsa uygulaması çalışırken, 269 00:13:54,930 --> 00:13:58,440 Eğer bunun dışında-C kontrol edebilirsiniz Sunucu çalışmasını durdurun. 270 00:13:58,440 --> 00:14:02,420 Ve sonra değişkenleri çalışacaktır. 271 00:14:02,420 --> 00:14:11,740 >> Yani localhost / merhaba / Ezra gidelim ve Umarım, bu bana merhaba diyecek. 272 00:14:11,740 --> 00:14:14,530 273 00:14:14,530 --> 00:14:20,310 >> Bu yüzden değişken olarak benim adımla aldı Güzergah ve burada doldurdum. 274 00:14:20,310 --> 00:14:23,950 Bu yüzden ben de hızlı bir göstereceğiz iki katına örneği. 275 00:14:23,950 --> 00:14:28,600 Yani 3 / çift / giderseniz, o 6 yazdırılır. 276 00:14:28,600 --> 00:14:31,440 Yani bu hallettim Bizim için dönüşüm. 277 00:14:31,440 --> 00:14:34,190 >> Yani aynı zamanda bunu yapabilirsiniz şamandıra ve özel bir şey, 278 00:14:34,190 --> 00:14:37,530 gibi bir şey belirtmek gerekirse o eğik çizgi kabul sağlayan bir yol, 279 00:14:37,530 --> 00:14:39,155 ama genellikle bir sorun olmamalıdır. 280 00:14:39,155 --> 00:14:41,480 281 00:14:41,480 --> 00:14:43,820 Şimdiye kadar, hala var Sadece dönen 282 00:14:43,820 --> 00:14:46,320 çok ilginç değil dizeleri. 283 00:14:46,320 --> 00:14:48,730 >> Biz aslında geri dönebilirler literal HTML dizesi. 284 00:14:48,730 --> 00:14:54,322 Yani kod bir şeyler ekleyebilirsiniz b- etiketi kalın yapmak gibi, 285 00:14:54,322 --> 00:14:56,030 ama çoğu zaman size aslında istemiyorum 286 00:14:56,030 --> 00:14:58,420 HTML kod yazma olmak Python kodu. 287 00:14:58,420 --> 00:15:01,940 O, gerçekten pis olur ve iyi bir zaman değil. 288 00:15:01,940 --> 00:15:06,430 >> Flask bizi ayırmak için izin verir Şablon denen HTML, 289 00:15:06,430 --> 00:15:09,467 ve bu yüzden eğer düşünüyorsun MVC modeli açısından 290 00:15:09,467 --> 00:15:11,550 Eğer aşina olduğunuzu, Umarım, çalışan 291 00:15:11,550 --> 00:15:15,520 CS50 Finans ile biraz, Python dosyaları aklınıza gelebilecek 292 00:15:15,520 --> 00:15:19,430 Kontrolör, daha varlık olarak Onlar ne ile etkileşimde 293 00:15:19,430 --> 00:15:20,970 aklınıza gelebilecek veri modeli. 294 00:15:20,970 --> 00:15:24,900 >> Ve sonra da Görünümler dışarı çağırıyor ve bu Görünüm bilgiyi geçirerek 295 00:15:24,900 --> 00:15:28,120 bilgi doldurmak için HTML ihtiyacı olduğunu. 296 00:15:28,120 --> 00:15:30,490 Ve biz bu Görüntüleme dediğimiz sınıfta şablonları vardır. 297 00:15:30,490 --> 00:15:35,280 >> Yani Flask başka Python kullanır Modül o otomatik olacak 298 00:15:35,280 --> 00:15:38,620 Yüklemek pip zaman yüklemek Flask Jinja denilen hangi 299 00:15:38,620 --> 00:15:40,885 Bu eklemenize izin verir HTML açıklamalar 300 00:15:40,885 --> 00:15:45,140 Ekranda gördüğünüz o, o sağlar Eğer, Koşullamalar gibi şeyler koymak 301 00:15:45,140 --> 00:15:47,230 ve HTML içine döngüler. 302 00:15:47,230 --> 00:15:51,140 >> Yani senin nasıl gibi biraz görünüyor Bir HTML dosyası içinde PHP kullanmak olabilir, 303 00:15:51,140 --> 00:15:57,380 ama bu sadece zaman Flask olduğunu Sunucu, HTML dosyasını kadar hizmet vermektedir 304 00:15:57,380 --> 00:16:01,610 Bu çiftleşmiş motoru çalışır ve Bu ayrıştırmak ve şeyler doldurun. 305 00:16:01,610 --> 00:16:06,650 Böylece şişe, bir render_template işlevi vardır Burada altta görebilirsiniz. 306 00:16:06,650 --> 00:16:14,300 Ve böylece, o bu sayfayı ziyaret ettiğinizde Bu hello.html Template kılacak, 307 00:16:14,300 --> 00:16:16,407 ve sonra bu HTML sayfasında doldurun. 308 00:16:16,407 --> 00:16:18,990 Yani sadece bu gerçek çalışmasına izin hızlı ve neye benzediğini görmek, 309 00:16:18,990 --> 00:16:21,198 ve sonra bir geçmesi edeceğiz daha detaylı biraz. 310 00:16:21,198 --> 00:16:25,380 311 00:16:25,380 --> 00:16:30,260 Yani, Şablonlar gidiyor Bir Şablonlar klasörüne gidin. 312 00:16:30,260 --> 00:16:33,980 Otomatik içinde bakacağız Şablonlar bu Şablon için klasör. 313 00:16:33,980 --> 00:16:35,615 Yani bu kadar açalım. 314 00:16:35,615 --> 00:16:47,350 315 00:16:47,350 --> 00:16:50,005 Yani, ben şablonu örneği çalıştırmak gerekir. 316 00:16:50,005 --> 00:16:52,820 317 00:16:52,820 --> 00:17:03,660 >> Yani / merhaba / Ezra giderseniz, Bu korkunç vardır, 318 00:17:03,660 --> 00:17:05,930 Ben koymak iğrenç kayan etiketi. 319 00:17:05,930 --> 00:17:08,050 Çok güzel, çok dinamik. 320 00:17:08,050 --> 00:17:09,349 Ben büyük bir hayranınızım. 321 00:17:09,349 --> 00:17:13,900 Ama ne olur Ben sadece, / merhaba gidilir? 322 00:17:13,900 --> 00:17:15,220 Yani sadece Hello World diyor. 323 00:17:15,220 --> 00:17:17,678 Ben buna bir isim geçmek vermedi otomatik olarak doldurulur. 324 00:17:17,678 --> 00:17:22,050 Yani o nasıl yaptığını görelim, ve nasıl belki o kayan kurtulabilirsiniz. 325 00:17:22,050 --> 00:17:26,240 >> Yani burada, bu tür bir ilginç bir örnek, 326 00:17:26,240 --> 00:17:29,101 nasıl anahtar aşina iseniz ifadeleri bir dille çalışır. 327 00:17:29,101 --> 00:17:31,350 Bu gibi çeşit olduğunu söylemek aracılığıyla bir düşüş bu tür, 328 00:17:31,350 --> 00:17:34,266 nereye aslında iki ekli Aynı işleve farklı yolları. 329 00:17:34,266 --> 00:17:41,190 Yani biz / merhaba rotayı takın ve Hello / merhaba / isim rota, 330 00:17:41,190 --> 00:17:45,130 Python yapmanızı sağlayan using-- ve biz belirtmek Varsayılan fonksiyonu arguments-- belirtmek 331 00:17:45,130 --> 00:17:48,300 böylece hiçbir isim, yani varsa biz giderseniz sadece / merhaba, 332 00:17:48,300 --> 00:17:50,680 otomatik filtreler adına Yok eşittir. 333 00:17:50,680 --> 00:17:55,010 >> Öyleyse, biz işlemek Name = isimde Şablon, 334 00:17:55,010 --> 00:17:59,510 bu yüzden adı parametresinde geçecek Bu ad işlev parametre eşit, 335 00:17:59,510 --> 00:18:00,730 Şablon içine. 336 00:18:00,730 --> 00:18:04,040 Nasıl hala açıklamıyor Hello World yazdırmak için karar verirken, 337 00:18:04,040 --> 00:18:05,100 ya da benim adını yazdırmak. 338 00:18:05,100 --> 00:18:08,050 Yani aslında bakalım Şablon kendisi içine, 339 00:18:08,050 --> 00:18:11,610 ve nereden geldiğini görüyoruz. 340 00:18:11,610 --> 00:18:18,680 >> Yani, bu Şablon içinde, biz Aslında bazı koşullu mantık var, 341 00:18:18,680 --> 00:18:20,580 hangi bazı insanlar olur iddia, aslında 342 00:18:20,580 --> 00:18:23,730 Koşullu bir sürü olmamalıdır senin Şablon kendi içinde mantık. 343 00:18:23,730 --> 00:18:26,310 Bu içinde daha fazla olmalıdır Kontrolör, ancak bu örnekte 344 00:18:26,310 --> 00:18:27,476 oldukça küçük bir şey. 345 00:18:27,476 --> 00:18:31,060 Adı Yani burada, böylece, kontrol eğer isim Yok eşit değildir, 346 00:18:31,060 --> 00:18:33,130 Bir isim aslında ise o zaman olur geçti 347 00:18:33,130 --> 00:18:36,210 ile Ad Merhaba demek başlık ve kayan yazı, 348 00:18:36,210 --> 00:18:41,490 Bütün bu normal bir HTML, aksi halde, biz olacak Merhaba çıktısını Dünya sadece normal. 349 00:18:41,490 --> 00:18:45,820 Yani bir kaç şey burada fark Eğer çiftleşmiş biçimlendirmek nasıl, 350 00:18:45,820 --> 00:18:49,110 bu, hepsi bu koşullu ifadeler, 351 00:18:49,110 --> 00:18:54,475 sıralama gibi biz bunu ne zaman PHP nasıl Bazı PHP eklemek istediğiniz, 352 00:18:54,475 --> 00:18:58,380 Eğer az daha kullanmak soruya mark, burada bir çeşit benzer var 353 00:18:58,380 --> 00:19:00,140 ile {%. 354 00:19:00,140 --> 00:19:02,130 >> Yani burada, bizim koşullu kodlar var. 355 00:19:02,130 --> 00:19:05,920 Ve sonra, aslında istediğiniz zaman kelimenin tam anlamıyla bir şey değerlendirmek ve baskı 356 00:19:05,920 --> 00:19:08,710 ekrana dışarı, sen çift ​​ayraçları kullanın. 357 00:19:08,710 --> 00:19:12,310 Yani burada çift parantez vardır, ve sonra adını belirtin 358 00:19:12,310 --> 00:19:15,500 Bu içinde böylece, o değerlendirecek değişken adına, hangi 359 00:19:15,500 --> 00:19:18,860 den geçirildi şablon işlevi işlemek 360 00:19:18,860 --> 00:19:21,484 yerine sadece baskıdan daha dışarı, biz bu kurtuldum eğer, 361 00:19:21,484 --> 00:19:23,150 Sadece kelime yazdırmak istiyorum "ad." 362 00:19:23,150 --> 00:19:26,340 Yani, bunun için dikkat etmeniz bir şey. 363 00:19:26,340 --> 00:19:29,792 >> Yani başka bir şey için bildirim olduğunda biz o 364 00:19:29,792 --> 00:19:31,500 Kullanmak istediğiniz render_template işlevi 365 00:19:31,500 --> 00:19:34,490 biz aslında ithal etmek zorunda açıkça Flask dan. 366 00:19:34,490 --> 00:19:36,915 Bu örneğidir Flask modülerlik, 367 00:19:36,915 --> 00:19:39,290 Almak zorunda değilsiniz İhtiyacınız olmayan şeyleri. 368 00:19:39,290 --> 00:19:41,290 Sadece getirebilir işlevleri aslında 369 00:19:41,290 --> 00:19:43,450 bazen hangi gerekiyor güzel, bu yüzden değil mi 370 00:19:43,450 --> 00:19:46,560 Bütün bu işlevleri olması Kullandığınız değiliz oturup, 371 00:19:46,560 --> 00:19:49,730 ama aynı zamanda, size o unutursanız render_template ithalat gerekir, 372 00:19:49,730 --> 00:19:52,660 muhtemelen bir uyarı alırsınız Bu sizin bu konuda bildireceğiz. 373 00:19:52,660 --> 00:19:56,700 Yani, bu çiftleşmiş olduğunu. 374 00:19:56,700 --> 00:20:01,680 >> Yani, biz nasıl gösterilir ettik basit web sayfaları yapmak 375 00:20:01,680 --> 00:20:04,947 ve biraz daha mantığı eklemek o, değişken yönlendirme açısından. 376 00:20:04,947 --> 00:20:08,280 Bu dayalı farklı şeyler yapmanızı sağlar ne o zaman da gidip, ve URL vermek 377 00:20:08,280 --> 00:20:11,950 HTML biraz daha mantıklı Bir şeyleri işlemek istiyorum nasıl şartları. 378 00:20:11,950 --> 00:20:14,210 Hepiniz koymak zorunda değilsiniz senin Python HTML, 379 00:20:14,210 --> 00:20:16,640 ama hemen hemen için Her web uygulaması, 380 00:20:16,640 --> 00:20:21,480 Eğer bir çeşit istiyorum gidiyoruz Veri modeli ile ilişkili. 381 00:20:21,480 --> 00:20:25,560 >> Ve böylece geleneksel, bu olur bir SQL veritabanı gibi bir şey. 382 00:20:25,560 --> 00:20:30,280 Ve sen sadece etkileşim doğrudan SQL. 383 00:20:30,280 --> 00:20:32,190 Python vardır ben denir düşünüyorum. 384 00:20:32,190 --> 00:20:33,040 SQLite 3. 385 00:20:33,040 --> 00:20:38,454 Sadece SQLite 3 alabilir ve doğrudan SQL sorguları yürütmek, 386 00:20:38,454 --> 00:20:40,870 ama ben senin hakkında bilmiyorum, ama gerçekten, sadece sevmiyorum 387 00:20:40,870 --> 00:20:42,750 SQL sorguları dışarı yazma. 388 00:20:42,750 --> 00:20:45,350 Gerçekten almak eğilimindedir uzun ve karmaşık. 389 00:20:45,350 --> 00:20:49,180 >> Ve böylece, bir şey bu Ben kullanmak ne olduğunu gibi 390 00:20:49,180 --> 00:20:53,610 Bir bir ORM olarak bilinen nesne-ilişkisel eşleme. 391 00:20:53,610 --> 00:20:56,890 Ve noktası nesne-ilişkisel eşleme, 392 00:20:56,890 --> 00:21:00,100 iki farklı olmasıdır yolları veritabanları hakkında düşünmek olabilir. 393 00:21:00,100 --> 00:21:03,240 >> Örneğin böylece Profesör Malan genellikle 394 00:21:03,240 --> 00:21:07,660 sınıfta kullandığı, Excel tablosu olduğunu Eğer bu satırları ve bu sütunlar var, 395 00:21:07,660 --> 00:21:10,210 ve bunun için gerçekten yararlı o SQL nasıl temsil edildiğini 396 00:21:10,210 --> 00:21:13,170 ve onunla nasıl etkileşimde, ancak Bu aslında başka bir şekilde 397 00:21:13,170 --> 00:21:16,390 Bazen düşünmek yararlı, sınıfları ve nesneler açısından da bir. 398 00:21:16,390 --> 00:21:20,420 >> Bunun yerine düşünme Her tablonun sahip olarak 399 00:21:20,420 --> 00:21:23,040 Belirli olan bu satır bilgi, aslında can 400 00:21:23,040 --> 00:21:26,100 olarak düşünmek Her tablo bir sınıftır, 401 00:21:26,100 --> 00:21:29,810 ve daha sonra her örneği sınıfı, bazı özelliklere sahiptir. 402 00:21:29,810 --> 00:21:35,110 Yani, bu örnekte, örnekler Sınıf tablosundaki satırlar, 403 00:21:35,110 --> 00:21:37,490 ve sonra her özellik olur tablodaki bir sütun olabilir. 404 00:21:37,490 --> 00:21:40,840 >> Yani, ben gibi ORM peewee denir kullanımı. 405 00:21:40,840 --> 00:21:43,520 Bu tür Flask gibi, gerçekten küçük. 406 00:21:43,520 --> 00:21:46,760 Ben onlar birlikte iyi gider düşünüyorum, ancak diğer ORMs bir yeri vardır 407 00:21:46,760 --> 00:21:47,730 Eğer kullanabilirsiniz. 408 00:21:47,730 --> 00:21:52,180 Bir daha popüler biridir SQLAlchemy olarak bilinen, 409 00:21:52,180 --> 00:21:56,050 ve neden başlangıçta hatırlayamıyorum , SQLAlchemy üzerinde Peewee seçti 410 00:21:56,050 --> 00:21:58,311 ya da ben sizi niye ben söylerdim en iyi biri olduğunu düşünüyorum, 411 00:21:58,311 --> 00:22:01,060 ama biz sadece bu kullanmak için gidiyoruz bir ben nasıl kullanılacağını biliyorum çünkü. 412 00:22:01,060 --> 00:22:04,760 >> Yani, bir soru, neden Eğer bir ORM kullanarak rahatsız gerektiğini, 413 00:22:04,760 --> 00:22:07,552 yerine direkt olarak SQL sorguları yazma? 414 00:22:07,552 --> 00:22:09,760 Ve ben en iyi davayı düşünüyorum, Aslında değil yapmak olduğunu 415 00:22:09,760 --> 00:22:11,356 SQL sorguları yazmak zorunda. 416 00:22:11,356 --> 00:22:14,480 Ben size göstereceğim gibi için, çok daha kolay seçimi gibi şeyler, ekleme, 417 00:22:14,480 --> 00:22:16,157 silme, özellikle tablolar oluşturma. 418 00:22:16,157 --> 00:22:17,990 Bu çok daha kolay Sınıf yapısı yazmak, 419 00:22:17,990 --> 00:22:22,250 o yapı için daha oluşturun Tablo deyimi, ama bir şey 420 00:22:22,250 --> 00:22:25,710 farkında olmak olduğunu ORM elinden geleni çalışacağız 421 00:22:25,710 --> 00:22:28,640 anlamaya ne en verimli SQL sorgusu olurdu 422 00:22:28,640 --> 00:22:30,110 ama bazen yanlış olur. 423 00:22:30,110 --> 00:22:32,660 >> Ve sen özellikle Büyük bir veritabanı ile çalışan, 424 00:22:32,660 --> 00:22:35,557 Bir sorguda olduğunu fark edebilirsiniz Bu, hızlı çalışıyor olmalıdır 425 00:22:35,557 --> 00:22:36,640 Aslında uzun sürüyor. 426 00:22:36,640 --> 00:22:40,164 Ve nasıl kaputun altındaki bakarsanız ORM, SQL içine yorumlanması 427 00:22:40,164 --> 00:22:42,080 bir şey yapıyor olabilir Gerçekten saçma, 428 00:22:42,080 --> 00:22:44,371 sadece bir çeşit bunun nedeni niyetiniz yanlış işaret etti. 429 00:22:44,371 --> 00:22:48,080 Ve kere nerede olmuştur Ben geçersiz vardı ve sadece ettik 430 00:22:48,080 --> 00:22:52,429 Sadece benim kendi SQL sorguları yürütmek garip bir şekilde ayrıştırma çünkü. 431 00:22:52,429 --> 00:22:54,220 Bu nedenle, var olan bir Sadece bir şekilde, havai 432 00:22:54,220 --> 00:22:58,680 derler o senin SQL içine ifadeleri. 433 00:22:58,680 --> 00:23:06,200 >> Yani, hızla süper bakalım Bir veri modelinin basit bir örnek 434 00:23:06,200 --> 00:23:07,350 Kullanmak diye. 435 00:23:07,350 --> 00:23:11,880 Yani, bu çok Python kodu ve bir Yapmak istediğiniz ilk şey dan 436 00:23:11,880 --> 00:23:12,950 peewee ithalat *. 437 00:23:12,950 --> 00:23:15,850 Yani, Flask, aksine var nereye Bütün bu ayn modüller, 438 00:23:15,850 --> 00:23:18,125 ve Flask almak istediğiniz ve Bir Şablon ve bazı diğerleri yazma 439 00:23:18,125 --> 00:23:20,690 daha sonra göreceğiz ki peewee gelen, Sadece, her şeyi alabilirsiniz 440 00:23:20,690 --> 00:23:22,290 çünkü oldukça küçük bir kütüphane var. 441 00:23:22,290 --> 00:23:26,490 >> Yani, yapmak istediğiniz ilk şey, aslında bu veritabanı nesnesi oluşturun. 442 00:23:26,490 --> 00:23:31,212 Yani, var db = SQLiteDatabase, ve sonra veritabanının adı. 443 00:23:31,212 --> 00:23:33,170 Ve bu aslında olacak Bir veritabanı nesnesi oluşturmak 444 00:23:33,170 --> 00:23:36,230 Eğer peewee ile etkileşim olabilir. 445 00:23:36,230 --> 00:23:40,570 >> Ve sonra, biz gerçek var Biz yaratmak istiyoruz modeli. 446 00:23:40,570 --> 00:23:42,470 Yani tablo yaratmak istiyoruz. 447 00:23:42,470 --> 00:23:47,270 Yani, peewee içinde her sınıf vardır veritabanı içinde kendi tablo. 448 00:23:47,270 --> 00:23:52,800 Yani, sınıfların tüm baz model devralan, 449 00:23:52,800 --> 00:23:55,960 ve sermaye M modeli peewee tanımlanan bir şeydi. 450 00:23:55,960 --> 00:24:02,162 >> Yani, tüm modellerin gerekir en yüksek üst sınıf olarak miras, 451 00:24:02,162 --> 00:24:04,620 onlar devralan gerekir Model, ama gerçekten serin ne 452 00:24:04,620 --> 00:24:07,610 aslında senin sahip olmasıdır Modeller birbirinden devralır. 453 00:24:07,610 --> 00:24:10,530 Ve çok zaman, sizin veri modelleri mutlaka yok 454 00:24:10,530 --> 00:24:13,754 Güzel bir miras hiyerarşisini yapmak, ancak yaptıkları yerde kere, o gerçekten güzel 455 00:24:13,754 --> 00:24:15,920 Eğer modeli var çünkü birbirinden doğasında. 456 00:24:15,920 --> 00:24:19,710 >> Yani, biz bu sınıfı tanımlanmış bir model devralır 'öğrenci', 457 00:24:19,710 --> 00:24:21,170 ve üç özelliklere sahiptir. 458 00:24:21,170 --> 00:24:24,080 Öyle ki, bir kimliği vardır Bir PrimaryKeyField, burada 459 00:24:24,080 --> 00:24:26,920 sağlanan oluyor şey olduğunu peewee tarafından, adı Charfield olduğunu, 460 00:24:26,920 --> 00:24:28,490 ve notu bir IntegerField olduğunu. 461 00:24:28,490 --> 00:24:32,260 Bu yüzden, bu veya olmayabilir nasıl CS50 aslında tüm depolar 462 00:24:32,260 --> 00:24:33,650 Öğrencilerin notları. 463 00:24:33,650 --> 00:24:36,060 O değil, ama bu bunu yapmak nasıl olduğunu. 464 00:24:36,060 --> 00:24:37,920 >> Ve daha sonra içinde yer alır Bu sınıf, ve bu 465 00:24:37,920 --> 00:24:41,620 Eğer yapabileceğiniz bir şey Python, iç içe sınıflar olabilir. 466 00:24:41,620 --> 00:24:43,920 Ve bu şey bu peewee gerekli oluyor. 467 00:24:43,920 --> 00:24:47,250 Yani, bu sınıf Meta, sahip veritabanı olduğunu belirtmek için 468 00:24:47,250 --> 00:24:49,830 nesneye eşit Yukarıda yarattığı. 469 00:24:49,830 --> 00:24:54,339 Ve bu dosya, bu tablo ne diyor Aslında içerdiği olacak. 470 00:24:54,339 --> 00:24:57,130 Yani bu sizin bir şeydir senin modelleri tüm içinde yapmak. 471 00:24:57,130 --> 00:24:59,380 Sadece belirtmek zorunda Bu Meta sınıf içinde 472 00:24:59,380 --> 00:25:01,400 bu veritabanı db eşittir. 473 00:25:01,400 --> 00:25:03,940 Ben varsa bu yüzden genellikle, ne farklı modeller bir demet, 474 00:25:03,940 --> 00:25:05,910 Bir üssü olması Model, I genellikle 475 00:25:05,910 --> 00:25:08,839 Sadece "baz model" diyoruz Bu Meta sınıfı vardır, 476 00:25:08,839 --> 00:25:10,380 ve db eşit bir veritabanı ayarlar. 477 00:25:10,380 --> 00:25:13,710 Ve daha sonra modelleri sonra tüm Bu temel sınıfından olacaktır. 478 00:25:13,710 --> 00:25:16,760 Ve sonra ben endişelenmenize gerek yok Meta sınıf ayarlama hakkında. 479 00:25:16,760 --> 00:25:21,490 >> Yani, bu aslında geldiğinde Bir SQL deyimi aşağı derlenmiş, 480 00:25:21,490 --> 00:25:24,875 aşağı bu pis bir şey gibi görünüyor Burada, "masa öğrenci kimlik tamsayı oluştur 481 00:25:24,875 --> 00:25:26,020 " her neyse. 482 00:25:26,020 --> 00:25:30,002 >> Ve ben daha kısa olduğunu düşünüyorsanız, Burada bu SQL sorgusu, 483 00:25:30,002 --> 00:25:32,960 ama burada bu sınıfın bakarsanız Eğer oluyor tam olarak ne görebilirsiniz. 484 00:25:32,960 --> 00:25:36,116 Sen alanların ne tür görebilirsiniz Onlar denir şeyin vardır, 485 00:25:36,116 --> 00:25:38,115 ve bu nedenle, ben düşünüyorum Bu Python kodu bakarak 486 00:25:38,115 --> 00:25:43,340 çok daha okunabilir Bu SQL sorgusu yazmaya çalışıyorum. 487 00:25:43,340 --> 00:25:45,990 >> Yani, amacıyla aslında veritabanını kullanın, 488 00:25:45,990 --> 00:25:48,470 Biz Python içinde kendisine bağlanmak zorunda. 489 00:25:48,470 --> 00:25:52,770 Yani, ben genellikle adında bir fonksiyon yazmak iki şey yapar initialize_db. 490 00:25:52,770 --> 00:25:54,880 Bu veritabanında alır Nesne db ve 491 00:25:54,880 --> 00:25:58,360 Sadece açan, ona bağlanır veritabanına bölüm kadar. 492 00:25:58,360 --> 00:26:00,860 Sadece olsa çalıştırıyorsanız yerel makinenizde web sitesi, 493 00:26:00,860 --> 00:26:04,320 o endişe süper büyük bir anlaşma değil bağlama ve ayırmadan hakkında 494 00:26:04,320 --> 00:26:06,885 ama eğer çalıştırıyorsanız, Bir web sitesinde bu size 495 00:26:06,885 --> 00:26:10,010 Emin her bir kullanıcı, o yapmak istiyorum onlar kapattığınızda, kendisine bağlanan 496 00:26:10,010 --> 00:26:12,270 Web sitesi, onlar o kadar kesmek sen bağlı bir grup insan yok 497 00:26:12,270 --> 00:26:14,480 veritabanınıza defada. 498 00:26:14,480 --> 00:26:16,370 >> Sonra, size veritabanına bağlanmak, 499 00:26:16,370 --> 00:26:20,832 Eğer db.create_tables aramak istediğiniz ve ne istediğinizi için modeller listesi 500 00:26:20,832 --> 00:26:21,540 tablo oluşturmak için. 501 00:26:21,540 --> 00:26:23,950 Yani burada, ben sadece istiyorum Bu öğrenci için oluşturun. 502 00:26:23,950 --> 00:26:28,070 Ve sonra, neyin önemli olduğunu, olduğunu Güvenli = True en saatini belirtin. 503 00:26:28,070 --> 00:26:30,380 Peki bu beyanı yapacak, öyle mi 504 00:26:30,380 --> 00:26:33,580 için tablolar oluşturur öğrenci modeli, ancak 505 00:26:33,580 --> 00:26:36,109 Bu tablo değil varsa zaten oluşturulmuş. 506 00:26:36,109 --> 00:26:37,400 Bu ne güvenli belirtir var. 507 00:26:37,400 --> 00:26:39,150 Yani üzerine yazmaz Mevcut tablo, 508 00:26:39,150 --> 00:26:41,525 sadece yeni yaratacak tablo yok varsa. 509 00:26:41,525 --> 00:26:45,090 Yani, sadece yaratabilir tablolar bir kez SQL kullanarak. 510 00:26:45,090 --> 00:26:49,410 Ve sonra bu veritabanı oturma sahip Orada ve her zaman bağlanın 511 00:26:49,410 --> 00:26:52,450 ama sadece genellikle güzel Bu create_tables çağrısı koymak, 512 00:26:52,450 --> 00:26:55,550 bu nedenle, bu hiç silerseniz sizin Veritabanı ne zaman web'de yayınlamak 513 00:26:55,550 --> 00:26:57,960 app yine onu yeniden oluşturacaktır. 514 00:26:57,960 --> 00:27:00,730 >> Yani, sadece güvenli olduğundan emin olun True belirtildiğinde, 515 00:27:00,730 --> 00:27:03,580 ya da sadece verilerinizi bulacaksınız her Dayak. 516 00:27:03,580 --> 00:27:06,380 Ve sonra, sadece arayabilecek kurmak initialize_db 517 00:27:06,380 --> 00:27:09,820 Bir bağlantı ve oluşturmak tablolar Gerekirse. 518 00:27:09,820 --> 00:27:13,150 >> Yani, en yaygın şey Yapmak istediğin edeceğini, 519 00:27:13,150 --> 00:27:15,920 veya en sık şeylerden biri, Aslında bir şeyler eklemek için 520 00:27:15,920 --> 00:27:17,170 veritabanına. 521 00:27:17,170 --> 00:27:19,430 Ve böylece yerine sahip INTO bir ekleme yazma 522 00:27:19,430 --> 00:27:21,990 hepsi ile beyanı değerler belirtilmiş, 523 00:27:21,990 --> 00:27:24,650 aslında arayabileceğiniz Öğrenci sınıfı işlevi. 524 00:27:24,650 --> 00:27:28,200 Yani, bir sınıf oluşturmak zaman Bu modele devralır 525 00:27:28,200 --> 00:27:30,200 Bu yöntemi oluşturmak vardır. 526 00:27:30,200 --> 00:27:33,870 >> Yani, sınıf name.create yapmak, ve parametrelerini belirtin 527 00:27:33,870 --> 00:27:35,260 Eğer geçmek istediğiniz. 528 00:27:35,260 --> 00:27:39,200 Yani, bazı öğrenciler eklemek istiyorsanız Bizim CS50 sınıf kitap örnek, 529 00:27:39,200 --> 00:27:41,820 Ben kim var, David takacağım Çok iyi notu, o 95 sahiptir. 530 00:27:41,820 --> 00:27:45,100 Ve ben, kim yapmıyor çok iyi CS50 içinde, ben bir 50 var. 531 00:27:45,100 --> 00:27:47,600 Ve böylece, güzel bir şey hakkında Bu oluşturmak fonksiyonu ne, 532 00:27:47,600 --> 00:27:53,040 o örneği döndüren, ya olduğu satır, bu tablo içinde yarattığı, 533 00:27:53,040 --> 00:27:55,750 ve böylece o zaman bir o saklamak Değişken ve daha sonra onunla çalışır. 534 00:27:55,750 --> 00:27:58,830 Sen, etrafında değiştirebilirsiniz hangi Ben bir örnek göstereceğim. 535 00:27:58,830 --> 00:28:03,050 >> Ben yapmadım fark Kimliği belirtmek zorunda, 536 00:28:03,050 --> 00:28:09,340 o çünkü, PrimaryKeyField, otomatik olacak 537 00:28:09,340 --> 00:28:10,930 Bunu belirtmek yoksa bunu artırmak. 538 00:28:10,930 --> 00:28:12,250 Ve aslında, muhtemelen Bunu belirtmek gerekir, 539 00:28:12,250 --> 00:28:14,810 Yanlışlıkla olabilir çünkü Başkasının kimliğini clobber. 540 00:28:14,810 --> 00:28:16,830 Ve yapmak istediğiniz benzersiz olduğundan emin. 541 00:28:16,830 --> 00:28:20,662 >> Yani, aslında, çoğu Yapmak istediğiniz ortak bir şey, 542 00:28:20,662 --> 00:28:22,620 muhtemelen seçmektir Size bir kez veritabanı 543 00:28:22,620 --> 00:28:24,078 Orada bir sürü bilgi var. 544 00:28:24,078 --> 00:28:27,360 Ve böylece, her şeyi elde etmek istiyorsanız, yani seçme yıldızın eşdeğer 545 00:28:27,360 --> 00:28:30,940 Öğrenciler deyimi, onu Sadece student.select olurdu. 546 00:28:30,940 --> 00:28:34,380 Ve bu bir dizi size geri verecektir Öğrencinin hepsini nesneleri ile 547 00:28:34,380 --> 00:28:35,770 Eğer üzerinde yineleme İstediğin. 548 00:28:35,770 --> 00:28:37,019 Sen bunun dışında şeyler alabilirsiniz. 549 00:28:37,019 --> 00:28:39,310 Ve çoğu zaman, sen Sadece seçme yapmak istemiyorum, 550 00:28:39,310 --> 00:28:40,935 Aslında bir şey belirtmek istiyorum. 551 00:28:40,935 --> 00:28:44,580 Ve böylece, zincir yapabilirsiniz Birlikte bu işlev çağrıları, 552 00:28:44,580 --> 00:28:48,830 nasıl zincir yaptığınız gibi SQL birlikte ifadeleri. 553 00:28:48,830 --> 00:28:53,002 Yani) (student.select yapabilirsiniz. Nerede Bu örnekte. 554 00:28:53,002 --> 00:28:54,710 Ve sonra, you can koşulları belirtmek 555 00:28:54,710 --> 00:28:57,880 sadece normal Python kullanarak Boolean şeyleri kontrol etmek. 556 00:28:57,880 --> 00:29:02,110 >> Yani, bu durumda, istediğiniz , sen seçme şeyin sınırı 557 00:29:02,110 --> 00:29:06,790 ogrenci.not 50 eşit olduğu, ve student.name, Ezra eşittir 558 00:29:06,790 --> 00:29:09,130 böylece sadece beni alacak. 559 00:29:09,130 --> 00:29:11,340 Ve gerçekten de, bir fark ince bir şey burada 560 00:29:11,340 --> 00:29:15,570 Eğer belirtmek istiyorsanız, o Bir ve / veya ve / veya veya 561 00:29:15,570 --> 00:29:19,840 Python, normalde kullanırsınız, Ben, kelime "ve" aslında düşünüyorum 562 00:29:19,840 --> 00:29:23,351 ama burada tek işareti kullanın, normalde Bitsel operatörüdür, 563 00:29:23,351 --> 00:29:25,600 ancak bu özel durumda, sadece yol peewee yapar, 564 00:29:25,600 --> 00:29:27,660 Tek kullanmak işareti belirtmek "ve". için 565 00:29:27,660 --> 00:29:29,451 O bir şey olduğunu Ben bir sürü karışık olsun, 566 00:29:29,451 --> 00:29:32,530 ama o kadar gelmiyor pratikte o kadar. 567 00:29:32,530 --> 00:29:36,350 >> Ve sonra, bir kez tüm var veritabanı üzerinden öğrencilerin, 568 00:29:36,350 --> 00:29:39,420 yaptın kez seçme konum ve aşınma ya da her neyse, 569 00:29:39,420 --> 00:29:42,334 Eğer bir foreach döngüsü kullanabilirsiniz, Sadece, Python normal gibi 570 00:29:42,334 --> 00:29:44,500 yineleyici herhangi bir sıralama ile veya dizinin herhangi bir tür. 571 00:29:44,500 --> 00:29:46,333 Yani s için, yapabileceğim student.select olarak (). whe 572 00:29:46,333 --> 00:29:52,930 (ogrenci.not <75) ve böylece bu irade yeniden Tablodaki her öğrencinin üzerinde yineleme 573 00:29:52,930 --> 00:29:56,260 kimin notu, en az 75 olan Bu durumda, yine sadece benim. 574 00:29:56,260 --> 00:29:59,218 Ve sonra içinde bir şeyler yapabileceğini Bu döngü gibi bana bir e-posta göndermek 575 00:29:59,218 --> 00:30:01,680 ve bana aslında anlatmak Benim Problem Setleri çevirmek. 576 00:30:01,680 --> 00:30:04,550 >> Yani, başka bir şey yapabilirsiniz yapmak, gerçekten kolay olduğunu 577 00:30:04,550 --> 00:30:06,460 Tablo içindeki satırları güncellemek için. 578 00:30:06,460 --> 00:30:08,720 Yani, burada tekrar hatırlamak, senin ben takılı, 579 00:30:08,720 --> 00:30:11,440 Ben değer aldı student.create tarafından döndürülen, 580 00:30:11,440 --> 00:30:14,920 ve ben Ezra adında isme atanmış. 581 00:30:14,920 --> 00:30:18,995 Ve şimdi, sen değiştirebilirsiniz Bu örneği içinde değerler, 582 00:30:18,995 --> 00:30:20,870 tıpkı yapacağınız bir Python normal sınıf. 583 00:30:20,870 --> 00:30:25,060 >> Yani ayarlayabilirsiniz ezra.grade = 95 ve yerel kopyayı güncelleyecek, 584 00:30:25,060 --> 00:30:28,380 ama aslında istiyorsanız veritabanına bu değişikliği taahhüt, 585 00:30:28,380 --> 00:30:31,410 Eğer ezra.save aramak zorunda böylece .save yöntemi denir 586 00:30:31,410 --> 00:30:32,650 örneğinde. 587 00:30:32,650 --> 00:30:38,085 >> Ve şimdi, ben başarıyla değişti veritabanı içinde kendi sınıf. 588 00:30:38,085 --> 00:30:41,210 Yani, o zaman ben yakalanmak diyelim veritabanı içinde benim sınıf değiştirme. 589 00:30:41,210 --> 00:30:44,126 Profesör Malan muhtemelen gidiyor sınıftan beni silmek istiyorum, 590 00:30:44,126 --> 00:30:48,630 ve böylece .Delete çağırabilirsiniz Sadece o şey üzerinde örnek yöntemi. 591 00:30:48,630 --> 00:30:51,674 >> Eğer isteseydim Yani, gitmek geri bu döngüye burada, 592 00:30:51,674 --> 00:30:53,465 ve aslında bunun yerine e-posta gönderme, tüm 593 00:30:53,465 --> 00:30:56,577 Öğrencilerin kimin notu az 75 yerine, bunları silmek istedim, 594 00:30:56,577 --> 00:30:58,660 Bu döngü içinde yapabildin s.delete örneği diyoruz. 595 00:30:58,660 --> 00:31:04,180 596 00:31:04,180 --> 00:31:07,780 Ve yapmak istediğiniz en son şey, Eğer bağlantı kurmak ne zaman olduğunu, 597 00:31:07,780 --> 00:31:10,350 ve sen işinizi bitirdiniz Eğer db.Close aramak istediğiniz 598 00:31:10,350 --> 00:31:13,190 nerede db o veritabanı Daha önce vardı nesne. 599 00:31:13,190 --> 00:31:18,290 Ve emin olmak için Her şey dışarı kapalı alır. 600 00:31:18,290 --> 00:31:18,790 >> Güzel. 601 00:31:18,790 --> 00:31:22,410 Yani şimdi, ben bir örnek uygulama var. 602 00:31:22,410 --> 00:31:26,880 Ben tür herşeyi önceden yaptık Böylece herhangi bir canlı kodlama olmaz 603 00:31:26,880 --> 00:31:30,220 hatalar, ama biz aracılığıyla yürüyebilir o ve Flask vereceğini görmek nasıl 604 00:31:30,220 --> 00:31:33,685 ve birlikte peewee, ve basit bir uygulama yapmak. 605 00:31:33,685 --> 00:31:38,680 Ben CS50 rant diyoruz, ve bu kadar Basit bir blog platformu tür. 606 00:31:38,680 --> 00:31:41,150 >> Yani, ilk olarak, ben bunu kaçıyorum ve , neye benzediğini göstermek 607 00:31:41,150 --> 00:31:42,890 ve sonra koduna fazla bakabilirsiniz. 608 00:31:42,890 --> 00:32:00,470 609 00:32:00,470 --> 00:32:02,830 Tamam, o yüzden sadece bu çalıştırın. 610 00:32:02,830 --> 00:32:14,040 611 00:32:14,040 --> 00:32:17,250 Ben bu serin yapacağız Biraz daha küçük. 612 00:32:17,250 --> 00:32:20,000 Bu sadece, çünkü değil çok güzel olduğunu Ben, CSS bir sürü yapmak değildi 613 00:32:20,000 --> 00:32:23,255 ama yok ne var, bir Blog yazılarına bu veritabanı, 614 00:32:23,255 --> 00:32:25,630 ve bütün geçer Onları, ve onları gösterecektir 615 00:32:25,630 --> 00:32:28,170 En son sırasına sayfasında. 616 00:32:28,170 --> 00:32:30,920 Ve bu yüzden bu sadece bazı mesajlar Ben veritabanına kaydedilir olduğunu. 617 00:32:30,920 --> 00:32:35,680 >> Yeni bir oluşturmak istiyorsanız Yani Mesajı, biz yeni bir ekle Mesajı gidebilirsiniz 618 00:32:35,680 --> 00:32:42,720 ve biz başlığını girebilirsiniz Mesajı, bu nedenle bir şey gibi CS50 semineri. 619 00:32:42,720 --> 00:32:45,360 620 00:32:45,360 --> 00:32:46,735 Vay, gerçekten seminer zevk. 621 00:32:46,735 --> 00:32:51,070 622 00:32:51,070 --> 00:32:52,270 >> Güzel. 623 00:32:52,270 --> 00:32:56,060 Sonra yazı basın ve o-ecek ana sayfasına size geri yönlendirme, 624 00:32:56,060 --> 00:33:00,039 ve sonra göreceksiniz ki Son mesajı eklendi. 625 00:33:00,039 --> 00:33:01,580 Ve biz hala orada tüm olanlar var. 626 00:33:01,580 --> 00:33:08,080 Yani şimdi, en hepsi adım adım izin Kod ve bu uygulamaya nasıl bakın. 627 00:33:08,080 --> 00:33:11,995 >> Yani, diyelim ilk şey düşünmek aslında modelleri bakabilirsiniz. 628 00:33:11,995 --> 00:33:14,120 Çok zaman, ne zaman Bir şey tasarlıyoruz, 629 00:33:14,120 --> 00:33:17,036 Eğer nasıl ilk düşünmek istiyorum Eğer verilerinizi temsil gidiyoruz 630 00:33:17,036 --> 00:33:22,915 ve o şeyler etrafında tasarım, böylece her şeyin mantıklı. 631 00:33:22,915 --> 00:33:25,290 Ve nasıl aslında Ben bu hale ne zaman, yaptım 632 00:33:25,290 --> 00:33:28,030 Ben, oturdu ve düşünce Ben bir yazı ne istiyorsun. 633 00:33:28,030 --> 00:33:32,130 >> Yani, burada, aynı yapıya sahip Daha önce söz olduğunu, 634 00:33:32,130 --> 00:33:33,755 Biz db = Sqldatabase ('posts.db') do nerede. 635 00:33:33,755 --> 00:33:37,840 636 00:33:37,840 --> 00:33:40,980 Gerçekte, muhtemelen istemiyorum adın veritabanlarında sert kodu. 637 00:33:40,980 --> 00:33:43,730 Muhtemelen bir parametre olmalıdır belki, bir yerde depolanan 638 00:33:43,730 --> 00:33:45,940 Bir yapılandırma dosyasında, ama Böyle küçük bir örnek, 639 00:33:45,940 --> 00:33:48,310 o sert koda tamam. 640 00:33:48,310 --> 00:33:53,510 >> Yani şimdi biz bu Mesaj sınıfı var, hangi baz modelinde devralır. 641 00:33:53,510 --> 00:33:56,930 Ve, yine, var J = PrimaryKeyField. 642 00:33:56,930 --> 00:34:02,250 Aslında, belirttiğiniz yoksa, Ben aslında bu kurtuldum eğer, 643 00:34:02,250 --> 00:34:07,152 o zaman ilgilenecek peewee otomatik olarak kimlik alanını oluştururken, 644 00:34:07,152 --> 00:34:09,360 ve otomatik olacak bunu bir PrimaryKey yapmak hangi 645 00:34:09,360 --> 00:34:12,485 Ben, çünkü genellikle, gerçekten güzel olduğunu düşünüyorum Bu, sahip olmak istediğim bir şey var 646 00:34:12,485 --> 00:34:16,239 ama ben özellikle koymak istiyorum, sadece bu yüzden orada olduğunu hatırlıyorum. 647 00:34:16,239 --> 00:34:19,480 Ama belirtmek yoksa, otomatik olarak orada olacak. 648 00:34:19,480 --> 00:34:22,198 >> Öyleyse, bir randevum var olan Bir DateTimeField ve tüm 649 00:34:22,198 --> 00:34:24,864 Bu farklı alanlar, eğer peewee belgelere bakmak, 650 00:34:24,864 --> 00:34:28,920 bu size farklı bir listesini vereceğim kullanabileceğiniz alanların türleri. 651 00:34:28,920 --> 00:34:34,440 Çoğunlukla, bu benzer var Eğer SQL görürdünüz ne. 652 00:34:34,440 --> 00:34:37,699 Bu yüzden, bir Charfield a, orada VarCharFields, textfields, 653 00:34:37,699 --> 00:34:40,550 Çok uzun olan vardır bir blog yazısı gibi metinler, 654 00:34:40,550 --> 00:34:44,460 Potansiyel olarak, DateTimeFields, DoubleFields, FloatFields, 655 00:34:44,460 --> 00:34:46,100 Böyle her şeyi. 656 00:34:46,100 --> 00:34:51,570 >> Ve diğer argümanlar iletebilirsiniz buna, ben burada belirtmek vermedi. 657 00:34:51,570 --> 00:34:55,719 Say, örneğin, istemedi İki mesaj aynı başlık için izin, 658 00:34:55,719 --> 00:34:59,672 Belirttiğiniz olabilir Gerçek eşsiz gibi bir şey = 659 00:34:59,672 --> 00:35:02,880 ve bu sadece ekstra bir parametre var onu aşağı derler o zaman tarla 660 00:35:02,880 --> 00:35:06,865 SQL içine, o belirtirsiniz sahip olduğu benzersiz olması. 661 00:35:06,865 --> 00:35:09,740 Ayrıca böyle bir şey belirtebilirsiniz değil boş ve tüm diğer şeyler 662 00:35:09,740 --> 00:35:11,750 Normalde SQL yapmak. 663 00:35:11,750 --> 00:35:16,020 Yani, bu oldukça basit tarihi olan modeli. 664 00:35:16,020 --> 00:35:19,460 DateTimeField içinde buraya dikkat edin, Varsayılan nedir belirtilmiş. 665 00:35:19,460 --> 00:35:22,560 Ben olmasını belirtilen , datetime.datetime.now 666 00:35:22,560 --> 00:35:24,920 biçimi nedeniyle bu Bu değerlendirdi olur, 667 00:35:24,920 --> 00:35:28,750 aslında değerlendirir DateTime.Now zaman 668 00:35:28,750 --> 00:35:32,110 bu veritabanına eklenir alır. 669 00:35:32,110 --> 00:35:34,760 >> Ben olurdu düşünüyorum Bu kontrol çift, 670 00:35:34,760 --> 00:35:38,222 ama sonra, böyle bir şey yaptıysam aslında, bir kez bu değerlendireceklerini 671 00:35:38,222 --> 00:35:40,180 ve daha sonra DateTime hep aynı olacaktır. 672 00:35:40,180 --> 00:35:44,240 Yani, şey yapıyoruz, sadece eğer tarihsaat, çift kontrol 673 00:35:44,240 --> 00:35:47,080 o zaman değerlendirmek oluyor bu Aslında başka takılı veya alır 674 00:35:47,080 --> 00:35:48,780 Eğer karışık olabilir. 675 00:35:48,780 --> 00:35:51,221 >> Başlık sadece bir Charfield, orada hangi 676 00:35:51,221 --> 00:35:53,970 Eğer geçebilir fazla argümanlar vardır belirterek tam olarak ne kadar size 677 00:35:53,970 --> 00:35:56,170 olmasını istiyorum, ama burada, gerçekten önemli değildi. 678 00:35:56,170 --> 00:35:58,687 Ve Metin olacak Bütün yazı metni, 679 00:35:58,687 --> 00:36:01,020 ve bu olacak İstediğiniz sırf TextField 680 00:36:01,020 --> 00:36:03,370 bu oldukça uzun bir dize izin vermek için. 681 00:36:03,370 --> 00:36:05,970 >> Sonra bu Meta var alt sınıfı sadece 682 00:36:05,970 --> 00:36:11,250 Biz veritabanı istediğinizi belirtir Bu aslında içine açılan nerede 683 00:36:11,250 --> 00:36:14,267 biz burada db nesne olmak. 684 00:36:14,267 --> 00:36:16,350 Ve son şey elimizde Burada, sadece bu işlevi 685 00:36:16,350 --> 00:36:18,120 Biz gidiyoruz Bizim ana app kullanmak 686 00:36:18,120 --> 00:36:23,970 bağlanmak için veritabanını başlatmak için o ve ardından Mesaj tablo oluşturmak için. 687 00:36:23,970 --> 00:36:26,880 >> Şimdi, ana app kendisi bakalım. 688 00:36:26,880 --> 00:36:30,800 Yani bu biridir oldukça olanlardan daha uzun bit 689 00:36:30,800 --> 00:36:34,840 Daha önce gördük, ama umarım çok kötü değil. 690 00:36:34,840 --> 00:36:37,140 Yani, bana bunu uzatmak edelim. 691 00:36:37,140 --> 00:36:38,370 Tamam. 692 00:36:38,370 --> 00:36:42,070 >> Yani, fark ve üst ben ithal diğer şeyler bir sürü 693 00:36:42,070 --> 00:36:44,129 Flask biz değil var Gerçekten daha önce gördüm. 694 00:36:44,129 --> 00:36:46,670 Ve umarım, biz gidebilirsiniz Bu tek tek her biri 695 00:36:46,670 --> 00:36:49,420 ve hakkında biraz daha konuşmak Onları Örneğin sıralama kriteri. 696 00:36:49,420 --> 00:36:51,380 Yani, biz, Flask var ve render_template, 697 00:36:51,380 --> 00:36:54,370 hangi biz daha önce görmüştüm Bu istek nesnesi, 698 00:36:54,370 --> 00:37:00,400 Biz nasıl baktığımızda gelip hangi Aslında gösteren formu 699 00:37:00,400 --> 00:37:01,170 çalışır. 700 00:37:01,170 --> 00:37:04,850 Eğer yönlendirme olanak sağlayan, Redirect Geri Create New Post 701 00:37:04,850 --> 00:37:11,710 Orijinal ana sayfasına geri ve ardından Yapmanızı sağlayan şeydir URL 702 00:37:11,710 --> 00:37:15,550 üzerinde nerede olduğunu anlamaya Web sitesi, belirli bir sayfası. 703 00:37:15,550 --> 00:37:17,810 >> Öyleyse, bir sonraki Yapmam şey, ben ithalat 704 00:37:17,810 --> 00:37:21,550 Modeller tüm bilgiler biz sadece aradılar dosyaları. 705 00:37:21,550 --> 00:37:23,140 Ve, evet. 706 00:37:23,140 --> 00:37:28,720 >> Yani, yeni bir şey geliyor Eğer ile uğraşırken kadar, 707 00:37:28,720 --> 00:37:31,850 Özellikle veritabanları, Belirttiğiniz olmasıdır 708 00:37:31,850 --> 00:37:35,110 önce çağrılan bir işlev gets her isteği ve fonksiyonu 709 00:37:35,110 --> 00:37:39,690 Bu kullanarak, her istekten sonra çağırdı Fonksiyon dekoratör'ın app.before isteği. 710 00:37:39,690 --> 00:37:42,324 >> Ve böylece bu idam alacak her yerde bu fonksiyonudur. 711 00:37:42,324 --> 00:37:44,240 Bu olmak zorunda değildir Talep önce denir, 712 00:37:44,240 --> 00:37:46,281 ancak genellikle bu da bir şey onu aramak için mantıklı. 713 00:37:46,281 --> 00:37:48,580 714 00:37:48,580 --> 00:37:51,650 Sen ne fonksiyonu belirtebilirsiniz Eğer orada denilen almak istiyorum 715 00:37:51,650 --> 00:37:56,330 bu yüzden bu initialize_db belirtilen Biz Modeller geri vardı fonksiyonu 716 00:37:56,330 --> 00:38:02,390 Dosya, yani her istek için önce veritabanına bağlanmak istiyorum. 717 00:38:02,390 --> 00:38:04,560 >> Farklı iki Var yollar bunu yapabilirsin. 718 00:38:04,560 --> 00:38:10,830 Senapp yapabilirsiniz. I o after_request inanıyorum. 719 00:38:10,830 --> 00:38:13,800 Ve arasındaki fark after_request ve teardown_request, 720 00:38:13,800 --> 00:38:17,590 after_request sadece olacağını olduğunu istek aslında geçerli olup olmadığını. 721 00:38:17,590 --> 00:38:20,440 Ve böylece, yalnızca istek, başarılı 722 00:38:20,440 --> 00:38:22,490 hiçbir şey yanlış giderse ancak teardown_request 723 00:38:22,490 --> 00:38:26,300 Başarılı bir durumda olur isteği, ya da bir hata durumunda. 724 00:38:26,300 --> 00:38:28,252 >> Yani, genellikle, istediğiniz teardown_request kullanımı, 725 00:38:28,252 --> 00:38:30,460 Yapmak istediğiniz sürece Özellikle farklı bir şey, 726 00:38:30,460 --> 00:38:31,470 Bir hata durumunda. 727 00:38:31,470 --> 00:38:35,122 Ama veritabanı kapatılması için, , başarılı ya da başarısız olursa olsun 728 00:38:35,122 --> 00:38:37,080 biz kesmek istiyoruz veritabanından. 729 00:38:37,080 --> 00:38:41,240 Yani db.Close, denir db nesne üzerinde. 730 00:38:41,240 --> 00:38:43,740 >> Teardown_request dikkat edin Bir istisna alır. 731 00:38:43,740 --> 00:38:46,781 Aslında olsaydı Yani kontrol edebilirsiniz Bir hata o, kapatma zaman 732 00:38:46,781 --> 00:38:49,390 ama burada, umarım, orada hataların bir sürü değil, 733 00:38:49,390 --> 00:38:52,720 böylece biz sadece bir çeşit olduğunu görmezden geliyorsun. 734 00:38:52,720 --> 00:38:55,990 >> Tamam, gerisi çok kötü değil. 735 00:38:55,990 --> 00:39:02,240 Yani, biz ana sayfasına gittiğinizde, Bu home.html Şablon hale 736 00:39:02,240 --> 00:39:03,490 Bu açılacaktır. 737 00:39:03,490 --> 00:39:06,240 Pas sonrası ise ve ne bu eşit 738 00:39:06,240 --> 00:39:10,260 Biz bu yazı hatırlıyorum olduğunu yapar Model, bu yüzden, tüm mesajları seçmek 739 00:39:10,260 --> 00:39:13,890 ve daha sonra yapabileceğiniz başka bir şey, Eğer WHERE yan tümcesi belirtebilirsiniz 740 00:39:13,890 --> 00:39:16,910 Bir belirtebilirsiniz tarafından sipariş ve bu yüzden almak 741 00:39:16,910 --> 00:39:18,820 mesajların tüm bu ardından seçilen almak ve 742 00:39:18,820 --> 00:39:22,590 Biz onları sipariş post.date.descending. 743 00:39:22,590 --> 00:39:25,030 Ve belirtmek edecek, ne zaman aslında, çıkıp 744 00:39:25,030 --> 00:39:29,250 En son bir tane Çok ilki olacak. 745 00:39:29,250 --> 00:39:31,420 >> Ve sonra, biz içine geçmesi home.html şablonu 746 00:39:31,420 --> 00:39:34,240 bu yüzden aslında yukarıya açalım gerçekten hızlı o Şablon, 747 00:39:34,240 --> 00:39:36,760 ve bu çalışma nasıl bir göz atın. 748 00:39:36,760 --> 00:39:42,130 Ve bu büyük bir HTML değil ama umarım biz Python odaklanabilirsiniz. 749 00:39:42,130 --> 00:39:46,960 >> Yani Ekle Yeni bir bağlantı var Mesaj ve böylece bu rotayı belirler 750 00:39:46,960 --> 00:39:51,580 Flask içinde biz Burada, hangi tanımlar. 751 00:39:51,580 --> 00:39:56,310 Bu yeni yazılan rota, ve biz burada o kadar belirtebilirsiniz. 752 00:39:56,310 --> 00:40:00,450 Ve böylece o zaman gidecek bir bağlantı Matara sunucu içindeki bu rotaya. 753 00:40:00,450 --> 00:40:03,820 >> Daha ilginç bir şey Burada döngü için budur. 754 00:40:03,820 --> 00:40:07,685 Yani biz bu belirtmek sonrası parametre olan 755 00:40:07,685 --> 00:40:09,560 geçirildi render_template işlevi 756 00:40:09,560 --> 00:40:13,550 sonrası yıllarda her yazı için geçirilen alır nesne. 757 00:40:13,550 --> 00:40:16,600 Biz dışarı yazdırmak istediğiniz yazı başlığı, H1, 758 00:40:16,600 --> 00:40:21,930 ve sonra aşağıda, biz dışarı yazdırmak istediğiniz Bir paragraf içinde yazılan metin. 759 00:40:21,930 --> 00:40:25,710 >> Ve burada, biz aslında can Python işlevini çağırın, 760 00:40:25,710 --> 00:40:35,130 bu yüzden strftime arayabilirler ST-RF-time, ve biçim dizesinde iletebilirsiniz 761 00:40:35,130 --> 00:40:37,064 Eğer dışarı verileri yazdırmak istediğiniz. 762 00:40:37,064 --> 00:40:39,980 Bu yüzden olabildiğince oldukça güzel oluyor aslında bu Python işlevini çağırın 763 00:40:39,980 --> 00:40:41,090 buradan içinden. 764 00:40:41,090 --> 00:40:44,370 Üzerinde biçimlendirme yapmak zorunda değilsiniz kontrolör tarafı, gerçekten, çünkü 765 00:40:44,370 --> 00:40:47,770 Tarih biçimlendirme şey olduğunu Eğer Görünüm içinde uğraşmak istiyorum. 766 00:40:47,770 --> 00:40:51,480 >> Ve bu yüzde Tüm şeyler süper önemli değil. 767 00:40:51,480 --> 00:40:55,270 Eğer belgeleri yukarı bakarsanız Python strftime fonksiyonu için, 768 00:40:55,270 --> 00:40:57,040 tüm bu belirtir şeyler, ama en bu 769 00:40:57,040 --> 00:40:59,190 nasıl, ne zaman biz aradılar Burada ana sayfasına, 770 00:40:59,190 --> 00:41:04,440 güzel bir ile biçimlendirir tarih ve belirten AM veya PM, 771 00:41:04,440 --> 00:41:09,410 fakat normal olarak, biz halinde Burada bu yoktu 772 00:41:09,410 --> 00:41:14,024 muhtemelen bazı çöp alırsınız Çok iyi bakmadı tarihi. 773 00:41:14,024 --> 00:41:15,940 Ve sonra biz belirtmek post.text, ben ve olabilir 774 00:41:15,940 --> 00:41:19,460 bir çift arasında koyduk hat sadece burada tatili 775 00:41:19,460 --> 00:41:21,820 Her yazı arasında bazı boşluklar koymak. 776 00:41:21,820 --> 00:41:26,270 >> Yani, en önemli düşünüyorum Bu örnekte, bir şey 777 00:41:26,270 --> 00:41:28,697 Eğer döngü için kullanabilirsiniz olmasıdır. 778 00:41:28,697 --> 00:41:30,780 Bu benzerdir şeyler PHP yapabilirsiniz. 779 00:41:30,780 --> 00:41:32,905 Sen, yineleyebilirsiniz Her şey, geçirilen alır 780 00:41:32,905 --> 00:41:36,719 ve bu nedenle, yerine sahip yapılacak kopyala / yapıştır, kopyala / tüm HTML yapıştırın 781 00:41:36,719 --> 00:41:40,010 Sadece o bir kez yazmak zorunda, ve Eğer mesajların tüm yineleme yapabilirsiniz. 782 00:41:40,010 --> 00:41:41,510 >> Ve bu şey İstediğiniz ortak 783 00:41:41,510 --> 00:41:44,510 Eğer çok fazla veri varsa, yapmak, ki verileriniz her şey için 784 00:41:44,510 --> 00:41:48,370 Eğer benzer bir şey yapmak istiyorum. 785 00:41:48,370 --> 00:41:51,690 Ve sonra, sadece hatırlıyorum sizi bu açıkça bir şey yazdırmak istediğiniz 786 00:41:51,690 --> 00:41:54,780 HTML kullanmak Burada çift parantez, 787 00:41:54,780 --> 00:41:57,820 ama sonra belirtmek istediğiniz zaman Bir durumu hakkında bazı bilgiler, 788 00:41:57,820 --> 00:42:02,430 veya yaklaşık bir döngü, sen Yüzde desteğini kullanın. 789 00:42:02,430 --> 00:42:08,730 >> Yani, Python geri dönüyor Kod, yani açıklar 790 00:42:08,730 --> 00:42:12,242 Ne ana oluyor Rota, biz oraya gitmek, 791 00:42:12,242 --> 00:42:14,450 Sadece görüntüler tüm mesajlar, ancak daha sonra soru 792 00:42:14,450 --> 00:42:17,440 nasıl biz aslında alırım olduğunu veritabanına içine mesajlar hangi 793 00:42:17,440 --> 00:42:18,970 biraz daha ilginç. 794 00:42:18,970 --> 00:42:23,960 >> Peki, ne zaman yeni tıklayın Burada gördüğümüz Mesaj link, 795 00:42:23,960 --> 00:42:26,000 Bu forma sizi yönlendirir. 796 00:42:26,000 --> 00:42:29,580 Ve bu sadece basit bir çağrı var render_template fonksiyonu, bu daha sonra 797 00:42:29,580 --> 00:42:32,110 HTML formunda yeni yazı geçirir. 798 00:42:32,110 --> 00:42:36,212 Yani bu bir göz atalım. 799 00:42:36,212 --> 00:42:37,420 Yani bu oldukça basit. 800 00:42:37,420 --> 00:42:45,110 Basit bir HTML formu, sahip olduğu biraz tanıdık gelecektir, 801 00:42:45,110 --> 00:42:47,380 CS50 Finans formlarına dayalı. 802 00:42:47,380 --> 00:42:49,940 Ve böylece, biz burada eylem belirtin. 803 00:42:49,940 --> 00:42:52,435 Ve burada, çalışıyorsanız PHP ile, normalde, o 804 00:42:52,435 --> 00:42:55,930 gibi bir şey olurdu, create.PHP, ama burada 805 00:42:55,930 --> 00:42:59,960 biz aslında bir rota belirlemek Matara sunucu içinde. 806 00:42:59,960 --> 00:43:02,520 Ve böylece, bu güzergah karşılık gelir oluşturmak rota 807 00:43:02,520 --> 00:43:05,680 Biz burada var olan Biz ikinci ineceğiz. 808 00:43:05,680 --> 00:43:07,630 >> Ve böylece, biz belirtmek o, bir post yöntemi var 809 00:43:07,630 --> 00:43:09,820 Biz göndermek istiyorum, çünkü Bu form verileri ve genellikle 810 00:43:09,820 --> 00:43:12,945 Bir formdaki verileri gönderirken, Eğer bir yazı isteği kullanmak isteyebilirsiniz, 811 00:43:12,945 --> 00:43:15,760 Eğer sonunda yok sadece bu yüzden Bu büyük, hantal URL ile. 812 00:43:15,760 --> 00:43:18,970 Ama aynı zamanda bir GET isteğini kullanabilirsiniz, ve değişken yönlendirme ile geçmek 813 00:43:18,970 --> 00:43:21,170 ama formlar için, bu güzel Burada yazılan isteğine. 814 00:43:21,170 --> 00:43:24,620 Ve böylece o, tıpkı senin gibi HTML ve PHP ile yapacağını, 815 00:43:24,620 --> 00:43:28,420 Bu metin girdileri belirtebilirsiniz, ve bunların adını belirtebilirsiniz, 816 00:43:28,420 --> 00:43:33,490 ve geçmiş alacak isim Flask içindeki istek nesnesine. 817 00:43:33,490 --> 00:43:36,960 >> Ve sonra biz bir sun var düğmesine Mesaj söylüyor. 818 00:43:36,960 --> 00:43:40,760 Ve burada, Mesaj adıdır düğmesi, bir blog yazısı var, çünkü 819 00:43:40,760 --> 00:43:42,700 ama burada, yazılan istek yöntemidir. 820 00:43:42,700 --> 00:43:47,060 Yani o aynı kelime vardır ama aslında alakasız. 821 00:43:47,060 --> 00:43:48,460 Evet 822 00:43:48,460 --> 00:43:54,800 >> Python kodu geri dönecek olursak, Biz yöntem oluşturmak çağrıldığında, 823 00:43:54,800 --> 00:43:57,702 Burada dikkat edin yapabilirsiniz Aslında rota dahilinde belirtin 824 00:43:57,702 --> 00:44:00,650 istek yöntemleri Eğer kabul etmek istediğiniz, 825 00:44:00,650 --> 00:44:04,770 ve bu nedenle burada, o ben belirtmek Sadece Mesaj yöntemini kabul etmek istiyorum. 826 00:44:04,770 --> 00:44:09,800 Yani, ben aslında sayfasını ziyaret etmeye çalıştığınızda, eğer doğrudan bir GET isteği kullanarak, hangi 827 00:44:09,800 --> 00:44:11,700 o "Yöntem izin verilmiyor." söyle olacak 828 00:44:11,700 --> 00:44:15,840 >> Ve böylece, sen çeşit gibi sayfaları Ben sadece ben bu oluşturmak sayfa 829 00:44:15,840 --> 00:44:20,192 Gerçekten bir yol olarak kullanıyor form gönderildiğinde almak için, 830 00:44:20,192 --> 00:44:22,900 Eğer bilmediğimiz belirtebilirsiniz insanlar oraya gitmek mümkün istiyorum 831 00:44:22,900 --> 00:44:25,650 doğrudan GET isteği ile, veya istemiyorsa, 832 00:44:25,650 --> 00:44:28,580 nedense, Post isteği, Sadece, burada GET belirtebilirsiniz 833 00:44:28,580 --> 00:44:32,720 ancak bu örnekte, sadece Mesaj isteği dışarı gitmek istiyorum. 834 00:44:32,720 --> 00:44:38,700 >> Yani, create_post çağrıldığında ne Biz Mesaj talep yoluyla o ziyaret 835 00:44:38,700 --> 00:44:43,600 Belirli bir gitmek ne zaman Rota, bu istek nesnesi var, 836 00:44:43,600 --> 00:44:46,640 ve biz ithal etmek zorunda çok üstünde istekleri, 837 00:44:46,640 --> 00:44:49,640 ancak bu isteği var geçirilen alır nesne, 838 00:44:49,640 --> 00:44:53,210 ve form verilerini ulaşabilir, hangi otomatik olarak doldurulacaktır alacak 839 00:44:53,210 --> 00:44:55,070 Bir formdan bir isteği gönderdiğinizde. 840 00:44:55,070 --> 00:44:56,990 >> Ve sonra, ben ne düşünüyorsunuz , gerçekten harika olduğunu 841 00:44:56,990 --> 00:45:02,840 Form nesnesi geçmiş olsun o içinde, sadece bir Python sözlüğü olduğunu 842 00:45:02,840 --> 00:45:10,560 bunu burada access--, eğer izin içerir Bana sadece, yanındaki HTML yukarı çekin 843 00:45:10,560 --> 00:45:17,670 yani bu olabilir referans, evet, böylece 844 00:45:17,670 --> 00:45:21,060 Burada belirttiğiniz isimler farklı alanlar için, yani 845 00:45:21,060 --> 00:45:23,900 başlık ve metin, biz Daha sonra sadece buraya olanlar kullanabilir 846 00:45:23,900 --> 00:45:27,110 form verilerini içine endeksleri olarak. 847 00:45:27,110 --> 00:45:28,950 Yani süper uygundur. 848 00:45:28,950 --> 00:45:33,320 >> Öyleyse biz, post.create diyoruz oluşturmak ve otomatik olarak ekler 849 00:45:33,320 --> 00:45:36,850 veritabanına yeni Mesaja nesnesi. 850 00:45:36,850 --> 00:45:40,690 Ve ben bu işlevi oluşturmak düşünüyorum Burada nasıl bir gerçekten harika bir örnek 851 00:45:40,690 --> 00:45:44,900 Güçlü Flask ve bu ile çalışıyor Eğer bir şey yapıyor sanki çünkü 852 00:45:44,900 --> 00:45:48,660 PHP, sen gerekebilir doğrulama bir sürü yapmak, 853 00:45:48,660 --> 00:45:51,730 Eğer olurdu Bir veritabanı bağlantısı kurmak, 854 00:45:51,730 --> 00:45:55,210 Eğer olurdu SQL sorgusu çalıştırmak, 855 00:45:55,210 --> 00:45:59,550 ama burada biz sadece bu güzel olması post.create, hangi biz o can sadece 856 00:45:59,550 --> 00:46:01,520 bilgi almak istek nesnesinin, 857 00:46:01,520 --> 00:46:05,370 ve ardından yeni haline geçmesi biz oluşturma olduğunuzu yayınlayın. 858 00:46:05,370 --> 00:46:07,850 >> Ve, en son o zaman yapmak istiyoruz şey, 859 00:46:07,850 --> 00:46:09,630 yönlendirmek için eve kullanıcı geri. 860 00:46:09,630 --> 00:46:13,020 Ve böylece biz bunu kullanın Matara fonksiyonu yönlendirmek. 861 00:46:13,020 --> 00:46:17,770 Ve bir şey biz görmemişti daha önce, bu URL işlevi oldu. 862 00:46:17,770 --> 00:46:21,970 Yani işlev için URL sağlar Aslında adı geçmektedir 863 00:46:21,970 --> 00:46:26,090 Python kodunda bir fonksiyonun, yerine belirli güzergah daha 864 00:46:26,090 --> 00:46:26,720 o da var. 865 00:46:26,720 --> 00:46:32,107 >> Yani tıpkı kolayca olabilir slash bir kullanıcı yönlendirilir, 866 00:46:32,107 --> 00:46:37,050 Hangi eve geri göndermek, ama olur Fonksiyon güzel URL'sini kullanarak, 867 00:46:37,050 --> 00:46:39,990 Değiştirmek çünkü eğer şeyler konumu, 868 00:46:39,990 --> 00:46:44,080 bu yüzden ben değiştirmek diyelim Ev yerine / evde olmak 869 00:46:44,080 --> 00:46:47,040 bu hala o dönecekti / home, aslında gider ve yukarı görünüyor çünkü 870 00:46:47,040 --> 00:46:50,770 İşlevin adı ve Bunun için URL'yi geri verecektir. 871 00:46:50,770 --> 00:46:52,490 >> Yani, bir çeşit üzerinde sen varsayım 872 00:46:52,490 --> 00:46:55,489 nerede şeyleri değiştirmek için daha büyük olasılıkla işlevlerinin isimlerini daha vardır. 873 00:46:55,489 --> 00:46:58,840 Gerçekten bunu kullanabilirsiniz fonksiyonu için güzel URL. 874 00:46:58,840 --> 00:47:02,470 Ve bir şey farkında olmak Bu, biraz zor 875 00:47:02,470 --> 00:47:05,750 Eğer sadece ebil düşünüyorum olduğunu için URL yönlendirme, çağrı 876 00:47:05,750 --> 00:47:10,600 ama aslında yollarının hepsi var metin ve HTML çeşit dönmek için, 877 00:47:10,600 --> 00:47:14,360 bu yüzden aslında var yönlendirme Aramaya geri dönmek. 878 00:47:14,360 --> 00:47:18,379 Aksi takdirde, bir şey alırsınız Geçersiz bir dize dönen değil hakkında, 879 00:47:18,379 --> 00:47:21,420 Bunların hepsi geri dönmek zorunda çünkü HTML aslında işlemek istiyorum. 880 00:47:21,420 --> 00:47:26,980 >> Ve böylece, yönlendirme çağırdığınızda, bu sayfaya yönlendirir 881 00:47:26,980 --> 00:47:30,270 ama aslında HTML döndürür O yönlendirme yürütmek gerekiyor. 882 00:47:30,270 --> 00:47:34,430 883 00:47:34,430 --> 00:47:37,110 Ana sayfaya geri gidin. 884 00:47:37,110 --> 00:47:39,200 Bu yüzden bu iki farklı görüşlere sahip. 885 00:47:39,200 --> 00:47:40,132 Biz ev görünümü var. 886 00:47:40,132 --> 00:47:41,590 Ya da, ben şablonları demeliyim sanırım. 887 00:47:41,590 --> 00:47:44,190 Biz bu iki şablon var, Ev şablonu olan 888 00:47:44,190 --> 00:47:48,500 Bizim mesajların hepsi görüntüler ve o zaman bu reklam bir şey var, 889 00:47:48,500 --> 00:47:52,970 Eğer yazıyı tıkladığınızda ve bu gider Flask içinde yeni bir rotaya, 890 00:47:52,970 --> 00:47:55,920 ama bu yol mutlaka değil karşılık gelen bir şablon var. 891 00:47:55,920 --> 00:47:59,290 892 00:47:59,290 --> 00:48:01,560 Sen görmek zorunda değilsiniz şey, ama yine de can 893 00:48:01,560 --> 00:48:04,090 Bu çalışma gidiş perde arkasında. 894 00:48:04,090 --> 00:48:07,450 Ve sonra yönlendirildi Ana sayfaya geri. 895 00:48:07,450 --> 00:48:12,230 Ve kesinlikle, bu iş kolay şablona bazı güzel CSS 896 00:48:12,230 --> 00:48:15,580 ve bu çok güzel görünmesi, ancak ana mantığının 897 00:48:15,580 --> 00:48:18,590 Python vardır. 898 00:48:18,590 --> 00:48:20,020 >> Bu örnekte ilgili sorularınız? 899 00:48:20,020 --> 00:48:22,760 Ben bir sürü orada olduğunu biliyorum farklı şeyler, oraya gidiyor 900 00:48:22,760 --> 00:48:25,341 biz görmemişti bir çok şey daha önce, ama bir şey gibi. 901 00:48:25,341 --> 00:48:25,840 Evet. 902 00:48:25,840 --> 00:48:28,346 >> KİTLE 1: Eğer bir şey yapmak zorunda mı bu verileri fırçalayın özel 903 00:48:28,346 --> 00:48:29,600 şeklinde gelen? 904 00:48:29,600 --> 00:48:31,109 Ben, "oluşturmak" sen sadece dedi fark 905 00:48:31,109 --> 00:48:33,900 EZRA Zigmond: Evet, böylece var: Aslında, bu gerçekten iyi bir nokta. 906 00:48:33,900 --> 00:48:36,350 Soru Yani, do you kontrol ve emin olmanız gerekir 907 00:48:36,350 --> 00:48:39,190 veri geçerli olduğunu ve ovma herhangi bir sıralama yapmak 908 00:48:39,190 --> 00:48:41,840 geçerli olduğundan emin olmak için, Burada gördüğünüz gibi, çünkü 909 00:48:41,840 --> 00:48:42,660 Bunu yapmıyorum. 910 00:48:42,660 --> 00:48:48,140 Yani ne olacağını görelim Ben boş bir şey sonrası eğer. 911 00:48:48,140 --> 00:48:51,190 Yani, aslında sadece yapacağız Boş yazılan ve DateTime doldurun. 912 00:48:51,190 --> 00:48:55,990 >> Yani gerçekte, muhtemelen olur Böyle bir şey yapmak istiyorum, 913 00:48:55,990 --> 00:49:04,749 başlık eşitse belki belirtmek boş bir dize, o zaman bunu yapmayın. 914 00:49:04,749 --> 00:49:07,290 Başlık Veya, sadece bunu boş bir dizeye eşit değil. 915 00:49:07,290 --> 00:49:10,330 Yani aslında otomatik değil Bu fırçalama özen 916 00:49:10,330 --> 00:49:12,820 Sizin için, böylece hala yapmamız gerekiyor. 917 00:49:12,820 --> 00:49:14,330 Evet, iyi bir soru. 918 00:49:14,330 --> 00:49:18,497 >> İZLEYİCİ 2: Ona bodur mu devamı enjeksiyon için? 919 00:49:18,497 --> 00:49:19,890 Biliyor musun? 920 00:49:19,890 --> 00:49:22,830 >> EZRA Zigmond: Umarım, peewee yapar. 921 00:49:22,830 --> 00:49:25,830 Ben kesinlikle güzel bir olacağını düşünüyorum Kötü kütüphane bunu yapmak olmasaydı. 922 00:49:25,830 --> 00:49:29,511 923 00:49:29,511 --> 00:49:32,690 Ben tam olarak bilmiyorum. 924 00:49:32,690 --> 00:49:34,820 Ben bakmak olurdu o oluşturduğu sorgula. 925 00:49:34,820 --> 00:49:38,980 Ben yazdığınız takdirde, düşünüyorum tür baktım blog yazısı 926 00:49:38,980 --> 00:49:46,370 SQL enjeksiyon saldırısı gibi, Böyle bir şey, eğer bu 927 00:49:46,370 --> 00:49:49,370 Bir parola alanına falan olduğunu Eğer böyle bir şey yapmak gerekebilir. 928 00:49:49,370 --> 00:49:53,410 >> Ben hala olacağını düşünüyorum kelimenin tam anlamıyla gönderildi olsun, 929 00:49:53,410 --> 00:49:59,200 ama ben peewee yapıyor düşünüyorum Verilerin ovma çeşit 930 00:49:59,200 --> 00:50:01,680 aslında onu çalıştırır önce. 931 00:50:01,680 --> 00:50:04,510 >> KİTLE 1: Bu metin alanıdır Doğru, düz metin almak için tasarlanmış? 932 00:50:04,510 --> 00:50:05,710 >> EZRA Zigmond: Evet, öyle. 933 00:50:05,710 --> 00:50:06,465 Evet. 934 00:50:06,465 --> 00:50:09,590 Yani bütün olduğunu düşünüyorum, bu yüzden bu doğru davranış, o yapacak, 935 00:50:09,590 --> 00:50:12,170 ama bu Peewee düşünüyorum Umarım bunu yapar 936 00:50:12,170 --> 00:50:13,780 Onların ucunda koruma çeşit. 937 00:50:13,780 --> 00:50:16,090 Ve eğer istedim double check, orada 938 00:50:16,090 --> 00:50:19,530 Bir sorgu oluşturmak yolu vardır. 939 00:50:19,530 --> 00:50:22,622 bu yüzden gerek yok doğrudan yürütün. 940 00:50:22,622 --> 00:50:24,330 Ben bir almak zorunda belgelere bakmak, 941 00:50:24,330 --> 00:50:27,930 ama aslında görüntüleyebilirsiniz O oluşturuyor SQL, 942 00:50:27,930 --> 00:50:30,840 ve bu bir göz atın ve yapmak bazı şeyleri kaçan olduğundan emin olun. 943 00:50:30,840 --> 00:50:33,700 >> Bir başka neden, neden olabilir SQL bakmak istiyorum 944 00:50:33,700 --> 00:50:37,920 Bu peewee eğer olduğunu çıktısı şeyler gerçekten yavaş gidiyor gibi görünüyor 945 00:50:37,920 --> 00:50:41,090 Eğer bir göz atın ve ne görebilirsiniz Bazen çünkü aslında yapıyor 946 00:50:41,090 --> 00:50:44,670 Yanlışlıkla eklemek çok kolay içinde, yolu yazmak, 947 00:50:44,670 --> 00:50:47,880 Yanlışlıkla olabilir İlk tüm veritabanı seçin 948 00:50:47,880 --> 00:50:50,230 ve daha sonra bir çeşit işlemi yapmak Bu konuda, size gerçekten 949 00:50:50,230 --> 00:50:51,320 bir alt seçmek istedim. 950 00:50:51,320 --> 00:50:53,560 >> Ve böylece, her şey eğer değil Oldukça doğru gidiyor 951 00:50:53,560 --> 00:50:57,300 bu istek bakmak iyidir aslında oluşturulan vurmayacak. 952 00:50:57,300 --> 00:50:57,800 Evet. 953 00:50:57,800 --> 00:51:02,100 >> İZLEYİCİ 2: İlk başladığımda, Eğer 5000 olarak limanda koydu. 954 00:51:02,100 --> 00:51:02,904 >> EZRA Zigmond: Evet. 955 00:51:02,904 --> 00:51:06,070 İZLEYİCİ 2: peewee varsayılan mı veya değiştirebileceğiniz bir şey olduğunu? 956 00:51:06,070 --> 00:51:10,870 EZRA Zigmond: Evet, bu yüzden port Flask varsayılan olduğunu. 957 00:51:10,870 --> 00:51:13,061 Eğer olmadan çalıştırırsanız bir şey belirterek, 958 00:51:13,061 --> 00:51:14,310 otomatik olarak yapacak. 959 00:51:14,310 --> 00:51:16,060 Ben olurdu inanıyorum Bu kontrol çift, 960 00:51:16,060 --> 00:51:19,130 ancak, app.run o belirtebilirsiniz Ben, sen gibi bir şey yapabilirsiniz düşünüyorum 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 En gerçek bir hızlı deneyin vereyim. 964 00:51:23,750 --> 00:51:29,100 965 00:51:29,100 --> 00:51:32,230 Evet, bu yüzden sadece belirtebilirsiniz port = 8080, ve o orada çalıştıracak 966 00:51:32,230 --> 00:51:36,130 Eğer isteseydim düşünüyorum, çalıştırmak için IDE, ben bunu hiç denemedim 967 00:51:36,130 --> 00:51:38,527 ama bence eğer , 8080 portunda koştu 968 00:51:38,527 --> 00:51:40,360 muhtemelen mümkün olacağını sunucuya erişmek için, 969 00:51:40,360 --> 00:51:41,870 Sadece web sitesi için olduğunu gibi. 970 00:51:41,870 --> 00:51:44,390 >> Evet, bu ancak kolay değiştirmek için bu eğer 971 00:51:44,390 --> 00:51:48,540 gibi liman-yönlendirme herhangi bir tür Yapmanız gereken şeyler. 972 00:51:48,540 --> 00:51:50,410 >> Başka soru? 973 00:51:50,410 --> 00:51:50,916 Evet? 974 00:51:50,916 --> 00:51:53,416 KİTLE 1: Yani, gördüm senin , sizin de bahsettiğiniz gibi modeller, 975 00:51:53,416 --> 00:51:55,647 Eğer belirtmek zorunda her nesne için bir veritabanı. 976 00:51:55,647 --> 00:51:58,105 Eğer biliyor musunuz, yok Bu sizin eğer gerçekten kolay hale 977 00:51:58,105 --> 00:52:03,210 SQLite veritabanları bir sürü var olduğunu size tek web uygulaması için kullanmak istediğiniz, 978 00:52:03,210 --> 00:52:07,210 Sadece bir demet belirtebilirsiniz Modelinizdeki farklı olanları? 979 00:52:07,210 --> 00:52:11,620 >> EZRA Zigmond: Evet, bana izin gerçek hızlı olduğunu açın. 980 00:52:11,620 --> 00:52:17,570 Eğer sahip olmak istiyorsanız Yani, söylüyorsun Farklı bir şey bir demet, belki 981 00:52:17,570 --> 00:52:22,670 Bazıları için, ister ve öğrenciler nedeni, böyle bir şey? 982 00:52:22,670 --> 00:52:26,870 Evet, bu yüzden düşünüyorum hala, her model 983 00:52:26,870 --> 00:52:30,652 hala sahip olması gerekir kendisine atanan tek veri tabanı, 984 00:52:30,652 --> 00:52:32,610 ama eğer isteseydi var Farklı modeller bu 985 00:52:32,610 --> 00:52:35,818 Farklı veritabanı nesneleri atadınız buna, kesinlikle bunu yapabilir. 986 00:52:35,818 --> 00:52:43,070 Yani, eğer ben, yeni oluşturulan Böyle bir şey, 987 00:52:43,070 --> 00:52:47,000 ve şimdi bu bir öğrenci olduğunu , işin garibi, bir blog yazısı gibi görünüyor 988 00:52:47,000 --> 00:52:49,390 Ben belirtebilirsiniz Veritabanı burada db_2 eşittir. 989 00:52:49,390 --> 00:52:51,390 Yani, ben olduğunu düşünüyorum Eğer bunu yapabilir ana yolu. 990 00:52:51,390 --> 00:52:54,560 991 00:52:54,560 --> 00:52:56,200 >> Güzel. 992 00:52:56,200 --> 00:52:58,410 Başka soru? 993 00:52:58,410 --> 00:53:02,170 >> Yani biraz kadar bitirmek için bit, burada bazı kaynaklar, 994 00:53:02,170 --> 00:53:06,030 ve bu slaytlar çevrimiçi ilan edilecektir bu yüzden aslında bu bağlantıları alabilirsiniz. 995 00:53:06,030 --> 00:53:08,500 En iyi kaynaklar gerçekten Flask belgelerine 996 00:53:08,500 --> 00:53:09,930 ve kendilerini peewee. 997 00:53:09,930 --> 00:53:12,940 Onlar gerçekten iyi yazılmış ediyoruz sanırım. 998 00:53:12,940 --> 00:53:18,180 Yani, Flask sitesi burada ve bir hızlı başlangıç ​​öğretici olduğu 999 00:53:18,180 --> 00:53:20,710 Benzer üzerinden yürüyecek Ben yürüdü ne şeyler, 1000 00:53:20,710 --> 00:53:23,560 ancak gözden her türlü istiyorsanız Ben gittim şeyler, 1001 00:53:23,560 --> 00:53:26,200 ya ben açıkladı düşündüm kafa karıştırıcı bir şekilde bir şey, 1002 00:53:26,200 --> 00:53:28,390 Orada benzer örnekler gerekecek. 1003 00:53:28,390 --> 00:53:31,570 >> Peewee belgelerine sahiptir ve bir hızlı başlangıç ​​öğretici var 1004 00:53:31,570 --> 00:53:34,650 O ana parametreleri üzerine çıkması Kullanmak istediğiniz söyledi. 1005 00:53:34,650 --> 00:53:38,900 Yani, işler ben konuştuk Eşsiz ve belirterek varsayılan, 1006 00:53:38,900 --> 00:53:42,710 alanların farklı tür olduğunu o orada olacağını kullanabilirsiniz. 1007 00:53:42,710 --> 00:53:44,690 >> Ayrıca, varsa peewee ilgili sorular, 1008 00:53:44,690 --> 00:53:47,530 ve sen stackoverflow göndermeden Aslında Peewee yapan adam 1009 00:53:47,530 --> 00:53:49,500 gider ve bazen bu cevap. 1010 00:53:49,500 --> 00:53:53,200 Umarım bir sorunuz varsa O, cevap mümkün olacak 1011 00:53:53,200 --> 00:53:54,867 O her şeyi yazdı çünkü. 1012 00:53:54,867 --> 00:53:56,700 Ben her şeyi düşünüyorum Ben karşılamak istedim. 1013 00:53:56,700 --> 00:53:58,930 Geldiğiniz için teşekkür ederiz. 1014 00:53:58,930 --> 00:54:02,688