[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.