[MUSIC PLAYING] EZRA Zigmond: Hi, hər kəs. Bu gün gələn üçün təşəkkür edirik. Bu seminar "Python deyil Web kolba ilə apps. " Belə ki, mən söhbət etmək gedirəm niyə bir az etmək üçün şarın istifadə edə bilərsiniz Python ilə web apps kimi qarşı orada bəzi digər çərçivəsində kimi üçün Ən tanınmış Django. alt "və bir şeydir peewee " biz haqqında danışmaq olacaq SQL verilənlər bazası ilə qarşılıqlı. Bu, həqiqətən gözəl edir. Belə ki, burada yalnız bir sürətli rundown var Mən artıq getmək istəyirəm nə. Belə ki, ilk, yalnız bir slayd ki, quickstart olacaq olan hər şeyi almaq üçün necə bilgisayarınızda qurmaq. Mən nümayiş gedirəm Yerli Mac maşın bu, ki, yalnız, çünki mən bu etdik harada əvvəl, mən, bu ən rahat deyiləm lakin bu mütləq deyil CD50 IDE mümkün. Belə ki, sonra, mən istəyirəm , Flask nə təqdim və siz razı niyə lazımdır ilk növbədə istifadə edin. Sonra mən tez verəcəyik Siz nə nümunəsi Flask, tez nümunə edə bilərsiniz Siz Peewee nə edə bilər ki, və sonra mən bir daha göstərir ki, tam nümunə proqram Düşünürəm ki, biz birlikdə qoymaq ki, birlikdə vasitəsilə gəzmək olar. Və sonra nəhayət, in son slide, mən baxmaq, bəzi resurslar Daha ətraflı məlumat üçün online at. Bu tam deyil Flask necə istifadə tutorial. Mən tərk etmək umuyoruz suallar üçün bir müddət. Hər kəs yalnız yerli seyr kimi ortada həyata bağırmaq Əgər hər hansı bir sualınız varsa. Belə ki, sürətli quraşdırma stuff, Siz birlikdə izləmək istəyirsinizsə, və ya bu almaq istəyirsinizsə öz maşın up, Mən Python 2.7.10 istifadə gedirəm. Flask ilə çalışır Python 3, amma mən istəyirəm var, çünki, Python 2 istifadə bəzi Python paketləri ki Hələ 3 işləmir. Siz tırtıl yüklü olan bir Python paketi meneceri, Sizin Python, mən hesab edirəm ki, və ya daha çox 2.7.9 bərabər, Siz artıq yüklü, bu bu paketləri yüklemek üçün super asan. Siz tırtıl quraşdıra edə bilərsiniz Flask, peewee bərpa tırtıl, adətən yalnız sudo run var belə icazələrin iş ki. Və siz istifadə əgər bir super Python köhnə versiyası Mən sizin Python yenilənməsi gəlir və ya EasyInstall istifadə DİP yüklemek üçün. Belə ki, növbəti sual, Flask nədir? Mən ilk tahmin məntiqi sual mən merak uzun müddət üçün, bir web app nədir? Ki, bir söz var, çünki mən bir çox ətrafında atılan edirəm Mən, həqiqətən, bilmirdim ki. Mən ən yaxşı hesab edirəm ki, bir web app nə Məsələn, həqiqətən CS50 Maliyyə, var Bu, həqiqətən, yalnız bir web deyil lakin bu bir şey ki, sort ilə qarşılıqlı bilər. Istifadəçi hesabı var və müxtəlif şeyi bütün növ. Belə ki, məhz siz çəkmək bir web nə arasında xətti, və bir web app, nə növ edir ixtiyari, amma fikir tapmaq, Bu bir web daha çox bir şey və faydalı proqram var. Belə ki, Flask bir çərçivə üçün Python istifadə edərək web apps edilməsi. Və ümid edirəm ki, ilin sonuna qədər Bu, mən sizə razı olacaq Siz, həqiqətən, bir şey yazmaq bilər ki, CS50 Maliyyə kimi Python istifadə I şəxsən, PHP çox yaxşı kimi. Belə ki, Flask, onlar zəng microframework, olan, onlar çox demək sadə, lakin genişlənən. Belə ki, sizə lazım yalnız nə var lakin daha çox xüsusiyyətləri istəyirsinizsə, bu gətirək asandır. Amma bu yalnız bir microframework, deyil kiçik layihələr üçün yalnız var ki, demək. Mən deyir burada bir link var Obama 2012-ci ildə Flask istifadə onun kampaniyası üçün veb olan ümid edirəm ki, bir dəstək bir şey deyil. Lakin şey ki, mən həqiqətən Flask haqqında istəyirəm , bu, həqiqətən etmir ki, Sizin üçün qərarların hər hansı bir sort. Sadəcə biz istəyirik, çünki web apps haqqında danışarkən, Mən Ruby müqayisə etmək Rails və Django, həm də olan böyük çərçivələr, lakin Onlar həm də fərziyyələr etmək haqqında necə istəyirəm verilənlər bazası ilə qarşılıqlı, Necə təqdim etmək istəyirəm views, və onlar mütləq istəyirik ki, yaxşı aspektləri. Məsələn, Ruby on Rails üçün Bu aktiv rekord sistemi var, olan həqiqətən gözəl data ilə qarşılıqlı yolu, ancaq Ruby istifadə etmək istəyirsinizsə Rails, sort ki, daxil bağladı edirik. Amma Flask ilə, mən kimi Peewee ilə sizə göstərmək, Siz nə cür istifadə edə bilərsiniz verilənlər bazası istədiyiniz, və yalnız ki, çəkmək olar kolba bir uzantısı kimi. Belə ki, niyə mən həqiqətən Flask kimi, bu ki Sizin üçün fərziyyələr etmir şeyi əsaslanır həqiqətən, ehtiyac yoxdur. Belə ki, niyə kolba istifadə etməli? üstünlükləri yalnız var həqiqətən əsas xüsusiyyətləri vardır onu inşa siz lazımdır. Belə ki, siz narahat yoxdur şeyi bütün dəstə dərk Siz, həqiqətən, ehtiyac yoxdur ki. Siz narahat yoxdur funksiyalar off dönüş haqqında Siz, həqiqətən, ehtiyac yoxdur ki. Mən qeyd etdiyim kimi, bu, super var şeyi uzantıları əlavə etmək üçün asandır Siz lazımdır ki. Bəziləri, Flask var bunun üçün öz dəstək. Belə ki, Flask deyilən bir şey var ki admin güzgülər admin, Django təmin panel, olan bir gözəl əyani yol verir Sizin veb idarə etmək. Ancaq yenə də, siz değilseniz bir şey sadə edilməsi, Siz yəqin ki, böyük bir admin lazım deyil panel, mən ki, super gözəl hesab edirəm. Və mənfi cəhətləri, ki Siz qutusu az güc var. Belə ki, ilk kolba açmaq zaman, və Python proqramı, Yalnız Flask Növü idxal * və ya hər hansı, tam bütün almaq deyil xüsusiyyətləri edə bilərsiniz. Və belə ki, daha aydın var istədiyiniz xüsusiyyətləri siyahısı. Belə ki, bir dezavantaj var, amma kiçik web bina hesab edirəm ki, mən kimi apps göstərən gedirəm Siz, həqiqətən bir problem deyil. Və son şey nədir bir typo olan demək ehtimal, az standart var ki Flask necə istifadə üçün konvensiyalar, kimi çox deyil, çünki peşəkarcasına istifadə edən insanlar Django ilə müqayisədə. Belə ki, kimi bir şey varsa, Django ildə "necə x etməliyəm", Siz yəqin ki, tapa bilərsiniz. Yaxşı dizayn var istifadə edə bilərsiniz nümunələri, lakin Flask ilə, bu sort öz yol getmək, yalnız bir çünki olduqca kiçik kitabxana. Belə ki, o var mənfi cəhətləri, amma hesab edirəm ki, ki, hələ də istifadə etmək yaxşı bir kitabxana var. Belə ki, yalnız sağ kolba jump edək. Bu, mütləq niyyətində deyil tam tutorial olmaq, ancaq bir fikir vermək üçün var şeyi strukturu necə, və siz gedir rahat hiss off və sənədlərin baxaraq və daha çox tapmaq. Belə ki, mənə, həqiqətən, açmaq bildirin ilk sadə misal, Və nə göstərir ki, kimi görünür, sonra biz will bir az daha onu qırmaq. Belə ki, burada, mənə çalışan almaq imkan verir. Belə ki, mən indi mənim proqram çalışan var. Mən Safari açmaq gedir və alıram mənim yerli host çalışan. Mən yalnız bu böyük etmək üçün gedirəm. Amma localhost: 5000 Belə ki, indi, bütün bu yoxdur , siz veb səhifəsinə zaman, Bu "Hello kolba" çap olan super faydalı deyil ancaq ki, sərin hesab burada bu kiçik fayl, biz bir web server çalışan ki, bir şey çap olunur. Belə ki, həqiqətən baxaq ikinci koda, və bir az onu qırmaq. Ölçüsü burada hər kəs üçün yaxşı? Belə ki, ümid edirəm ki, siz bir qədər istəyirik Python istifadə rahat. Düşünürəm ki, biz baxmaq olar ki, fərz edirəm Python və onun vasitəsilə oxuyun. Siz haqqında hər hansı bir sualınız varsa bir şey, mən də ki, artıq getmək olar. Belə ki, ilk line kolba ki, var, Biz kapitalı ilə kolba idxal "F" olan bütün növ sizə lazım əsas xüsusiyyətləri. Zaman yazılı etdiyiniz bir fayl və istifadə Flask, ki, idxal istəyirəm olacaq, ki, bütün əsas şeylər var yalnız çünki. Biz nə növbəti şey, biz yalnız bu funksiya Flask zəng bir app obyekt yaratmaq, və istəyirik həmişə bunu istəyirəm olacaq. Və sonra, aşağı jumping bottom tez bu hissəsi burada var Edir if_name _ == "_ main_" bir Python Konvensiyanın sort. Belə ki, bu yalnız əgər icra edəcək birbaşa Python istifadə edərək, bu fayl axır. Sonra, biz olan, app.run zəng həqiqətən gedir app başlamaq. Belə ki, ana quruluş ki, Əgər hər hansı bir Flask proqram lazımdır, bu olacaq ki, app = Flask (_name_), sonra app.run. Belə ki, iki şey mən ki, burada, biz marşrutları zəng edir. Belə ki, haqqında danışmaq edək bir az daha marşrutlaşdırma. Mən geri slayd getmək lazımdır. Belə ki, ən fundamental Flask konsepsiyası marşrutlaşdırma olunur. Və bu fikirdir ki, Python funksiyaları təyin xüsusi ünvanlara web page. Belə ki, istədiyiniz zaman yeni marşrut yaratmaq, Bu @ app.route istifadə funksiyası decorator. Belə ki, ilə tanımadığı əgər var Python funksiyası bəzəyi, Bu anlayış var ki, Bir funksiyası almaq imkan verir və başqa bir şey ilə əhatə edir. Belə ki, həqiqətən, bu decorator nə, , bu aşağıdakı funksiyası edir ki, və daha çox məlumat əlavə bu, lakin nə Flask həqiqətən baş edir super deyil mühüm, lakin vacibdir nə, ki, marşrut əvvəl onda bu @ app.route qoymaq və Marşrutun ünvan, belə çizgi nə biz biz yalnız web page açmaq zaman gördüm. Belə ki, ana var. Bu, sadəcə çizgi marşrut var. Və sonra bu funksiya var. funksiyası adı Istədiyiniz hər hansı ola bilər. Bu, mütləq deyil marşrutu ilə var. Və sonra, nə funksiyasının qaytarılması, funksiyası bir simli qaytarmalıdır. Və simli bilər , HTML və ya bir şey ola və nə olacaq əslində HTML web browser döndü, və bu göstərəcək. Belə ki, bu eyni kodu ki, məsələn idi Mən yalnız qaçdı ki, belə ki, biz çizgi ziyarət zaman, bir Hello World funksiyası çağırır ki, yalnız bir string, Hello Flask qaytarır, ki, ekranda çap olur. Belə ki, başqa bir nümunə var, olan zaman salam / ziyarət Bu Hello Word, çap olan həqiqətən, Hello World demək lazımdır, lakin qəsdən olduğunu iddia edək. Belə ki, real sürətli ki qoparmaq edək. Belə ki, salam / localhost getmək əgər, indi başqa bir şey çap edəcək. Belə ki, necə yalnız bir sürətli misal var iki müxtəlif marşrutları yarada bilərsiniz. Belə ki, indiyə qədər bu, super faydalı deyil Siz edə bilərsiniz bir çox yoxdur, Yalnız bütün bunu edə bilər müxtəlif HTML pages olan, və müəyyən bir ziyarət zaman səhifə yalnız səhifə yükləyir. Belə ki, bir daha görək Siz edə bilərsiniz faydalı şeylər. Belə ki, bir şey ola bilər ki, Mən çıxardı nümunə qeyd up, mən app.run idi ki, (debug = True). Belə ki, nə bu debug dəlil yoxdur Web server run zaman, Sizin tətbiqi olduğunuzda, Bir faylı dəyişdirmək əgər, o, avtomatik server yeniden. Və belə ki, həqiqətən yoxdur super faydalıdır yenidən başladın Python. Hesab edirəm ki, bilər. Mənim kodu qoparmaq edək bu typo ilə, və typo sürüldü iddia qəsdən ibrətamiz məqsədləri üçün. Belə ki, bu geri əlavə edək. Belə ki, indi Hello World deyir. Mən onu xilas edəcək. Və biz geri çəkmək əgər terminal, will Bu başlatmaqdan ki, demək, bir dəyişiklik aşkar çünki, və indi biz bu səhifəni zaman Doğru şey çap edəcək. Belə ki, debug ki, super faydalıdır. Ayrıca, hər hansı varsa bir qəza sort, belə ki, oxşar tətbiqi qəza edək olan bir string geri deyil. Belə ki, yalnız var edək nədənsə Yox qayıtmaq. Və sonra mən bu ziyarət zaman səhifə, yalnız qəza edəcək, lakin server yalnız onu qəza deyil həqiqətən super faydalı geri verir hər şey iz yanlış getdi ki. Və həqiqətən gözəl nə ki var bu geri iz hər hansı bir addım, Siz interaktiv aça bilər burada shell, və sort çap nə dəyişənlərin siz nəzər istəyirəm. Və belə ayıklama həqiqətən həyata figuring üçün faydalı nə ilə gedir sizin server deyil, yalnız görən 500 daxili kimi PHP bir şey super əhəmiyyətsizdir server səhv. Bir şeydir, xəbərdar olmaq ki, online app qoymaq belə ki, ictimaiyyətə görünən siz heç vaxt debug rejimi tərk etmək istəyirəm, insanlar həqiqətən çünki ki, konsol istifadə ki, mən Siz əsassız kodu icra göstərdi. Belə ki, onlar heç kimi çap edə bilərsiniz siz orada olan gizli kodları, onlar məhz baxmaq olar necə Sizin veb işləyir. Belə ki, həqiqətən faydalı test üçün, lakin həmişə etmək əvvəl onu almaq üçün əmin Siz online bir şey dərc. Belə ki, bir şey istifadə etdiyiniz PHP kimi, bu ideya var Siz keçə bilər ki, web pages arasında məlumat həqiqətən məlumat qoyaraq bir GET sorğu URL da, lakin Flask, siz həqiqətən bilərsiniz sort kimi bir şey, bir marşrut olan Bunun bir hissəsi kimi dəyişən. Bu baxsaq belə burada ekranda məsələn, biz bir marşrut var ('/ Salam /'), və belə ki, siz ziyarət əgər / Salam / bir şey, bir şey həqiqətən dolu almaq üçün gedir adı dəyişən. Və funksiyası fark ki, marşrutu ilə gəlir parametr etmək var , ad bu, həqiqətən olacaq ki, funksiyası keçdi almaq. Və sonra, bir dəfə etdiyiniz ki, funksiyası daxilində, Siz kimi ki, müalicə edə bilər bir normal Python dəyişən, və belə sonra, o, Hello çap və bu istifadə edərək, adı dolduracaq bir string biçimlendirme. Belə ki, bir marşrutlaşdırma dəyişən hissələri əlavə etmək üçün, Siz qeyd bucaq bracket istifadə edin. Və isteğe, istifadə edə bilərsiniz nə converter deyirlər. Belə ki, bu qoymaq əgər nöqtə ilə annotasiya, Siz ki, müəyyən edə bilərsiniz bir int və ya float, və ya yol, və avtomatik olaraq çevirmək olacaq. Siz həmçinin dönüşüm edə bilərsiniz Python funksiyası ərzində yalnız bir tökmə istifadə edərək, lakin bəzən əgər Siz bir int var ki, təmin etmək istəyirik, ki, qoya bilər orada dönüşüm qayda. Belə ki, misal qoparmaq imkan Bəzi dəyişən qaydaları. Belə ki, burada, bu əsas eyni var Flask idxal ilə strukturu Flask, app = Flask (_name_) və sonra sonunda çalışan. Biz bu iki müxtəlif var Burada dəyişən marşrutları. Və ilk biridir Mən göstərdi bir idi slayd-ci ildə yalnız bir string adı alır və bu adı Salam çap edəcək. Və sonra, ikinci bir dönüşüm istifadə edir. Belə ki, bu avtomatik olaraq konvertasiya edəcək bir int və sonra, int ikiqat və çap. Və biz hər cür yoxdur ərzində dönüşüm Flask ki, qayğı tələb edir, çünki. Belə ki, bu çalışan əldə edək. Bir Flask zaman proqram çalışan, siz out-C nəzarət edə bilərsiniz server çalışan dayandırmaq. Və sonra mən dəyişənlərin davam edəcək. Belə ki, localhost / salam / Ezra gedək və ümid edirəm ki, bu, mənə salam demək olacaq. Belə ki, dəyişən, mənim ad aldı marşrutu və burada onu doldurdu. Mən də tez göstərmək lazımdır misli nümunəsi. Belə ki, 3 / ikiqat / getmək əgər, 6 çap edəcək. Belə ki, bu qayğı bizim üçün dönüşüm. Belə ki, siz də bunu edə bilərsiniz float və xüsusi bir şey, Siz kimi bir şey müəyyən etmək lazımdır, əgər Bu slashes qəbul imkan verir ki, yol, lakin adətən bir məsələ olmamalıdır. Bu günə qədər hələ də var yalnız qaytarılması edilmişdir çox maraqlı deyil strings. Biz, həqiqətən, qayıtmaq bilər hərfi HTML string. Belə ki, kodu, biz bir şey əlavə edə bilərsiniz b-tag qalın etmək kimi, lakin çox vaxt sizə həqiqətən istəmirəm HTML kodu yazılı olmaq Sizin Python kodu. Bu, həqiqətən messy olur və yaxşı bir zaman deyil. Flask bizə ayırmaq üçün imkan verir Şablon deyirlər nə HTML, və əgər belə düşünür MVC model baxımından Siz ilə tanış olduğunu, ümid edirəm ki, iş CS50 Maliyyə bir az, Siz Python faylları hesab edə bilər Controller, daha kimi Onlar nə ilə əlaqə ki, siz ola bilər data model. Və onlar Ziyarət zəng ki, Baxmaq üçün məlumat keçən məlumat doldurmaq üçün HTML bu lazımdır. Və biz o Views dediyimiz sinif Şablonlar var. Belə ki, Flask bir Python istifadə edir modul ki, avtomatik olaraq Yüklemek Pip zaman bərpa Flask Jinja, adlı Siz bu əlavə imkan verir HTML notları Siz ekranda görmək ki, ki, imkan verir ki, Siz, conditionals kimi şeylər qoymaq və HTML daxil loops. Belə ki, necə kimi bir az görünür HTML fayl ərzində PHP istifadə edə bilər, lakin bu yalnız zaman Flask deyil server, HTML fayl xidmət bu şablonu mühərrik davam edəcək və Bu vasitəsilə analiz və şeyi doldurun. Belə ki, Flask bir render_template funksiyası var Burada altındakı görmək olar ki,. Və belə ki, onu bu səhifəni ziyarət zaman Bu hello.html Şablon edərlər, və sonra bu HTML page doldurun. Belə ki, yalnız bu real run bildirin tez və bu kimi görünür nə, və sonra bir keçmək lazımdır daha ətraflı az. Belə ki, Templates gedir bir Templates qovluğunda gedin. Bu avtomatik olaraq ərzində görünür Şablonlar ki Şablon qovluq. Belə ki, bu açmaq bildirin. Belə ki, mən şablonu nümunə run lazımdır. Belə ki, I / salam / Ezra getmək əgər, Bu dəhşətli var, Mən qoymaq obnoxious çadır tag. Çox gözəl, çox dinamik. Mən böyük bir fan deyiləm. Amma nə olur Mən yalnız / salam getmək? Belə ki, yalnız Hello World deyir. Mən bir ad keçir etməyib avtomatik olaraq doldurulur. Belə ki, necə görək, necə biz bəlkə çadır xilas edə bilərsiniz. Belə ki, burada, bu cür edir maraqlı bir nümunə, Siz necə keçid ilə tanış olduqda hesabatları dilində çalışır. Bu kimi sort demək bir payız ki, sort, burada əslində iki əlavə eyni funksiyası müxtəlif marşrutları. Beləliklə, biz / salam marşrutu əlavə və Xoşgəldiniz / salam / adı marşrutu Python sizə imkan verir etmirsiniz və biz müəyyən default funksiyası arqumentlər daxil belə ki, heç adı, belə ki, var, əgər biz getmək əgər yalnız / hello, avtomatik olaraq filtreler adı None bərabərdir. Beləliklə, biz göstərmək Name = adı ilə şablon, belə ki, adı parametr keçiriləcək bu ad funksiyası parametr bərabər, Şablon daxil. Necə ki, hələ izah etmir Hello World çap qərar qəbul, və ya mənim ad çap. Belə ki, həqiqətən baxaq Şablon özü, ki, gələn harada görmək. Belə ki, bu Şablon ərzində biz həqiqətən bir şərti məntiq var, olan bəzi insanlar ki, mübahisə, həqiqətən, şərti bir çox olmamalıdır Sizin Şablon daxilində məntiq. Bu ərzində daha çox olmalıdır Controller, lakin bu, məsələn Bu olduqca kiçik bir şey var. Adı Odur ki, biz, belə ki, yoxlamaq əgər adı None bərabər deyil, bir ad əslində əgər , sonra biz edəcək keçdi ilə adı, Hello demək header və çadır, Bütün bu normal HTML, başqa, biz Hello çap, Dünya yalnız normal. Belə ki, bir neçə şey burada qeyd etmək Siz şablonu format haqqında, bu ki, bütün şərti hesabatları sort kimi biz bunu zaman PHP necə Bəzi PHP daxil etmək istəyirəm, az-dən istifadə sual mark, burada sort analoji var {% ilə. Belə ki, burada, biz şərti kodu var. Və sonra, həqiqətən, istədiyiniz zaman sanki bir şey qiymətləndirmək və çap ekran həyata, siz ikiqat aşırma istifadə edin. Belə ki, burada ikili aşırma var, sonra biz adını daxil, ki çərçivəsində belə ki, qiymətləndirəcək dəyişən adı, hansı dən köçürdü , şablon funksiyası göstərmək deyil, yalnız çap çox həyata, biz bu xilas əgər, yalnız söz çap olardı "adı". Belə ki, üçün izləmək üçün bir şey var. Belə ki, başqa bir şey üçün bildiriş zaman biz ki, istifadə etmək istədiyiniz render_template funksiyası, biz, həqiqətən, idxal var Bu aydın Flask olan. Bu nümunəsidir kolba modularity, idxal yoxdur ki, Əgər ehtiyac yoxdur şeylər. Siz yalnız gətirə bilər funksiyaları həqiqətən bəzən olan lazımdır gözəl, belə ki, yoxdur bütün bu funksiyaları var Siz istifadə etdiyiniz ətrafında oturan, həm də, siz ki, unutmaq əgər render_template idxal lazımdır, Siz yəqin ki, bir xəbərdarlıq almaq lazımdır ki, bu barədə bildirin edəcək. Belə ki, şablonu var. Belə ki, biz necə göstərilən etdik , sadə web pages yaratmaq və bir az daha məntiq əlavə Bu, dəyişən marşrutlaşdırma baxımından. Bu əsasında müxtəlif şeyə imkan verir nə sonra da getmək və URL verir HTML bir az daha mənada hər şeyi göstərmək istəyirəm necə şərtləri. Siz bütün qoymaq yoxdur Sizin Python HTML, lakin olduqca çox üçün hər web proqram, Siz bir növ istəyirəm olacaq data model ilə bağlı. Və belə Ənənəvi olaraq, bu ki bir SQL verilənlər bazası kimi bir şey ola bilər. Və yalnız qarşılıqlı bilər birbaşa SQL ilə. Python var Mən deyirlər edirəm. SQLite 3. Siz yalnız SQLite 3 idxal edə bilər və birbaşa SQL sorğu icra lakin Mən sizi bilmirəm, lakin mən, həqiqətən, yalnız kimi deyil SQL queries yazılı. Bu, həqiqətən almaq üçün çalışır uzun və mürəkkəb. Belə ki, bir şey ki, Mən istifadə var nə kimi bir bir ORM kimi tanınan obyekt-relational mapping. Və bir point obyekt-relational mapping, iki müxtəlif var ki yolları verilənlər bazası haqqında düşünmək olar. Məsələn Belə ki, Professor Malan adətən sinif istifadə Excel masa edir bu satır və bu sütun var, və bunun üçün həqiqətən faydalıdır Bu SQL təmsil olunur necə və bu ilə qarşılıqlı necə, lakin Bu həqiqətən başqa bir yol bəzən bu barədə düşünmək faydalı, Dərslər və obyektləri baxımından. Belə ki, əvəzinə düşüncə hər bir masa olan kimi müəyyən var ki, bu sıra məlumat, həqiqətən bilərsiniz olan kimi hesab Hər bir masa bir sinif, və sonra hər instansiya class müəyyən xüsusiyyətləri var. Belə ki, bu nümunə, hallarda sinif cədvəldə satır var, və sonra hər mülkiyyət ki cədvəldə bir sütun ola bilər. Belə ki, mən istəyirəm ORM peewee adlanır istifadə etmək. Bu növ Flask kimi, həqiqətən kiçik. Mən onlar birlikdə getmək ki, hesab edirəm ki, lakin digər ORMs bir çox var istifadə edə bilərsiniz ki. Daha məşhur biridir SQLAlchemy kimi tanınan, Mən niyə ilk xatırlayıram bilməz , SQLAlchemy üzərində peewee seçdi və ya mən sizə niyə demək istəyirəm ən yaxşı biri hesab edirəm ki, lakin biz yalnız bu istifadə etmək olacaq Mən istifadə etmək necə çünki. Belə ki, bir sual, niyə Bir ORM istifadə narahat olmalıdır, əvəzinə yalnız birbaşa SQL queries yazılı? Mən ən yaxşı halda hesab edirəm ki, Siz, həqiqətən, yoxdur ki, SQL queries yazmaq lazımdır. Mən sizə göstərmək lazımdır kimi Bu, çox asandır seçim kimi şeylər, durub, silinməsi, xüsusilə masalar yaradılması. Bu çox asandır bir sinif strukturu yazmaq, Bu strukturu daha yarat Cədvəl Şərhdə, lakin bir şey , xəbərdar olmaq ki, ORM ən yaxşı çalışacağıq anlamaq üçün nə ən səmərəli SQL sorğu olacaq lakin bəzən yanlış olur. Və etdiyiniz xüsusilə böyük bazası ilə iş, Bir sorğu ki, qeyd edə bilər ki, sürətli çalışan olmalıdır həqiqətən artıq edir. Və necə başlıq altında baxsaq ORM, SQL ki, tərcümə olunur bir şey bunu bilər həqiqətən gülməli, yalnız sort çünki Sizin niyyət səhv işarə. Və dəfə burada olub Mən bunu yalnış idi və yalnız sonra yalnız öz SQL queries icra Bu qəribə bir şəkildə təhlil edildi. Belə ki, orada bəzi yalnız yol, yerüstü Bu tərtib ki, sizin SQL daxil aşağı hesabatları. Belə ki, tez super baxaq bir veri model bir sadə misal Siz istifadə edə bilər ki,. Belə ki, bu Python kodu, və Siz istədiyiniz ilk şey edir peewee idxal *. Belə ki, Flask fərqli olaraq siz harada Bütün bu fərdi modulları, və Flask idxal etmək istəyirik və Şablon və bəzi başqaları yazmaq Biz sonra görəcəksiniz ki, Peewee olan, yalnız hər şeyi edə bilərsiniz çünki bu, olduqca kiçik bir kitabxana var. Belə ki, Siz istədiyiniz ilk şey, həqiqətən, bu verilənlər bazası obyekt yaratmaq. Belə ki, siz db = SqliteDatabase, və sonra bazası adı. Bu, həqiqətən, iradə bir verilənlər bazası obyekt yaratmaq Siz Peewee ilə qarşılıqlı bilər. Və sonra, biz faktiki var yaratmaq istəyirik model. Belə ki, masa yaratmaq istəyirik. Belə ki, Peewee ərzində, hər bir sinif var bazası ərzində öz masa. Belə ki, dərsləri bütün baza model varis, və kapital M model peewee müəyyən bir şey. Belə ki, sizin modelləri bütün olmalıdır onların yüksək superclass kimi varis, onlar varis lazımdır model, lakin həqiqətən sərin var nə, Siz, həqiqətən, sizin ola bilər ki, modelləri bir-birindən irs. Və çox vaxt, sizin data modelləri mütləq deyil gözəl miras iyerarxiya, lakin onlar harada dəfə, bu, həqiqətən gözəl Siz model var, çünki bir-birindən xas. Belə ki, biz bu sinif müəyyən Bir model vərəsəlik "şagird", və üç xüsusiyyətləri var. Bu ki, bir ID var bir PrimaryKeyField olan təqdim ki, bir şey deyil Peewee, adı Charfield deyil, və bir sinif bir IntegerField edir. Belə ki, bu və ya ola bilər necə CS50 həqiqətən bütün mağazalar tələbələrin notları. Bu deyil, lakin bu, mən bunu necə edir. Və sonra ərzində var Bu sinif və bu Siz edə bilərsiniz bir şeydir Python, siz nested dərsləri ola bilər. Bu bir şey deyil ki peewee tələb olunur. Belə ki, bu sinif Meta, siz verilənlər bazası ki, müəyyən etmək üçün obyekt bərabər Yuxarıda yaratdığı. Bu fayl bu masa nə deyir həqiqətən olan olacaq. Belə ki, bu bir şey deyil Sizin modelləri bütün ərzində etmək. Siz yalnız müəyyən etmək Bu Meta sinif daxilində ki, verilənlər bazası db bərabərdir. Mən əgər mən adətən nə müxtəlif modelləri bir dəstə, Mən bir baza var model, Mən adətən yalnız "baza model" zəng ki, Meta sinif var, və DB bərabər bazası edir. Və mənim sonrakı modelləri sonra bütün ki, baza sinif varis edəcək. Və sonra mən narahat yoxdur Meta sinif yaradılması haqqında. Belə ki, bu, həqiqətən, olur bir SQL bəyanat daxil aşağı tərtib, aşağı bu murdar şey kimi görünür Burada, "masa tələbə ID tam yaradın "Nə. Və mən bu qısa hesab edir ki, burada bu SQL sorğu, ancaq burada bu sinif baxsaq Siz gedən dəqiq nə edə bilərsiniz. Siz yataqlarının nə növ edə bilərsiniz onlar adlanır nə var, və mən hesab edirəm ki, Bu Python kodu baxaraq daha çox oxunaqlı Bu SQL sorğu yazmaq üçün çalışırıq. Belə ki, üçün həqiqətən verilənlər bazası istifadə, biz Python ərzində qoşulmaq lazımdır. Belə ki, mən adətən adlı funksiyası yazmaq iki şeyi edir initialize_db. Bu verilənlər bazası edir object db və yalnız açan, onu birləşdirir verilənlər bazası bölməsinə qədər. Siz yalnız baxmayaraq çalıştırıyorsanız yerli maşın haqqinda, Bu narahat bir super böyük deyil birləşdirən və ayırıcı haqqında ancaq çalışan əgər Bir web, siz əmin zaman bir istifadəçi, əmin etmək istəyirəm Onlar yaxın zaman, bu bağlanır bax, onlar belə ayırmaq siz bağlı bir dəstə yoxdur Sizin bazasında bütün bir dəfə. Və sonra, zaman bazasında bağlanmak, Siz db.create_tables zəng etmək istəyirəm və istədiyiniz üçün modellər siyahısı masalar yaratmaq. Belə ki, burada, mən yalnız istəyirəm Bu tələbə üçün yaratmaq. Və sonra, vacibdir nə, edir təhlükəsiz = True çox vaxt müəyyən. Belə ki, nə bu bəyanat edəcəyik, bu idimi üçün masalar yaradır tələbə model, lakin yalnız ki, masa deyil, əgər artıq yaradılmışdır. Nə təhlükəsiz əsasən xüsusi var. Belə ki, yazmaq olmaz Mövcud masa, Yalnız bir yeni yaradacaq masa yoxdur bir olarsa. Belə ki, yalnız yarada bilər masalar bir SQL istifadə edərək. Və sonra bazası oturan orada, sonra hər dəfə qoşulmaq, lakin bu, yalnız adətən gözəl bu create_tables zəng qoymaq, belə ki, heç silmək əgər sizin verilənlər bazası zaman web run app yenidən, bu yeniden olacaq. Belə ki, yalnız təhlükəsiz əmin olun True olmaq üçün müəyyən edilir, və ya sadəcə sizin data tapa hər zaman clobbered almaq. Və sonra, yalnız zəng edə bilərsiniz yaratmaq initialize_db əlaqə və yaratmaq masalar zəruri hallarda. Belə ki, ən ümumi şey Siz nə etmək istəyirəm ki, və ya ən ümumi şeyi biridir, həqiqətən şeyi daxil edir Sizin bazasında. Belə ki, daha çox olan INTO bir daxil yazmaq bütün bəyanatı dəyərləri müəyyən, Siz, həqiqətən, zəng edə bilərsiniz tələbə sinif fəaliyyət göstərir. Belə ki, bir sinif bilən ki, model vərəsəlik Bu metodu yaratmaq var. Belə ki, sinif name.create etmək, və parametrləri daxil Siz keçmək istəyirəm. Belə ki, mən bəzi şagirdlər əlavə etmək istəyirsinizsə Bizim CS50 grade kitab Məsələn, Mən kim var David qoymaq lazımdır çox yaxşı dərəcəli, o, 95 var. Və özümü, kim bunu deyil belə də CS50, mən bir 50 var. Belə ki, gözəl şey haqqında Bu yaratmaq funksiyası nə, Bu instansiya qaytarır, və ya ki, satır, masa çərçivəsində yaradılmış ki, və belə sonra bir ki, saxlamaq dəyişən və daha sonra iş. Siz ətrafında dəyişə bilərsiniz olan Mən bir nümunə göstərmək lazımdır. Mən deyil ki, qeyd ID müəyyən etmək, Bu ildən çünki PrimaryKeyField, avtomatik olaraq edəcək Siz daxil deyil, əgər arttırmayı. Və əslində, yəqin ki, Onu müəyyən deyil, Siz təsadüfən bilər, çünki Başqasının ID döymək. Və etmək istəyirəm Bu unikal əmin olun. Belə ki, həqiqətən, ən Siz istədiyiniz ümumi şey, yəqin ki, seçin Siz bir dəfə bazasının orada bir çox informasiya var. Belə ki, hər şey almaq istəyirsinizsə, belə seçin ulduz ekvivalent tələbələr şərhdə, onu yalnız student.select olardı. Və bir sıra sizə geri verəcək şagirdin bütün bu obyektlərin Siz üzərində təkrarlamaq ki, istəyirəm. Siz şeyi əldə edə bilərsiniz. Və çox vaxt, siz yalnız seçin etmək istəmirəm, Siz, həqiqətən, bir şey ifadə etmək istəyirəm. Belə ki, siz zəncir bilərsiniz birlikdə bu funksiyası zənglər, necə zəncir olduğu kimi SQL birlikdə hesabatları. Belə ki,) (student.select edə bilərsiniz. Harada Bu misalda. Və sonra, siz şərait müəyyən yalnız normal Python istifadə Booleans şeyi yoxlamaq. Belə ki, bu halda, siz istəyirəm , siz seçilməsi ne məhdudlaşdırmaq student.grade 50 bərabər olduğu, və student.name, Ezra bərabərdir belə ki, yalnız mənə olacaq. Və həqiqətən, bir qeyd incə şey burada Siz müəyyən etmək istəyirsinizsə, ki, bir və / və ya və / və ya, Python, normal istifadə edir, Mən sözü "və" həqiqətən hesab edirəm ki, lakin burada bir işareti istifadə olan normal bir bitwise operator, lakin bu xüsusi halda, yalnız yol peewee yoxdur, Siz tək istifadə ampersand müəyyən "və s." üçün Ki, bir şey var ki, Mən bir çox qarışdırılır almaq, lakin bu gəlmək deyil praktikada çox. Və sonra, bir dəfə bütün var verilənlər bazası həyata tələbələr, görmüşük dəfə seçin istəyirik və geyimi və ya hər hansı, Bir foreach loop istifadə edə bilərsiniz, yalnız Python normal kimi iterator hər hansı ilə və ya serialın hər hansı ilə. Belə ki, s, edə bilərsiniz student.select da (). whe (Student.grade <75) və bu yenidən cədvəldə hər bir tələbə üzərində təkrarlamaq Onun grade az 75 olan bu halda, hələ də yalnız mənə deyil. Və sonra ərzində bir şey ola bilər ki loop kimi mənə bir e-poçt göndərmək və mənə həqiqətən demək Mənim Problem Sets açın. Belə ki, başqa bir şey edə bilərsiniz Bunu, bu, həqiqətən asan deyil masa çərçivəsində satır yeniləmə. Belə ki, burada geri xatırlayıram, Sizin mən daxil, Mən dəyər aldı student.create geri, Mən Ezra adlı adı onu təyin. Və indi, dəyişə bilərsiniz ki, məsələn ərzində dəyərlər, yalnız kimi ki, bir Python normal sinif. Belə ki, müəyyən edə bilərsiniz ezra.grade = 95 və ki, yerli surəti yeniləyir, lakin həqiqətən istəyirsinizsə verilənlər bazası ki, dəyişiklik törətmək, Siz ezra.save zəng etmək belə ki, saxla metodu adlanır instansiya. Və indi, uğurla dəyişib verilənlər bazası ərzində öz grade. Belə ki, sonra mən sakın ki, bildirin verilənlər bazası ərzində mənim dərəcəli dəyişir. Professor Malan yəqin ki, davam edir sinif məni silmək istəyirəm, və siz silin zəng edə bilərsiniz ki, yalnız şey instansiya üsulu. Istəyirdi Belə ki, getmək üçün geri bu loop burada, və həqiqətən yerinə e-poçt bütün göndərilməsi tələbə kimin grade az 75 çox, siz onları silmək istəyirdi, Bu loop ərzində bilər s.delete instansiya zəng. Və Siz istədiyiniz son şey, Bir keçid yaratmaq zaman deyil, və sizin iş ilə tamamlayın Siz db.close zəng etmək istəyirəm burada db verilənlər bazası var biz əvvəl idi ki, etiraz. Və əmin etmək istəyirəm hər şey həyata bağladı olur. Cool. Belə ki, indi mən nümunə proqram. I növ yalnız hər şeyi əvvəlcədən etdik ki, hər hansı bir canlı kodlaşdırma olmayacaq səhvlər, lakin biz vasitəsilə gəzmək olar Bu və kolba qoymaq olardı necə və birlikdə peewee, və sadə app edir. Mən CS50 rant zəng və bu sadə bir blog platforma sort. Belə ki, ilk, mən onu run lazımdır və , bu kimi görünür nə göstərmək sonra biz kodu daxil daha baxmaq olar. OK, belə ki, yalnız bu run edək. Mən bu sərin etmək lazımdır bir az kiçik. Bu, sadəcə, çünki çox olduqca var Mən CSS bir çox etməyib lakin bu nə o edir blog bu bazası və bütün keçir onlara və bu onlara göstərilir Ən son sırasına səhifə. Və bu yalnız bir ismarıc var Mən bazasında saxlanılır ki,. Biz yeni yaratmaq istəyirsinizsə Belə ki, post, biz yeni bir yazı əlavə edə bilərsiniz və biz adı daxil edə bilərsiniz post, belə ki, bir şey kimi, CS50 seminar. Wow, həqiqətən seminar zövq. Cool. Sonra post basın və olacaq Əsas səhifəyə geri yönlendirme, və sonra ki, görürsünüz Son post əlavə edildi. Və biz hələ bütün olanları var. Belə ki, indi-nin bütün vasitəsilə addım imkan kodu və bu həyata necə. Belə ki, mən edək ilk şey hesab edirəm həqiqətən modelləri nəzər. Bir çox vaxt, zaman Əgər bir şey dizayn etdiyiniz, Siz necə haqqında ilk düşünmək istəyirəm Sizin data təmsil olacaq və sonra ətrafında şeyi dizayn, belə ki, hər şey əhəmiyyət kəsb edir. Və mən necə əslində Mən bu edilməsi zaman, bunu Mən oturdu və fikir Mən bir yazı nə istəyirsiniz. Belə ki, burada biz eyni struktur var Mən əvvəllər qeyd edilmişdir ki, biz db = Sqldatabase (posts.db) harada. Əslində, siz yəqin ki, istəmirəm Sizin adı bazaları sərt kodu. Bu yəqin ki, bir parametri olmalıdır bəlkə, bir yerdə saxlanılır bir konfiqurasiya faylında, lakin oxşar kiçik bir nümunəsidir, bu ağır kodu OK. Belə ki, indi biz bu Post sinif, olan baza model vərəsəlik. Və yenə var ID = PrimaryKeyField. Əslində, siz müəyyən yoxsa, Mən, həqiqətən, bu xilas əgər, sonra biz qayğı olacaq peewee avtomatik olaraq ID sahəsində yaratmaq, və avtomatik olaraq edəcək bir PrimaryKey, edən Mən, çünki adətən, həqiqətən, gözəl hesab edirəm ki, siz istədiyiniz bir şey amma xüsusi onu qoymaq istəyirəm, yalnız mən orada var unutmayın. Amma siz ki, müəyyən yoxsa, avtomatik olaraq olacaq. Beləliklə, mən bir tarix var ki, bir DateTimeField və bütün bu müxtəlif sahələri, əgər peewee sənədlərin baxmaq, Bu müxtəlif siyahısını verəcəyik istifadə edə bilərsiniz sahələrində növləri. Çox hissəsi üçün, bu analoji var SQL görmək nə üçün. Belə ki, bir Charfield bir var VarCharFields, textfields, çox uzun olan var bir blog kimi mətnlər, potensial DateTimeFields, DoubleFields, FloatFields, kimi hər şeyi. Və digər dəlilləri keçə bilər bu, mən burada müəyyən etməyən. Say, misal üçün, istəmədi iki ismarışları eyni adı var imkan, Siz müəyyən edə bilər True unikal kimi bir şey = və yalnız əlavə parametr var Bu onu tərtib zaman sahə SQL, bu müəyyən edəcək Bu var ki, unikal olmaq üçün. Siz həmçinin kimi bir şey daxil edə bilərsiniz Biz null və bütün başqa şeylər Normal SQL yoxdur. Belə ki, bu olduqca sadə tarixi var model. DateTimeField ərzində burada edək, Mən default nə ifadə edildi. Mən onu müəyyən , datetime.datetime.now Çünki yol ki, Bu qiymətləndirdi olur, Bu, həqiqətən qiymətləndirir datetime.now zaman Bu verilənlər bazası daxil olur. Mən istədiyiniz hesab edirəm ki, Bu yoxlamaq üçün, lakin sonra, bu kimi bir şey idi əgər bu, həqiqətən, bir dəfə qiymətləndirirsiniz və sonra Datetime həmişə eyni olacaq. Belə ki, bir şey yapýyorsun yalnız əgər datetimes ilə ikiqat çek Bu zaman qiymətləndirən ki, həqiqətən başqa daxil, və ya əvvəl Siz səhv ola bilər. adı yalnız bir deyil Charfield, orada olan Siz keçə bilər daha arqumentlər var ifadə dəqiq nə qədər siz olmaq istəyirəm, lakin burada, bu, həqiqətən fərqi yox idi. Və Text olacaq bütün post mətn, ki, bir olacaq Siz istədiyiniz yalnız çünki TextField Bu olduqca uzun string olmaq üçün imkan. Sonra biz bu Meta var yarımsinif yalnız biz bazası istəyirəm ki, müəyyən Bu, həqiqətən qədər açılır harada Biz burada db obyekt olacaq. Və son şey var Burada, yalnız bu funksiyası biz olacaq ki, bizim əsas app istifadə qoşulmaq üçün verilənlər bazası başlamaq üçün Bu, sonra Post masa yaratmaq. İndi əsas app özü baxaq. Belə ki, bu bir çox olanları artıq bit biz əvvəl gördüm ki, lakin ümid çox pis deyil. Belə ki, mənə bu uzatmaq edək. Oldu. Belə ki, qeyd və top I idxal başqa şeylər bütün dəstə Flask biz deyil ki, həqiqətən, əvvəl görüldü. Və ümid edirəm ki, biz vasitəsilə getmək olar bu bir-bir hər biri və haqqında bir az daha çox danışmaq Onlara, məsələn sıralaması. Belə ki, biz, kolba var və render_template, olan biz əvvəl gördüm bu tələbi obyekt, biz necə baxdığımız zaman gələcək ki, Mən, həqiqətən, göstərirdi forması işləyir. Siz yönlendirme imkan verir, Yönləndirmə geri yaradın New Post orijinal ana geri, sonra Sizə imkan verir ki, bir şey URL, harada şekillendirmek veb xüsusi səhifə. Beləliklə, növbəti Mən şey, mən idxal edir Modellər məlumat bütün biz yalnız baxaraq faylları. Və Bəli. Belə ki, yeni başqa bir şey gəlir ki, Siz ilə məşğul olduğunuz zaman, xüsusilə verilənlər bazası, Siz daxil edə bilərsiniz ki, əvvəl deyilən olur bir funksiyası olur hər tələbi və funksiyası Bu istifadə edərək, hər sorğusundan sonra çağırıb funksiyası Decorator app.before sorğu. Və bu icra edəcək harada bu funksiyası var. Bu olmaq deyil xahişi əvvəl çağırıb lakin adətən bir şey var zəng etmək həssas. Siz nə funksiyası daxil edə bilərsiniz Siz orada adlı almaq istəyirəm mən bu initialize_db müəyyən biz modelləri geri idi funksiyası fayl, belə ki, hər sorğu əvvəl, bazasında bağlanmak üçün istəyirəm. Iki fərqli var yolları bunu edə bilərsiniz. Sizapp edə bilərsiniz., I Bu after_request inanıram. Arasında fərq after_request və teardown_request, after_request yalnız baş verəcək ki, tələbi həqiqətən etibarlı idi. Belə ki, yalnız tələbi uğurlu oldu heç bir şey yanlış getdi əgər lakin teardown_request uğurlu halda olur sorğu və ya səhv halda. Belə ki, adətən, istədiyiniz teardown_request istifadə etmək, Siz nə etmək istədiyiniz halda xüsusilə fərqli bir şey, bir səhv halda. Lakin bazası bağlanması üçün, ki, başarılı və ya uğursuz olub biz sizə ayırmaq istəyirəm verilənlər bazası. Belə ki, db.close, deyirlər db obyekt. Teardown_request Qeyd edək ki, istisna götürür. Həqiqətən var idi, əgər Beləliklə, siz kontrol edə bilərsiniz Bir səhv ki, aşağı bağlanması zaman lakin burada, ümid edirəm ki, orada səhvlərin bir çox deyil, belə ki, biz yalnız sort ki, məhəl edirik. Okay, və qalan çox pis deyil. Belə ki, biz ana səhifəsinə getmək zaman, bu home.html Şablon göstərilən ki açacaq. pass post deyil və nə bu bərabər biz bu post var yadda yoxdur model, belə ki, biz bütün ismarıclarını seçin və sonra siz edə bilərsiniz başqa bir şey, Siz HARADA bənddə müəyyən edə bilərsiniz Bir belirtebilirsiniz sifariş və biz almaq ismarışları bütün sonra seçilmiş almaq və biz onları sifariş post.date.descending. Və müəyyən edəcək, zaman Onlar, həqiqətən, çıxmaq Ən son bir ilk biri olacaq. Və sonra, biz ki, keçmək home.html şablon, belə ki, həqiqətən açmaq bildirin həqiqətən sürətli ki Şablon, ki, iş necə bir göz atın. Bu, böyük HTML deyil ümid edirəm ki, biz Python diqqət bilər. Belə ki Şərhi əlavə bir link var Post və bu marşrut müəyyən Flask ərzində ki, biz burada olan müəyyən edir. Bu yeni post marşrutu, və biz burada qədər daxil. Və belə ki, sonra getmək ki, bir link Flask server çərçivəsində marşrutu. daha maraqlı şey burada loop üçün bu. Beləliklə, biz bu ki, müəyyən post parametri olan daxil köçürdü render_template funksiyası, post-ci ildə hər yazı üçün qəbul olur obyekt. Biz çap istəyirəm post adı, H1, və sonra aşağıda, biz çap etmək istəyirəm bir paraqraf ərzində post mətn. Və burada, biz, həqiqətən, bilərsiniz bir Python funksiyası zəng, belə ki, biz strftime zəng edə bilərsiniz, ST-RF-time, və format string keçə bilər Siz həyata data çap etmək istəyirəm ki,. Belə ki, siz ki, olduqca gözəl oldu həqiqətən bu Python funksiyası zəng Burada daxilində. Siz biçimlendirme nə yoxdur nəzarətçi tərəfi həqiqətən, çünki, tarixi format bir şeydir ki, Siz View ərzində məşğul istəyirəm. Və bu yüzdə bütün hər şeyi super əhəmiyyətli deyil. Siz sənədləri baxsaq Python strftime funksiyası üçün, bütün bu ifadə şeylər, amma ki, necə, nə vaxt biz aradığınız Burada ev səhifə, bir gözəl ilə bu format tarixi və bu ifadə AM və ya PM, lakin adətən, biz əgər Burada bu yox idi, Siz yəqin ki, bəzi zibil almaq lazımdır çox yaxşı baxmadı tarixi. Və sonra biz müəyyən post.text, I və ola bilər bir neçə qoymaq var line yalnız burada pozur hər post arasında boşluq qoymaq üçün. Belə ki, mən ən əhəmiyyətli hesab edirəm ki, Bu misalda şey, Siz loop üçün istifadə edə bilərsiniz ki. Bu eyni deyil şeylər PHP edə bilərsiniz. Siz vasitəsilə təkrarlamaq bilər hər şey keçdi olur və belə ki, əvəzinə olan nə surəti / pastası, surəti / bütün HTML yapışdırıb Yalnız sonra bir dəfə yazmaq üçün var, və Siz ismarıc bütün təkrarlamaq olar. Bu bir şey deyil Istədiyiniz ki, ümumi məlumatların bir çox zaman, nə üçün, ki, sizin data hər şey üçün Bir oxşar şey etmək istəyirəm. Və sonra, yalnız xatırlayıram zaman ki, aydın bir şey çap etmək istəyirəm HTML, istifadə burada ikiqat aşırma, lakin sonra müəyyən etmək istədiyiniz zaman vəziyyəti haqqında bəzi məlumatlar, ya bir loop üçün, faiz bracket istifadə edin. Belə ki, Python geri gedir indeksi, belə ki, izah edir nə əsas baş marşrut, biz orada getmək, yalnız göstərir bütün ismarıc, lakin sonra sual , necə biz, həqiqətən alıram ki, verilənlər bazası daxil posts olan bir az daha maraqlıdır. Belə ki, zaman New basın Biz burada gördük Post link, Bu forma sizi yönləndirən. Və yalnız bir sadə zəng render_template funksiyası, daha sonra HTML şəklində yeni vəzifə keçir. Belə ki, bir nəzər salaq. Belə ki, bu olduqca sadədir. Bu sadə HTML forması, olan bir az tanış görünür, CS50 Maliyyə formaları əsaslanır. Və belə ki, biz burada fəaliyyət göstərir. Və burada, çalışırıq, əgər PHP ilə, adətən, onu kimi bir şey olardı, create.PHP, lakin burada biz, həqiqətən, bir marşrut müəyyən Flask server ərzində. Belə ki, bu marşrut uyğundur yaratmaq marşrutu Biz burada var ki biz ikinci getmək lazımdır. Və belə ki, biz ki, müəyyən bu bir post metodu var biz göndərmək istəyirəm, çünki Bu forma data və adətən Bir formada məlumatların göndərilməsi etdiyiniz zaman, Bir post sorğusundan istifadə edə bilərsiniz, Siz başa yoxdur, sadəcə belə Bu böyük, yöndəmsiz URL ilə. Amma siz də bir GET sorğu istifadə edə bilər, və, dəyişən marşrutlaşdırma ilə keçmək lakin formaları üçün, bu gözəl burada post sorğu. Və sonra, yalnız sizin kimi HTML və PHP ilə edəcəyini, bu mətn giriş daxil edə bilərsiniz, və onlara adını daxil edə bilərsiniz, ki, qəbul olacaq adı Flask ərzində tələbi obyektə. Və sonra biz bir təqdim etdik düyməsini Post deyir ki. Və burada, Post adı düyməsini bir blog post çünki, lakin burada, post sorğu üsuludur. Belə ki, o eyni sözü var lakin həqiqətən olmayan. Bəli Python kodu geri gedir, biz metodu yaratmaq çağıranda, Burada qeyd bilərsiniz ki, həqiqətən marşrut üzrə daxil sorğu üsulları Siz qəbul etmək istəyirəm ki, və belə ki, burada, mən ki, mən müəyyən yalnız bir Post metodu qəbul etmək istəyirəm. Belə ki, mən, həqiqətən, səhifəsini ziyarət üçün cəhd edin birbaşa bir GET sorğu istifadə olunur, Bu "metodu icazə verilmir." Mənə izah edəcək Belə ki, siz, sort kimi pages Mən yalnız deyiləm bu yaratmaq səhifə həqiqətən bir yol kimi istifadə forma təqdim almaq üçün, Siz deyil ki belirtebilirsiniz insanlar orada getmək etmək istəyirəm birbaşa GET sorğu vasitəsilə, və ya istədiyiniz olmasaydı, nədənsə, bir Post tələbi Yalnız burada GET müəyyən edə bilər lakin bu, məsələn, biz yalnız Post sorğu çıxmaq istəyirəm. Belə ki, create_post adlanır zaman, zaman biz Post sorğu vasitəsilə ki, ziyarət Müəyyən bir getmək zaman marşrutu bu istəyi obyekt var, və biz idxal idi çox üst sorğu, lakin bu tələb var qəbul olur obyekt, və formada məlumat əldə edə bilərsiniz, avtomatik dolu olacaq Bir formada sorğu göndərmək zaman. Və sonra, mən nə düşünürsünüz , həqiqətən, sərin edir form obyekt keçdi almaq üçün , yalnız bir Python lüğət ki, Siz belə ki, burada access-- əgər, imkan ehtiva Mənə yalnız, onun yanında HTML qoparmaq belə ki, ola bilər istinad, bəli, belə ki, biz burada müəyyən adları müxtəlif sahələri üçün, belə ki, adı və mətn, biz sonra yalnız burada o istifadə form data daxil indeksləri kimi. Belə ki, super rahat edir. Beləliklə, biz post.create zəng yaratmaq və avtomatik olaraq daxil olacaq bazasında yeni post obyekt. Mən bu funksiyanı yaratmaq edirəm Burada necə bir həqiqətən sərin nümunəsidir güclü Flask və bu ilə işləyir Əgər bir şey etdiklərini, çünki PHP, siz ola bilər qiymətləndirmə bir çox, Əgər olardı bir verilənlər bazası keçid yaratmaq, Əgər olardı SQL sorğu icra, lakin burada biz yalnız bu gözəl var post.create olan biz sonra bilər yalnız məlumat almaq sorğu obyekt, və sonra yeni bir onu keçmək biz yaradılması edirik ki göndərin. Və son sonra biz istəyirik şey, yönlendirme deyil ev istifadəçi geri. Və belə ki, biz bu istifadə Flask funksiyası yönlendirme. Və bir şey görmədiyini əvvəl, bu URL funksiyası. Belə ki, funksiyası üçün URL imkan verir Siz, həqiqətən, adı keçmək Sizin Python kodu bir funksiyası, daha xüsusi marşrut çox ki, da var. Mən yalnız kimi asanlıqla ola bilər doğramaq üçün istifadəçi istiqamətləndirilmişdir, olan ev geri göndərmək, lakin funksiyası gözəl üçün URL istifadə edərək, Siz dəyişdirmək əgər çünki şeylər yeri, belə ki, mən dəyişdirmək ki, bildirin ev əvəzinə / evdə olmaq Bu hələ sonra qayıtmaq istəyirəm / home, həqiqətən gedir və görünür, çünki funksiyası adı və bu, siz ki, URL geri verəcək. Belə ki, sort haqqında sen ehtimal burada şeyi dəyişdirmək üçün daha çox funksiyaları adları daha var. Siz, həqiqətən, bu istifadə edə bilərsiniz funksiyası üçün gözəl URL. Və bir şey xəbərdar olmaq ki, bir az çətin deyil Siz yalnız bilər hesab edirəm ki, üçün URL yönlendirme zəng lakin faktiki marşrutları bütün mətn və HTML bir növ qayıtmaq üçün, belə ki, həqiqətən var İstiqamətləndirmə zəng qayıtmaq. Əks halda, bir şey almaq lazımdır etibarsız bir simli qaytarılması haqqında, bütün bunlar qayıtmaq lazımdır, çünki HTML, həqiqətən göstərmək istəyirəm. Belə ki, siz yönlendirme zəng zaman, bu səhifəyə yönləndirən lakin bu, həqiqətən HTML qaytarır ki, yönlendirme icra etmək lazımdır. Evə səhifəyə gedin. Beləliklə, biz bu iki müxtəlif fikirlər var. Biz ev görünüşü var. Və ya, Mən şablon demək lazımdır danışarlar. Biz bu iki şablonları var, ev şablon hansı Bizim ismarışları bütün göstərir və sonra biz bu reklam şey var, Siz post basın zaman, gedir Flask ərzində yeni marşrut, amma ki, marşrut mütləq deyil müvafiq şablon var. Siz görmək yoxdur bir şey, ancaq siz hələ də edə bilərsiniz bu iş gedir pərdə arxasında. Və sonra Yönlendirilen Əsas səhifəyə geri. Və mütləq iş üçün asandır şablon bəzi gözəl CSS və bu çox gözəl baxmaq, lakin əsas məntiq bütün Python var. Ki, məsələn haqqında hər hansı bir sualınız? Mən bir çox var bilirik fərqli şeylər, orada gedən biz görmədiyini çox şey əvvəl, lakin bir şey kimi. Bəli. Auditoriya 1: heç bir şey var var data kolpan xüsusi şəklində gələn? I "yaratmaq" yalnız bildirib fərq EZRA Zigmond: Bəli, belə ki, həqiqətən ki, həqiqətən yaxşı bir nöqtə var. Sual idi, belə ki, sizə nə yoxlamaq və əmin etmək lazımdır data, etibarlı olduğunu və yuyulma hər hansı yoxdur etibarlı əmin etmək üçün, Siz burada görə bilərsiniz kimi, çünki, Mən bunu deyiləm. Belə ki, nə görmək edək Mən boş bir şey göndərmək əgər. Belə ki, həqiqətən, yalnız bir etmək lazımdır boş post və DateTime doldurun. Belə ki, əslində, siz yəqin ki, kimi bir şey etmək istəyirəm, title bərabər olduqda, bəlkə müəyyən boş string, bu yoxdur. Adı və ya, yalnız bunu boş simli bərabər deyil. Belə ki, həqiqətən avtomatik deyil ki, yuyulma qayğı Sizin üçün, belə ki, hələ ki, bunu etmək lazımdır. Bəli, yaxşı sualdır. Auditoriya 2: kolpan mu sonradan injection üçün? Bilirsənmi? EZRA Zigmond: Ümid edirəm ki, peewee ki, yoxdur. Mən, əlbəttə, olduqca olardı pis kitabxana bunu olmasaydı. Mən dəqiq bilmirəm. Mən baxmaq istədiyiniz Bu yaradılan sorğu. Mən çap əgər, hesab edirəm ki, sort baxdı blog post bir SQL injection hücum kimi, bu kimi bir şey, bu halda parol sahəsində və ya bir şey kimi, Bu kimi bir şey ola bilər. Hesab edirəm ki, hələ düşünürəm sanki olunub almaq, amma peewee nə ki, hesab edirəm ki, məlumatların yuyulma bir növ Bu, həqiqətən onu icra əvvəl. Auditoriya 1: Bu mətn sahədir sağ, düz mətn etmək üçün nəzərdə tutulmuşdur? EZRA Zigmond: Bəli, bu. Bəli. Beləliklə, mən bütün hesab edirəm ki, belə ki, bu düzgün davranış ki, bunu edəcəyik, amma peewee edirəm inşallah bunu edir Onların sonunda müdafiə bəzi sort. Və istəyirdi ikiqat çek ki, orada Bir sorğu yaratmaq yolları var. belə ki, yoxdur birbaşa icra. Mən bir almaq istiyorum sənədlərin baxmaq, lakin həqiqətən bilərsiniz Bu yaradan SQL, ki, nəzər, və etmək Bu şeyi qaçan əmin olun. Digər səbəb niyə bilər SQL baxmaq istəyirəm ki peewee əgər, tipi edir şeyi, həqiqətən yavaş-yavaş davam etmək görünür Bir nəzər və nə edə bilərsiniz bəzən çünki həqiqətən, bunu təsadüfən əlavə etmək üçün asandır da, yol yazmaq, Siz təsadüfən ola bilər ilk bütün verilənlər bazası seçin və sonra bəzi sort əməliyyat ki, zaman, həqiqətən, alt seçmək üçün idi. Belə ki, hər şeyi, əgər deyil olduqca doğru gedir Bu tələbi nəzər yaxşı həqiqətən yaradılan əldə edir. Bəli. Auditoriya 2: ilk başlayanda, Siz 5000 kimi limanında qoydu. EZRA Zigmond: Bəli. Auditoriya 2: Peewee ilə default və ya dəyişə bilərsiniz bir şey ki? EZRA Zigmond: Bəli, belə ki, port Flask ilə default edir. Siz olmadan run əgər bir şey ifadə edərək, avtomatik olaraq edəcəyik. Mən istədiyiniz, iman Bu yoxlamaq üçün, ancaq app.run ki, müəyyən edə bilərsiniz Mən sizin kimi bir şey edə bilər port = 8080. Bir real sürətli cəhd verim. Bəli, belə ki, yalnız daxil edə bilərsiniz port = 8080 və bu, orada davam edəcək istəyirdi əgər mən hesab edirəm ki, run IDE, mən bu cəhd deyil amma hesab edirəm ki, əgər , port 8080 qaçdı Siz yəqin ki, mümkün olarıq server daxil olmaq üçün, yalnız haqqinda üçün idi istəyirəm. Bəli, amma asan dəyişdirmək üçün, əgər kimi port-ekspeditor hər cür var Siz nə etmək lazımdır şeyi. Hər hansı digər suallar? Evet? Auditoriya 1: Belə ki, mən gördüm sizin , siz dediyiniz kimi modelləri belirttiğiniz var hər bir obyekt üçün verilənlər bazası. Bildiyiniz üçün nə etməyin yoxdur ki, əgər, həqiqətən, asan SQLite verilənlər bazası çox ki, bir web app üçün istifadə etmək istədiyiniz, Yalnız bir dəstə daxil edə bilərsiniz ki, Sizin model müxtəlif olanları? EZRA Zigmond: Bəli, mənə imkan real sürətli qədər açın. Siz etmək istəyirsinizsə Belə ki, deyərək edirik fərqli bir şey bir dəstə, bəlkə bəzi kimi və tələbələr səbəbi kimi bir şey? Bəli, mən hesab edirəm ki, hələ hər model hələ var ki, ona həvalə bir verilənlər bazası, ancaq istəyirdi var müxtəlif modelləri ki, müxtəlif verilənlər bazası obyektləri təyin etdik bu, mütləq bunu edə bilər. Belə ki, əgər mən yeni yaradılmış bu kimi bir şey, və indi bu tələbəsidir ki, , işin bir blog kimi görünür Hesab edirəm ki, müəyyən edə bilər Verilənlər bazası burada db_2 bərabərdir. Belə ki, mən ki, hesab edirəm Siz bunu edə bilərsiniz əsas yol. Cool. Hər hansı digər suallar? Belə ki, yalnız bir az başa çatdırmaq üçün bit, burada bəzi resursları, bu slaydlar online dərc olunacaq belə ki, həqiqətən, bu links əldə edə bilərsiniz. yaxşı resursları həqiqətən Flask üçün sənədlər və özlərini peewee. Onlar, həqiqətən, yaxşı yazılmış edirik düşünürəm. Belə ki, Flask veb burada və Onlar quickstart tutorial var ki, oxşar vasitəsilə gəzmək olacaq Mən vasitəsilə getdi nə şeyi, ancaq baxış hər cür istəyirsinizsə Mən getdi şeyi, və ya mən izah ki, düşündüm bir confusing şəkildə bir şey, onlar orada bənzəri nümunələr lazımdır. Peewee sənədləri var və Onlar quickstart tutorial var ki, əsas parametrləri üzərində gedir istifadə etmək istəyirəm ki,. Belə ki, hər şeyi mən danışdıq unikal və ifadə yetirilməməsi, sahələrində müxtəlif növ ki, bu bütün var olacaq, istifadə edə bilərsiniz. Ayrıca, varsa Peewee haqqında suallar, və siz StackOverflow onları göndərmək həqiqətən peewee etdi guy gedir və bəzən o cavab verir. Inşallah bir sual varsa, O, cavab edə bilərsiniz o, bütün şey yazdı çünki. Hesab edirəm ki, hər şey hesab edirəm Mən əhatə istədi. Gələn üçün təşəkkür edirik.