[موسیقی] EZRA زیگمند: سلام بر همه. با تشکر برای بیرون آمدن امروز. این سمینار "پایتون وب سایت با نرم افزار فلاسک. " بنابراین، من قصد دارم به صحبت کردن می شود کمی در مورد اینکه چرا شما ممکن است مایل به استفاده از فلاسک به برنامه های وب با پایتون، به عنوان مخالف به برخی از چارچوب های دیگر وجود دارد، مانند جنگو است که به خوبی شناخته شده است. زیرنویس است "و چيز كوچك و جزئي، "چیزی است که ما قصد داریم تا در مورد چگونگی صحبت به تعامل با پایگاه داده SQL. این باعث می شود آن را واقعا خوب است. بنابراین، در اینجا فقط مختصر و مفید سریع از چه من می خواهم برای رفتن. بنابراین، اول، فقط یک اسلاید که برای رفتن به کلید شروع سریع، این است که چگونه به همه چیز راه اندازی بر روی کامپیوتر شما. من قصد دارم به شد نشان دادن این بر روی دستگاه محلی مک من، فقط به خاطر این که در آن من این را انجام داده ام قبل از، من بیشتر با آن راحت هستم، اما این است که قطعا ممکن است در CD50 IDE. بنابراین، پس از آن، من می خواهم معرفی آنچه فلاسک است، و شما را متقاعد کند که چرا شما باید استفاده از آن در وهله اول. پس از آن، من یک سریع را مثال از آنچه شما می توانید در فلاسک، یک مثال سریع انجام آنچه شما می توانید در چيز كوچك و جزئي انجام دهید، و پس از آن من به شما یک بیشتر نشان می دهد به عنوان مثال نرم افزار کامل که من با هم قرار داده که ما می توانید از طریق راه رفتن با هم. و در نهایت در، آخرین اسلاید، من برخی از منابع که شما نگاه در آنلاین برای اطلاعات بیشتر. این یک کامل نیست آموزش از نحوه استفاده از فلاسک. و من امیدوارم که به ترک برخی از زمان برای سوالات. هر کسی در حال تماشای به صورت محلی، فقط مانند، فریاد در وسط اگر هر سوالی دارید. بنابراین چیزهای نصب و راه اندازی سریع، اگر شما می خواهید به دنبال همراه، و یا اگر شما می خواهید برای دریافت این بر روی دستگاه خود را، من قصد دارم به توان با استفاده از پایتون 2.7.10. فلاسک کار با پایتون 3، اما من دوست دارم با استفاده از پایتون 2، به دلیل وجود این برخی از بسته های پایتون با 3 کار نشده است. اگر شما پیپ نصب شده، که یک مدیر بسته پایتون می باشد، من فکر می کنم اگر پایتون است بزرگتر یا مساوی 2.7.9، شما آن را نصب کرده اید، آن را فوق العاده آسان برای نصب این بسته. شما می توانید انجام پیپ نصب فلاسک، تصویر در تصویر نصب چيز كوچك و جزئي، معمولا شما باید برای اجرای دستور sudo فقط به طوری که مجوز کار کند. و اگر شما با استفاده از یک فوق العاده نسخه های قدیمی از پایتون، من توصیه می کنم به روز رسانی پایتون خود را، و یا با استفاده EasyInstall به نصب تصویر در تصویر. بنابراین، سوال بعدی این است، چه فلاسک است؟ و من حدس می زنم، برای اولین بار سوال منطقی من تعجب برای مدت زمان طولانی است، چه یک برنامه وب است. از آنجا که یک کلمه نیست که من فکر می کنم حدود زیادی پرتاب که من واقعا نمی دانند. و من فکر می کنم که بهترین نمونه ای از آنچه یک برنامه وب است، واقعا CS50 مالی، که در آن واقعا فقط یک وب سایت، اما آن چیزی که شما مرتب کردن بر اساس تواند با تعامل. حساب کاربر وجود دارد و تمام انواع چیزهای مختلف است. بنابراین، که دقیقا شما در قرعه کشی خط بین آنچه یک وب سایت است، و چه یک برنامه وب است، مرتب کردن بر اساس دلخواه، اما من حدس می زنم این ایده، آن چیزی است که بیش از یک وب سایت و آن را یک نرم افزار مفید است. بنابراین، فلاسک یک چارچوب برای است ساخت برنامه های وب با استفاده از پایتون. و امیدوارم، در پایان از این، من شما را متقاعد خواهد که شما در واقع می تواند چیزی ارسال مانند CS50 مالی با استفاده از پایتون، که من مانند خیلی بهتر از پی اچ پی، شخصا. بنابراین، فلاسک است، که آنها را microframework، که توسط آن، آنها به معنی آن را بسیار ساده است، اما توسعه. بنابراین، آن را فقط به آنچه که شما نیاز دارید، اما اگر می خواهید ویژگی های بیشتری، آن را آسان به آنها را در آورد. اما فقط به خاطر آن است که یک microframework، نمی کند این معنی است که آن را تنها برای پروژه های کوچک. من یک لینک در اینجا است که می گوید که اوباما در سال 2012 مورد استفاده قرار فلاسک برای مبارزات انتخاباتی خود وب سایت، که امیدوارم، چیزی از یک تایید است. اما چیزی که من واقعا در مورد فلاسک دوست است که، آن را واقعا نمی کند هر نوع تصمیم گیری را برای شما. فقط به خاطر اینکه ما صحبت کردن در مورد برنامه های وب، من آن را نسبت به روبی در ریل و جنگو، که هر دو می چارچوب بزرگ است، اما آنها هر دو فرض در مورد چگونه می خواهید به با پایگاه داده ارتباط برقرار کنید، چگونه می خواهید به ارائه خود را دیدگاه ها، و آنها قطعا هستید جنبه های خوب به آن. به عنوان مثال، روبی در آهن این سیستم ثبت فعال، است که واقعا خوب راهی برای تعامل با داده ها، اما اگر شما می خواهید به استفاده روبی در ریل، شما در حال مرتب کردن بر اساس به آن گره خورده است. اما با فلاسک، به عنوان من شما با چيز كوچك و جزئي نشان می دهد، شما می توانید هر نوع استفاده از پایگاه داده شما می خواهید، و شما فقط می توانید بکشید که در به عنوان یک فرمت به فلاسک. به همین دلیل من واقعا مانند فلاسک، آن است که آن را کند فرض برای شما می سازد نیست بر اساس چیزهایی که شما واقعا نیاز نیست. بنابراین، چرا باید به شما فلاسک استفاده کنید؟ مزایای استفاده، آن را فقط واقعا ویژگی های اصلی ساخته شده را به آن که شما نیاز دارید. بنابراین، شما لازم نیست که به نگرانی در مورد درک یک دسته کامل از همه چیز که شما واقعا نیاز. شما لازم نیست که به نگرانی در به در مورد خاموش کردن ویژگی که شما واقعا نیاز. و همانطور که اشاره کردم، آن را فوق العاده آسان برای اضافه کردن پسوند در همه چیز که شما لازم. برخی از آنها، فلاسک است پشتیبانی خود را برای آن است. بنابراین چیزی به نام فلاسک وجود دارد مدیریت، که آینه که محیط مدیریت پانل که جنگو فراهم می کند، که به شما می دهد یک راه خوب بصری برای اداره وب سایت خود را. اما باز هم، اگر شما ساخت چیزی ساده، شما احتمالا یک مدیر بزرگ نیاز ندارد پانل، بنابراین من فکر می کنم که فوق العاده خوب است. و معایب هستند، که شما قدرت کمتری دارند، در خارج از جعبه. بنابراین، هنگامی که برای اولین بار وارد فلاسک، و در برنامه های پایتون خود را، شما فقط از فلاسک نوع واردات *، یا هر چیز، شما دقیقا نمی گرفتن همه ویژگی های شما ممکن است بخواهید. و بنابراین شما به صراحت بیشتری داشته لیست ویژگی شما می خواهید. به طوری که یک نقطه ضعف است، اما من فکر می کنم که برای ساخت وب کوچک برنامه های مانند من قصد دارم به نشان می شود شما، که واقعا یک مشکل نیست. و چه آخرین چیزی است قرار است به می گویند، که یک تایپی، است که کمتر استاندارد وجود دارد کنوانسیون برای چگونگی استفاده از فلاسک، فقط به خاطر اینکه به عنوان بسیاری وجود دارد مردم که از آن استفاده حرفه ای در مقایسه با جنگو می باشد. بنابراین، اگر شما چیزی شبیه، "چگونه می توانم بکنم X" در جنگو، شما احتمالا آن را پیدا کنید. طراحی خوب وجود دارد شما می توانید الگوهای استفاده کنید، اما با فلاسک، آن را مرتب کردن بر اساس راه خود را، فقط به خاطر اینکه این یک کتابخانه خیلی کوچک است. بنابراین کسانی که معایب، اما من فکر می کنم که آن را هنوز هم یک کتابخانه خوب استفاده کنید. بنابراین اجازه دهید فقط پرش به سمت راست فلاسک. این است که قطعا نمی به یک آموزش کامل، اما آن را به شما ایده بدهد از چگونه به ساختار چیز، و به همین ترتیب به شما احساس راحتی رفتن و به دنبال در اسناد و مدارک و پیدا کردن بیشتر. بنابراین، من اجازه باز کردن واقعا به عنوان مثال ساده در ابتدا، و شما چه که نشان می دهد به نظر می رسد، و پس از آن ما شکستن آن را کمی بیشتر. بنابراین این اینجا، اجازه دهید آن در حال اجرا. بنابراین، من در حال حاضر برنامه در حال اجرا است. من قصد دارم برای باز کردن سافاری و آن در حال اجرا بر روی میزبان محلی من. بنابراین من فقط رفتن را به این بزرگتر است. اما localhost را: 5000 و بنابراین، در حال حاضر، این همه است، هنگامی که شما بازدید از وب سایت، آن را چاپ "سلام فلاسک،" است که فوق العاده مفید نیست، اما من فکر می کنم که آن را سرد در این فایل کمی در اینجا، ما یک وب سرور در حال اجرا است که چاپ کردن چیزی. بنابراین، اجازه دهید در واقع نگاه در کد برای یک ثانیه، و شکستن آن را کمی. آیا به اندازه خوب است برای همه که اینجا هستید؟ بنابراین، امیدوارم، شما تا حدودی هستید راحت با استفاده از پایتون. من فرض کنید که ما می توانیم در نگاه پایتون و از طریق آن را بخوانید. اگر شما هر گونه سوال در مورد دارند هر چیزی، من همچنین می توانید بیش از آن برود. بنابراین خط اول است، از فلاسک، ما به واردات، فلاسک با سرمایه "F" که نوعی از همه ویژگی های کلیدی است که شما نیاز دارید. هر زمان که شما در حال نوشتن یک فایل و با استفاده از فلاسک، شما در حال رفتن به می خواهم به واردات است که، فقط به خاطر است که همه چیز اصلی. چیزی که بعد از ما، ما است این تابع فلاسک، فقط برای ایجاد یک شی برنامه، و شما همیشه می خواهم به انجام این کار. و پس از آن، پریدن به پایین به سرعت، این بخش در اینجا این است، "if_name _ ==" _ main_ "'است که مرتب کردن بر اساس یک قرارداد پایتون. بنابراین این تنها اگر شما اجرا خواهد شد این فایل به طور مستقیم با استفاده از پایتون را اجرا کنید. پس از آن، ما پاسخ app.run، که در واقع شروع به برنامه رفتن. بنابراین، که ساختار اصلی که شما در هر برنامه فلاسک دارند، است شما این را دارند برنامه = فلاسک (_name_)، و سپس app.run. بنابراین، دو چیز است که من در اینجا، آنچه که ما مسیرهای پاسخ. بنابراین، اجازه دهید بحث در مورد مسیریابی کمی بیشتر. من به اسلاید بروید. بنابراین اساسی ترین مفهوم در فلاسک مسیریابی است. و آن را ایده که شما اختصاص توابع در پایتون به آدرس خاص بر روی صفحه وب خود را. بنابراین، هر زمان که شما می خواهید برای ایجاد یک مسیر جدید، شما استفاده از این app.route @ دکوراتور تابع. بنابراین، اگر شما با آن آشنا هستند تزئینات تابع در پایتون، به این مفهوم است که اجازه می دهد تا شما را به یک تابع و آن را احاطه کرده با چیز دیگری. پس در واقع، این دکوراتور می کند، است که طول می کشد تابع در زیر آن، و می افزاید: اطلاعات بیشتر به آن، اما آنچه در واقع فلاسک می کند که اتفاق می افتد فوق العاده نیست بسیار مهم است، اما آنچه مهم است، است که قبل از مسیر، شما قرار دادن این @ app.route، و سپس آدرس از مسیر، به طوری که بریده بریده چیزی است که ما دیدم زمانی که ما فقط باز کردن صفحه وب. به طوری که در صفحه اصلی است. این فقط مسیر بریده بریده است. و سپس شما باید این تابع. نام تابع می تواند هر آنچه شما می خواهید. این لزوما لازم نیست که باید با مسیر. و پس از آن، هر چه بازگشتی تابع، تابع باید یک رشته بازگشت. و این رشته می توانید شامل HTML و یا هر چیزی، و این است که در واقع چه خواهد شد به مرورگر وب خود را به عنوان HTML بازگشت، و آن را ارائه کند. بنابراین این همان کد است که از مثال که من فقط فرار، تا زمانی که بازدید بریده بریده ما، این یک تابع سلام جهان، تماس های که تنها یک رشته، سلام فلاسک می گرداند، و می شود که بر روی صفحه نمایش چاپ شده است. بنابراین به عنوان مثال دیگری وجود دارد، است که، هنگامی که شما بازدید / سلام، آن را چاپ سلام ورد، که در واقع باید گفت، سلام جهان، اما بیایید وانمود که عمدی بود. بنابراین اجازه دهید جلو که واقعی سریع است. بنابراین اگر شما به localhost را / سلام، آن چیز دیگری چاپ می کند. به طوری که فقط یک مثال سریع از چگونه است شما می توانید دو مسیر مختلف ایجاد کنید. بنابراین، تا کنون این فوق العاده مفید نیست، است بسیار شما می توانید انجام دهید وجود ندارد، شما فقط می تواند انجام تمام کارهایی که با داشتن صفحات HTML مختلف، و هنگام مراجعه به یک خاص صفحه فقط بارهای در صفحه. بنابراین اجازه دهید که برخی بیشتر چیزهای مفید شما می توانید انجام دهید. بنابراین، آن چیزی است که شما ممکن است متوجه در مثال که من کشیده تا این است که من app.run بود (اشکال زدایی = واقعی). و بنابراین، آنچه این استدلال اشکال زدایی می کند، است که هنگامی که شما وب سرور خود را اجرا کنید، زمانی که شما در نرم افزار خود هستید، اگر شما یک فایل را تغییر دهید، از آن خواهد شد به طور خودکار به سرور بارگذاری کنید. و بنابراین شما در واقع نه به راه اندازی مجدد پایتون، که فوق العاده مفید است. من می توانم نشان می دهد که. اجازه بدهید من کد با خطای تایپی در آن، و وانمود کنید که تایپی وجود دارد قرار داده شد عمدا برای اهداف آموزنده است. بنابراین اضافه کردن این تماس در دهید. بنابراین در حال حاضر آن را می گوید سلام جهان. من آن را ذخیره کنید. و اگر ما جلو و عقب تا ترمینال، شما می گویند که آن را راه اندازی مجدد، چرا که آن را شناسایی تغییر، و بنابراین در حال حاضر زمانی که ما این صفحه را مجدد بارگذاری، آن را چاپ کردن چیزی درست است. بنابراین اشکال زدایی فوق العاده که مفید است. همچنین، اگر شما هر گونه مرتب کردن بر اساس یک تصادف، به طوری که اجازه دهید این سقوط نرم افزار با داشتن آن یک رشته نمی گرداند. بنابراین، اجازه دهید فقط آن را دارند بازگشت هیچ برای برخی از دلیل. و پس از آن زمانی که این دیدار من صفحه، آن را فقط سقوط خواهد کرد، اما سرور نه تنها سقوط، آن در واقع شما می دهد یک تماس فوق العاده مفید اثری از هر چیزی که اشتباه رفت. و چیزی که واقعا خوب است، که در هر گام در این تماس ردیابی، شما می توانید از باز کردن یک تعاملی پوسته در اینجا، و از آنچه از چاپ متغیرهای شما می خواهید را به یک نگاه. و به این ترتیب است که واقعا اشکال زدایی برای بدانند مفید آنچه در جریان است با خود سرور، و نه تنها دیدن چیزی در PHP مانند یک داخلی 500 خطای سرور، که فوق العاده بی فایده است. یک چیز به آگاهی است، که اگر شما برنامه خود را آنلاین پس از آن برای عموم قابل رویت، شما می هرگز نمی خوام به ترک حالت اشکال زدایی در، چرا که مردم در واقع می توانید استفاده از کنسول که من نشان داد شما برای اجرای کد دلخواه. بنابراین آنها می توانند مانند هر نسخه قابل چاپ کردن کدهای مخفی شما وجود دارد، آنها می توانند در دقیقا نگاه چگونه وب سایت خود به کار است. پس از آن واقعا مفید برای آزمایش، اما همیشه مطمئن شوید که آن را قبل از شما هر چیزی را منتشر آنلاین. بنابراین، هنگامی که شما با استفاده از چیزی مانند PHP، این ایده وجود دارد که که شما می توانید با تصویب اطلاعات بین صفحات وب با قرار دادن اطلاعات در واقع در URL است، که یک درخواست GET، اما در فلاسک، واقع شما می توانید انجام کاری از مانند آن، با داشتن یک مسیر است که یک متغیر به عنوان بخشی از آن است. بنابراین اگر شما در این نگاه به عنوان مثال بر روی صفحه نمایش در اینجا، ما باید یک مسیر که ('/ سلام /')، و بنابراین، اگر شما بازدید / سلام / چیزی، که چیزی در حال رفتن به واقع پر به متغیر name. و توجه کنید که تابع که همراه با آن مسیر است را به در پارامتر نام، به طوری که آن را در واقع خواهد شد دریافت به تابع منتقل می. و سپس، هنگامی که شما داخل این تابع، شما می توانید درمان که مانند یک متغیر معمولی پایتون، و به همین ترتیب پس از آن، آن را به نسخه قابل چاپ کردن سلام، و آن را به نام با استفاده از پر خواهد شد برخی از قالب بندی رشته است. بنابراین برای اضافه کردن قطعات به یک متغیر مسیریابی، شما با استفاده از براکت زاویه مارک. و در صورت تمایل، شما می توانید استفاده چه یک مبدل نامیده می شود. و به همین ترتیب، اگر شما این قرار حاشیه نویسی با روده بزرگ، شما می توانید مشخص کنید که آن را یک int، و یا شناور، یا مسیر، و آن را به طور خودکار تبدیل شده است. شما همچنین می توانید تبدیل انجام در تابع پایتون، فقط با استفاده از بازیگران، اما گاهی اوقات اگر شما می خواهید به اطمینان حاصل شود که آن را از نوع int است، شما می توانید قرار داده است که حکومت تبدیل در آن وجود دارد. بنابراین اجازه دهید یک مثال بالا بکشد از برخی از قوانین متغیر است. بنابراین در اینجا، این است که همان پایه ساختار با واردات از فلاسک فلاسک، نرم افزار = فلاسک (_name_)، و سپس آن را در حال اجرا در پایان. ما باید این دو متفاوت مسیرهای متغیر در اینجا. و یکی از اولین، است یکی که من نشان داد در اسلاید، که بود که آن را تنها در نام رشته طول می کشد و آن را چاپ کنید خوش آمدید، نام. و پس از آن، دوم یکی با استفاده از تبدیل. بنابراین این طور خودکار آن را تبدیل به int، و سپس دو برابر هوشمند، و چاپ که از. و ما هر نوع نیست تبدیل درون آن به دلیل فلاسک طول می کشد مراقبت از آن. بنابراین اجازه دهید این در حال اجرا. هنگامی که شما یک فلاسک برنامه در حال اجرا، شما می توانید از آن-C کنترل برای متوقف کردن سرور در حال اجرا. و بعد من متغیرهای اجرا خواهد شد. بنابراین اجازه دهید به localhost / سلام / بروید و عزرا امیدوارم، این به من گفتن سلام. پس از آن به نام من گرفت، در متغیر مسیر، و آن را آن را در اینجا پر شده است. بنابراین من همچنین می خواهید یک سریع نشان می دهد به عنوان مثال از دو برابر شدن. بنابراین اگر شما به / دو / 3 بروید، آن را به خارج 6 را چاپ کنید. بنابراین این زمان مراقبت از تبدیل برای ما. بنابراین شما می توانید این کار را با شناور، و چیزی خاص، اگر شما نیاز به مشخص چیزی شبیه به یک مسیر، که اجازه می دهد اسلش آن را قبول، اما که باید معمولا یک موضوع باشد. تا کنون ما، هنوز هم فقط بازگشت شده است رشته است که بسیار جالب است. ما در واقع می تواند بازگشت رشته HTML تحت اللفظی است. بنابراین در کد ما می توانیم چیزی وارد مانند B-برچسب آن را به حروف درشت، اما بیشتر زمانی که شما در واقع می خواهم نه به نوشتن کد HTML در کد پایتون خود را. این می شود واقعا کثیف، و آن را یک زمان خوب نیست. فلاسک اجازه می دهد تا ما را به جدا کردن HTML به آنچه الگو نامیده می شود، و بنابراین اگر شما در حال فکر کردن از نظر مدل MVC که شما با آن آشنا هستید، امیدوارم، از کار با CS50 مالی کمی، شما می توانید از فایل های پایتون فکر می کنم به عنوان تر از کنترل کننده، که در آن آنها در حال تعامل با هر مدل داده شما ممکن است. و پس از آن آنها خواستار به نمایش و انتقال اطلاعات به این دیدگاه برای پر کردن در اطلاعات در HTML که به آن نیاز. و آنچه ما تماس بگیرید این دیدگاه قالب در کلاس می باشد. بنابراین با استفاده از پایتون یکی دیگر از فلاسک ماژول است که به طور خودکار نصب زمانی که شما پیپ نصب فلاسک به نام معبد شینتویی که اجازه می دهد که شما اضافه کردن این حاشیه نویسی به HTML که شما بر روی صفحه نمایش، که اجازه می دهد شما در چیزهایی مانند شرطی قرار داده است، و حلقه به HTML. بنابراین به نظر می رسد کمی مانند که چگونه شما ممکن PHP در یک فایل HTML استفاده کنید، اما این فقط زمانی که فلاسک است سرور عمل می کند تا فایل HTML، این موتور قالب اجرا خواهد شد و تجزیه از طریق این و همه چیز در پر کنید. بنابراین فلاسک دارای یک تابع render_template که شما می توانید در پایین اینجا را ببینید. و تا زمانی که شما به این صفحه مراجعه، آن این الگو نام hello.html رندر، و سپس در این صفحه HTML را پر کنید. بنابراین اجازه دهید فقط این واقعی اجرا سریع، و ببینید چه چیزی به نظر می رسد، و پس از آن من از طریق یک بروید کمی با جزئیات بیشتر. بنابراین، قالب های خود را در حال رفتن در پوشه قالب بروید. این به طور خودکار در نگاه قالب برای قالب که پوشه. بنابراین اجازه دهید این باز کردن. بنابراین، من به عنوان مثال قالب اجرا شود. بنابراین اگر من به آدرس / hello / عزرا بروید، آن را تا به این وحشتناک، تگ marquee را نفرت انگیز است که من در قرار داده است. بسیار خوب، بسیار پویا. من از طرفداران بزرگ است. اما اگر من فقط به، / سلام برود؟ پس از آن فقط می گوید سلام جهان. من آن را عبور نمی کند یک نام، و آن را پر در به صورت خودکار. بنابراین اجازه دهید ببینید که چگونه آن را انجام داد، و چگونه ما می توانید از شر است که خیمه شاید. بنابراین در اینجا، این است مرتب کردن بر اساس یک مثال جالب از، اگر شما با چگونگی سوئیچ آشنا هستند اظهارات در یک زبان کار می کنند. این است که نوعی مانند، این نوع از سقوط را از طریق، که در آن شما در واقع دو متصل مسیرهای مختلف برای تابع همان. بنابراین ما ضمیمه / سلام مسیر و در / سلام / نام مسیر برای سلام، و ما را مشخص using-- پایتون شما اجازه می دهد مشخص به طور پیش فرض تابع arguments-- بنابراین اگر هیچ نام وجود دارد، بنابراین اگر ما به تنها / سلام، آن را به طور خودکار فیلتر به نام به هیچ برابر است. پس ما ارائه قالب با نام = نام، پس از آن در پارامتر name خواهد شد به این پارامتر نام تابع برابر، به قالب. که هنوز هم توضیح نمیدهد که چگونه است تصمیم گیری برای چاپ سلام جهان، و یا چاپ به نام من. بنابراین اجازه دهید در واقع نگاه به قالب خود را، و ببینید که در آن است که در حال آمدن است از. بنابراین، در این الگو، ما در واقع برخی از منطق شرطی، که برخی از مردم استدلال می کنند، شما در واقع می باید مقدار زیادی از شرطی ندارد منطقی در قالب خود را است. باید آن را بیشتر در شود کنترل، اما برای این مثال آن چیزی است که بسیار کوچک است. بنابراین در اینجا، ما را بررسی کنید، اگر نام، به طوری که اگر نام به هیچ برابر نیست، اگر یک نام است که در واقع گذشت در، پس ما گویند سلام، نام و نام خانوادگی با هدر و خیمه، این HTML عادی، در غیر این صورت، ما نسخه قابل چاپ کردن سلام جهان فقط به طور معمول. بنابراین زن و شوهر مسائل قابل توجهی در اینجا در مورد چگونگی فرمت قالب شما، این است که، همه از این عبارات شرطی، نوع مانند ما چگونه آن را هنگامی که PHP شما به قرار دادن برخی از PHP، شما با استفاده از کمتر از درخواست علامت گذاری به عنوان، آن را از اینجا مشابه با {٪. بنابراین در اینجا، ما باید کد مشروط است. و سپس، هنگامی که شما واقعا می خواهید به معنای واقعی کلمه ارزیابی چیزی، و چاپ آن را به صفحه نمایش، شما استفاده از دو آکولاد. بنابراین در اینجا دو آکولاد هستند، و سپس ما نام مشخص، بنابراین در آن، آن را ارزیابی به نام متغیر، که از تصویب شد ارائه قالب تابع، و نه تنها چاپ ، اگر ما از این شر، آن را فقط نسخه قابل چاپ کردن کلمه "نام." بنابراین، این چیزی است که به مراقب است. بنابراین چیز دیگری که به متوجه این است که، زمانی که ما مایل به استفاده از عملکرد render_template، ما در واقع به واردات آن را به صراحت از فلاسک. و این یک نمونه از است پیمانه از فلاسک، که شما لازم نیست برای وارد چیزهایی که شما لازم نیست. شما فقط می توانید در را شما در واقع توابع لازم است که گاهی اوقات خوب، بنابراین شما لازم نیست باید تمام این توابع نشسته در اطراف است که شما با استفاده از، اما همچنین، اگر شما را فراموش کرده که شما نیاز به واردات render_template، شما احتمالا هشداری دریافت که به شما اجازه می دانم که. بنابراین، قالب است. بنابراین، ما نشان داده شده است که چگونه به صفحات وب ساده، و اضافه کردن منطق کمی بیشتر به آن، از نظر مسیریابی متغیر است. این اجازه می دهد انجام کارهای مختلف بر اساس چه URL شما برای رفتن، و همچنین پس از آن، به حس HTML کمی بیشتر در شرایط چگونه می خواهید به رندر است. شما لازم نیست برای قرار دادن تمام HTML خود را در پایتون خود را، اما برای تقریبا هر برنامه وب، شما در حال رفتن به می خواهم برخی مدل داده ها با آن همراه است. و به این ترتیب به طور سنتی، این امر چیزی شبیه به یک پایگاه داده SQL. و شما فقط می توانید ارتباط برقرار به طور مستقیم با SQL. پایتون، من فکر می کنم آن را به نام. از SQLite 3. شما فقط می توانید وارد از SQLite 3 و اجرا نمایش داده SQL به طور مستقیم، اما من در مورد شما نمی دانم، اما من واقعا دوست ندارم، فقط، نوشتن SQL استفاده کرد. این امر منجر به گرفتن واقعا طولانی و پیچیده است. و بنابراین، چیزی است که من می خواهم به استفاده از چیزی است که شناخته شده به عنوان یک ORM است که شی رابطه ای نقشه برداری. و نقطه یک نقشه برداری شی رابطه ای، این است که دو مختلف وجود دارد روش شما می توانید در مورد پایگاه داده فکر می کنم. بنابراین به عنوان مثال که استاد مالان معمولا با استفاده از در کلاس، جدول اکسل، که در آن است شما این سطر و این ستون ها، و این واقعا برای مفید چگونه آن را در SQL نمایندگی و چگونه شما با آن ارتباط برقرار، اما راه دیگری است که آن را در واقع در مورد آن فکر گاهی اوقات مفید، از نظر کلاس ها و اشیاء است. بنابراین به جای تفکر هر یک از جدول به عنوان داشتن این ردیف است که خاص اطلاعات، واقع شما می توانید از آن فکر می کنم به عنوان هر جدول یک کلاس است، و سپس هر نمونه از کلاس دارای خواص معینی. بنابراین، در این مثال، موارد کلاس را ردیف در جدول، و پس از آن هر یک از اموال را یک ستون از جدول. بنابراین، ORM که من دوست دارم استفاده است که به نام چيز كوچك و جزئي. این واقعا کوچک، نوع مانند فلاسک. من فکر می کنم که آنها به خوبی با هم، اما بسیاری از دیگر ORMs وجود دارد که شما می توانید استفاده کنید. یکی از محبوب تر است شناخته شده به عنوان SQLAlchemy، و من نمی توانم به یاد داشته باشید که چرا من در اصل چيز كوچك و جزئي بیش از SQLAlchemy را انتخاب کرد، و یا من به شما بگویم که چرا من فکر می کنم این یکی از بهترین، اما ما فقط قصد استفاده از این یکی چون من می دانم که چگونه به استفاده از آن. بنابراین، یک سوال است، چرا باید شما را ناراحت با استفاده از یک ORM، به جای فقط به طور مستقیم نوشتن نمایش داده شد SQL؟ و من فکر می کنم بهترین حالت، این است که شما در واقع نه ارسال به SQL استفاده کرد. این بسیار آسان تر، به عنوان من به شما نشان می دهد، به انجام کارهایی مانند انتخاب، درج، حذف، به ویژه ایجاد جداول. این بسیار آسان تر به ارسال یک ساختار طبقاتی، از آن است که به ساختار یک درست بیانیه جدول، اما یک چیز به آگاهی، این است که ORM بهترین حالت آن سعی خواهد کرد برای کشف کردن آنچه بیشتر کارآمد پرس و جوی SQL خواهد بود، اما گاهی اوقات آن را می شود آن اشتباه است. و به خصوص اگر شما کار با یک پایگاه داده بزرگ، شما می توانید متوجه شوید که یک پرس و جو که باید در حال اجرا سریع، است که در واقع گرفتن طولانی تر است. و اگر شما در زیر کاپوت نگاهی به چگونگی ORM است که به تفسیر SQL، ممکن است انجام کاری واقعا مسخره است فقط به خاطر اینکه این نوع از اشاره نیت خود را اشتباه است. و بار که در آن وجود داشته است من تا به حال به آن را لغو، و فقط اجرا نمایش داده SQL خود من، فقط چرا که آن را در یک راه عجیب و غریب تجزیه شد. بنابراین وجود است، برخی از سربار، فقط در راه که آن را کامپایل خود را دستورات را به SQL. بنابراین، اجازه دهید به سرعت نگاه فوق العاده در یک مثال ساده از یک مدل داده که شما ممکن است استفاده کنید. بنابراین، این کد پایتون، و بنابراین است اولین چیزی که شما می خواهید انجام دهید این است از چيز كوچك و جزئي واردات *. بنابراین، بر خلاف فلاسک، که در آن شما تمام این ماژول های فردی، و شما می خواهید برای وارد کردن فلاسک، و ارسال یک قالب، و برخی دیگر که ما بعد خواهید دید، از چيز كوچك و جزئي، شما فقط می توانید همه چیز را وارد کنید، به دلیل آن یک کتابخانه بسیار کوچک است. بنابراین، اولین چیزی که شما می خواهید به انجام است، در واقع این شی پایگاه داده ایجاد کنید. بنابراین، شما باید DB = SqliteDatabase، و پس از آن به نام پایگاه داده خود را. و این در واقع خواهد شد ایجاد یک شی پایگاه داده که شما می تواند با تعامل با چيز كوچك و جزئي. و پس از آن، ما باید واقعی مدل است که ما می خواهیم برای ایجاد. بنابراین جدول ما می خواهیم به ایجاد. بنابراین، در چيز كوچك و جزئي، هر طبقه جدول خود را در پایگاه داده خود را. بنابراین، تمام کلاس به ارث می برند از مدل پایه، و مدل M سرمایه است چیزی است که در چيز كوچك و جزئي تعریف شده است. بنابراین، همه از مدل های خود باید به ارث می برند به عنوان بالاترین فوق خود، آنها باید از به ارث می برند مدل است، اما آنچه واقعا سرد، این است که شما در واقع می تواند خود را مدل های از یکدیگر ارث می برند. و بسیاری از زمان، خود را مدل های داده لزوما یک سلسله مراتب وراثت خوب است، اما زمان که در آن انجام می دهند، آن را واقعا خوب، چرا که شما باید مدل ذاتی از یکدیگر. بنابراین، ما این کلاس تعریف شده دانشجوی، که به ارث یک مدل، و آن را تا سه ویژگی است. آن را تا به ID است که PrimaryKeyField که چیزی است که ارائه شده است توسط چيز كوچك و جزئي، نام CharField است، و یک درجه IntegerField است. بنابراین این ممکن است یا نه ممکن است چگونه CS50 در واقع فروشگاه ها تمام نمرات دانش آموزان. آن نمی باشد، اما این است که چگونه من آن را انجام. و سپس آن را، در این کلاس، و این چیزی است که شما می توانید با انجام است پایتون، شما می توانید کلاس های تو در تو دارند. و این چیزی است که توسط چيز كوچك و جزئي مورد نیاز است. بنابراین، این متا کلاس، شما باید مشخص است که در پایگاه داده است به شی برابر که ما در بالا ایجاد شده است. و این می گوید فایل چه این جدول است در واقع رفتن به در مهار شود. پس این چیزی است که شما باید است به درون همه از مدل های خود را انجام دهید. شما فقط باید به مشخص در داخل این کلاس متا که پایگاه داده را به DB برابر است. پس آنچه که من معمولا، اگر من یک دسته از مدل های مختلف، این است که من یک پایه مدل، که من معمولا فقط تماس بگیرید "مدل پایه" است که کلاس های متا، و از آن مجموعه پایگاه داده به DB برابر است. و سپس تمام مدل های بعدی من را از آن کلاس پایه به ارث می برند. و پس از آن من نیست که نگران باشید در مورد تنظیم کلاس متا. بنابراین، هنگامی که این در واقع می شود پایین را به یک بیانیه SQL وارد شده، آن را مانند این چیزی تند و زننده به نظر می رسد در اینجا، "ایجاد جدول شماره دانشجویی عدد صحیح، " هر چه. و من فکر می کنم که آن را کوتاه تر است، این پرس و جو SQL در اینجا، اما اگر شما در این کلاس در اینجا نگاه کنید شما می توانید ببینید که دقیقا چه خبر است. شما می توانید چه نوع از زمینه ببینید وجود دارد، آنچه که آنها نامیده می شوند، و بنابراین، من فکر می کنم که به دنبال در این کد پایتون است که بسیاری قابل خواندن بیش از تلاش برای نوشتن این پرس و جو SQL. بنابراین، به منظور در واقع استفاده از پایگاه داده، ما باید برای اتصال به آن در پایتون. بنابراین، من معمولا یک تابع به نام ارسال initialize_db که دو چیز است. آن را در پایگاه داده را می گیرد DB شی و آن را متصل به آن، که فقط باز می شود تا بخش به پایگاه داده. اگر شما فقط در حال اجرا هر چند وب سایت در ماشین محلی خود، آن است که یک معامله فوق العاده بزرگ به نگرانی نیست در مورد اتصال و جدا کردن، اما اگر شما در حال اجرا هستند آن را در یک وب سایت، شما می خواهید مطمئن شوید که، هر زمان که یک کاربر متصل به آن، زمانی که آنها بستن وب سایت، آنها به طوری که شما قطع یک دسته از مردم متصل نیست به پایگاه داده خود همه در یک بار. و سپس، هنگامی که شما اتصال به پایگاه داده، شما می خواهید به پاسخ db.create_tables، و لیست مدل برای آنچه شما می خواهید برای ایجاد جداول. بنابراین در اینجا، من فقط به آن را ایجاد کنید برای این دانش آموز. و پس از آن، آنچه که مهم است، به مشخص امن = واقعی ترین زمان. پس چه این بیانیه انجام خواهد داد، این است که آن استفاده از جدول برای ایجاد مدل دانش آموز، اما تنها در صورتی که جدول دارای نمی ایجاد شده در حال حاضر. که آنچه را مشخص امن است. بنابراین آن را نمی خواهد بازنویسی جدول های موجود شما، آن را تنها یک جدیدی ایجاد خواهد کرد جدول اگر یکی وجود دارد. بنابراین، شما فقط می تواند ایجاد جداول بار با استفاده از SQL. و پس از آن که پایگاه داده نشسته وجود دارد، و پس از آن در هر زمان اتصال، اما معمولا خوب فقط به در این پاسخ create_tables قرار داده است، به طوری که، اگر شما همیشه حذف خود را پایگاه داده زمانی که شما وب سایت خود را اجرا برنامه دوباره، آن را آن را بازسازی کنید. بنابراین، فقط مطمئن شوید که امن مشخص شده است درست باشد، و یا شما اطلاعات خود را فقط پیدا کردن گرفتن clobbered در هر زمان. و پس از آن، شما فقط می توانید تماس بگیرید initialize_db به ایجاد یک اتصال، و ایجاد جداول در صورت لزوم. بنابراین، چیزی که رایج ترین که شما می خواهید انجام دهید، و یا یکی از چیزهایی که رایج ترین، است که در واقع قرار دادن همه چیز به پایگاه داده خود را. و به این ترتیب، به جای داشتن برای نوشتن یک INSERT INTO بیانیه با تمام مقادیر مشخص، شما می توانید در واقع پاسخ تابع در کلاس دانش آموز. بنابراین، هنگامی که شما یک کلاس ایجاد که به ارث برده از مدل، آن را تا به این روش ایجاد کنید. بنابراین، شما name.create کلاس، و شما در پارامترها را مشخص که شما می خواهید به تصویب در. بنابراین، اگر من می خواهم به اضافه کردن برخی از دانش آموزان به عنوان مثال ما کتاب کلاس CS50، من در دیوید قرار داده است، که دارای یک درجه بسیار خوب است، او یک 95. و خودم، که انجام نمی تا به خوبی در CS50، من یک 50. و بنابراین، چیز خوب در مورد این تابع را ایجاد می کند، این است که آن را می گرداند به عنوان مثال، یا ردیف، که آن را در جدول ایجاد شده، و پس شما ذخیره است که در یک متغیر، و کار با آن است. شما می توانید در اطراف تغییر دهید، که من یک نمونه از نشان می دهد. توجه کنید که من نمی باید برای مشخص کردن ID، چون از آن است که PrimaryKeyField، به طور خودکار سود آن اگر شما آن را مشخص نمی کند. و، در واقع، شما احتمالا باید آن را مشخص نیست، زیرا شما ممکن است به طور تصادفی کتک زدن ID شخص دیگری است. و می خواهید مطمئن مطمئن شوید که آن را منحصر به فرد. بنابراین، در واقع، بیشتر چیز مشترک می خواهید انجام دهید، احتمالا انتخاب کنید خارج از پایگاه داده هنگامی که شما یک مقدار زیادی از اطلاعات در آن وجود دارد. و به همین ترتیب، اگر شما می خواهید برای دریافت همه چیز، به طوری که معادل ستاره را انتخاب کنید از بیانیه دانش آموزان، آن فقط student.select باشد. و است که شما را از یک آرایه را با تمام دانش آموزان اشیاء در آن که شما تکرار بیش از شما می خواهید. شما می توانید همه چیز از آن دریافت کنید. و بسیاری از زمان، شما نه تنها می خواهید به انجام انتخاب کنید، شما واقعا می خواهید برای مشخص چیزی. و به این ترتیب، شما می توانید زنجیره ای با هم این فراخوانی تابع، مانند که چگونه شما زنجیره ای با هم اظهارات در SQL. بنابراین شما می توانید student.select انجام (). که در آن در این مثال. و پس از آن، شما می توانید مشخص شرایط، فقط با استفاده از معمولی پایتون Booleans می برای بررسی مسائل. بنابراین، در این مورد، شما می خواهید محدود کردن آنچه شما انتخاب به، که در آن student.grade تا 50 برابر است، و student.name به عزرا برابر است، به طوری که فقط من از آن را دریافت. و متوجه، واقعا چیزی ظریف در اینجا این است که، اگر شما می خواهید برای مشخص an و / و یا یک یا / و یا، در پایتون، شما به طور معمول استفاده کنید، من فکر می کنم کلمه "و" در واقع، اما در اینجا شما با استفاده از علامت تک، که به طور معمول یک عملگر بیتی است، اما در این مورد خاص، فقط راه چيز كوچك و جزئي آن را ندارد، شما با استفاده از تنها علامت برای مشخص "و" این چیزی است که که من مخلوط تا مقدار زیادی، اما نمی آیند تا که در عمل. و سپس، هنگامی که شما همه دانش آموزان در خارج از پایگاه داده، هنگامی که شما انجام داده اند که شما انتخاب کنید هستید و لباس یا هر چیز دیگری را، شما می توانید یک حلقه foreach استفاده کنید، درست مثل طبیعی در پایتون، با هر نوع تکرارکننده و یا با هر نوع آرایه است. بنابراین شما می توانید انجام دهید، برای بازدید کنندگان در student.select (). م RE (Student.grade <75) و بنابراین این تکرار بیش از هر دانش آموز در جدول که کمتر از 75 درجه است، که در این مورد، هنوز فقط به من. و پس از آن شما می تواند چیزی در انجام که حلقه مانند من یک ایمیل بفرستید و من به واقع به به نوبه خود در مجموعه ای مشکل من است. بنابراین، یک چیز دیگر که شما می توانید انجام است، آن را واقعا آسان برای به روز رسانی ردیف در جدول. بنابراین، به یاد داشته باشید در اینجا، خود را زمانی که من قرار داده، من در زمان ارزش بود بازگردانده شده توسط student.create، و من آن را به نام به نام عزرا اختصاص داده است. و بنابراین در حال حاضر، شما می توانید تغییر ارزش ها در این مثال، درست مثل شما می توانید یک کلاس عادی در پایتون. بنابراین شما می توانید ezra.grade = 95 و که کپی محلی به روز رسانی، اما اگر شما واقعا می خواهید مرتکب که تغییر به پایگاه داده، شما باید به ezra.save پاسخ، بنابراین شما روش .save نام در نمونه. و بنابراین در حال حاضر، من با موفقیت تغییر درجه خود من در پایگاه داده باشد. بنابراین، پس از آن اجازه دهید بگویم که من گرفتار تغییر کلاس من در پایگاه داده. استاد مالان احتمالا به می خواهم به من از کلاس را حذف کنید، و بنابراین شما می توانید .delete پاسخ روش به عنوان مثال فقط در آن چیز است. بنابراین، اگر شما می خواستم برای رفتن به این حلقه در اینجا، و در واقع، به جای از ارسال ایمیل همه از دانش آموزان کلاس که کمتر است از 75، شما می خواستم به آنها را حذف کنید، در این حلقه شما می توانید به عنوان مثال s.delete پاسخ. و آخرین چیزی که می خواهید انجام دهید، هر زمان که شما یک اتصال ایجاد، و شما را با کار خود را انجام می شود، شما می خواهید به پاسخ db.close، که در آن DB که پایگاه داده است شی که ما قبل بود. و شما می خواهید مطمئن شوید که همه چیز را از بسته می شود. خنک. بنابراین در حال حاضر، من یک مثال کاربردی. من از پیش ساخته شده همه چیز را فقط به طوری که وجود خواهد داشت هیچ گونه برنامه نویسی زندگی می کنند نیست اشتباهات، اما ما می توانیم از طریق راه رفتن آن را و ببینید که چگونه شما می فلاسک قرار و چيز كوچك و جزئي با هم، و ایجاد یک برنامه ساده است. من آن را بیهوده گویی CS50، و آن را مرتب کردن بر اساس یک پلت فرم ساده وبلاگ. بنابراین، اولین بار، من آن را اجرا کنید و نشان می دهد آنچه به نظر می رسد، و پس از آن ما می توانیم بیشتر به کد نگاه کنید. خوب، پس اجازه دهید فقط این را اجرا کنید. سرد، من این را کمی کوچکتر است. این بسیار زیبا نیست، فقط به خاطر من بسیاری از CSS را ندارد، اما آنچه آن است، آن را تا این پایگاه داده از پست های وبلاگ، و آن را از طریق تمام می رود آنها، و آنها را نمایش داده خواهد شد در صفحه در از جدید ترین. و بنابراین این تنها برخی ها پست ها که من در پایگاه داده ذخیره کرده بود. بنابراین اگر ما می خواهیم برای ایجاد یک جدید پست، ما می توانید به اضافه کردن یک پست جدید، و ما می توانیم به عنوان را وارد کنید پست، بنابراین چیزی شبیه به، سمینار CS50. وای، واقعا لذت بردن از این سمینار است. خنک. سپس شما ارسال را فشار دهید، و آن را تغییر مسیر شما را به صفحه اصلی، و پس از آن شما خواهید دید که آخرین پست اضافه شد. و ما هنوز همه آنهایی که وجود دارد. بنابراین در حال حاضر، اجازه دهید از طریق تمام گام کد و ببینید که چگونه این اجرا شده است. بنابراین، من فکر می کنم اولین چیزی که اجازه دهید نگاهی به، در واقع مدل. بسیاری از زمان، هنگامی که شما در حال طراحی چیزی، شما می خواهید برای اولین بار در مورد چگونه فکر می کنم شما در حال رفتن به نمایندگی از داده های خود، و سپس به طراحی همه چیز در اطراف آن، طوری که همه چیز را حس می کند. و این است که در واقع چگونه من آن را انجام داد زمانی که من در ساخت این، من نشستم و فکر کردم، چه در یک پست می خواهم. بنابراین، در اینجا، ما همان ساختار که قبلا ذکر شد، که در آن ما DB = Sqldatabase ('posts.db'). در واقعیت، شما احتمالا نمی خواهید به کد سخت در پایگاه داده های نام خود را. که احتمالا باید یک پارامتر که در جایی ذخیره، شاید در یک فایل پیکربندی، اما در یک مثال کوچک مانند این، آن را خوب به کد سخت است که در. بنابراین در حال حاضر، ما باید این کلاس پست، که به ارث از مدل پایه. و آن را تا، دوباره، ID = PrimaryKeyField. در واقع، اگر شما مشخص نیست، اگر من در واقع از این شر، پس از آن چيز كوچك و جزئي ما خواهد شد مراقبت از به طور خودکار ایجاد که درست ID، و این به طور خودکار آن را به یک PrimaryKey که من فکر می کنم واقعا خوب، چون معمولا، این چیزی است که شما می خواهید به است، اما من دوست دارم به آن را در به طور خاص، فقط تا من به یاد داشته باشید که آن را در وجود دارد. اما اگر شما مشخص نیست که، که به طور خودکار وجود خواهد داشت. بنابراین پس از آن، من یک تاریخ است که DateTimeField است، و همه این زمینه های مختلف، اگر شما در اسناد و مدارک چيز كوچك و جزئي نگاه کنید، آن را به شما یک لیست از مختلف می دهد نوع از زمینه های که شما می توانید استفاده کنید. در اکثر موارد، این شبیه به آنچه شما را در SQL را ببینید. بنابراین یک CharField وجود دارد، یک VarCharFields، TextFields، که برای بسیار طولانی است متون، مانند یک پست وبلاگ به طور بالقوه، DateTimeFields، DoubleFields، FloatFields، همه چیز شبیه به آن. و شما می توانید در بحث های دیگر منتقل می به آن، که من در اینجا مشخص نیست. می گویند، برای مثال، شما نمی خواست اجازه می دهد دو پست به همین عنوان، شما می توانید مشخص کنید چیزی شبیه به منحصر به فرد = درست است، و این فقط یک پارامتر اضافی به این زمینه که زمانی که آن را کامپایل کردن آن به SQL، آن را مشخص خواهد که آن را به منحصر به فرد. شما همچنین می توانید چیزی شبیه به مشخص تهی نیست و تمام چیزهای دیگر شما به طور معمول در SQL است. بنابراین، این است که بسیار ساده است مدل است که از تاریخ. توجه داشته باشید در اینجا، در DateTimeField، من مشخص چه به طور پیش فرض است. من آن را مشخص می شود عبارت datetime.datetime.now، به دلیل راه که این می شود مورد بررسی، آن را در واقع ارزیابی datetime.now که آن را می شود در پایگاه داده وارد می شود. من فکر می کنم که، من می خواهم که به دو برابر بررسی این اما اگر شما چیزی شبیه به این انجام داد، سپس آن را در واقع می ارزیابی که یک بار، و پس از آن تاریخ ساعت همیشه یکسان باشد. بنابراین، فقط اگر شما در حال انجام چیزی با datetimes، دو برابر چک که آن را ارزیابی که در واقع قرار داده می شود، و یا دیگری شما ممکن است اشتباه گرفته شود. عنوان فقط یک CharField که وجود دارد استدلال بیشتر شما می توانید تصویب در تعیین دقیقا چه مدت شما خواهید آن را به، اما در اینجا، آن واقعا مهم نیست. و متن است برای رفتن به متن طیف پست، و این برای رفتن به یک تکست فیلد فقط به خاطر اینکه شما می خواهید اجازه می دهد تا آن را به یک رشته بسیار طولانی است. پس ما باید این متا زیر کلاس که فقط مشخص می کند که ما می خواهیم در پایگاه داده که در آن این است که در واقع به باز به موضوع DB که ما را در اینجا. و آخرین چیزی که ما باید در اینجا، فقط این تابع این است که ما قصد داریم به استفاده از برنامه اصلی ما برای مقدار دهی اولیه پایگاه داده برای اتصال به آن، و سپس به ایجاد جدول ارسال. در حال حاضر، اجازه دهید در برنامه اصلی خود نگاه کنید. پس این یکی کاملا کمی طولانی تر از آنهایی که که ما قبل از دیده می شود، اما امیدوارم خیلی بد نیست. بنابراین، اجازه دهید من این گسترش است. باشه. بنابراین، توجه و بالای من وارد یک دسته کامل از چیزهای دیگر از فلاسک که ما نه واقعا قبل از دیده می شود. و امیدوارم، ما می توانید از طریق هر یک از این یک به یک و صحبت کمی بیشتر در مورد آنها، به عنوان مثال طبقه بندی شده اند. بنابراین، ما باید فلاسک، و render_template، که ما قبل از دیده می شود، این شی درخواست، که خواهد آمد تا زمانی که ما در نحوه نگاه فرم است که من در واقع نشان دادن آثار. تغییر مسیر، که به شما اجازه تغییر مسیر تماس از نوشته ی تازه بازگشت به صفحه خانگی اصلی، و سپس URL، چیزی است که شما اجازه می دهد تا که شکل که در آن بر روی وب سایت یک صفحه خاص است. بنابراین پس از آن، بعد از چیزی که من، من واردات است تمام اطلاعات از مدل های فایل های که ما فقط دنبال شد در. و، آره. بنابراین، چیز دیگری است که می آید جدید تا زمانی که شما در حال برخورد با، به ویژه پایگاه های داده، این است که شما می توانید مشخص کنید یک تابع می شود که قبل از به نام هر درخواست، و تابع که به نام بعد از هر درخواست، با استفاده از این درخواست تابع دکوراتور app.before. و این اجرا از هر کجا که این تابع است. این را ندارد به به نام قبل از درخواست، اما معمولا این چیزی است که معقول به آن تماس بگیرید. شما می توانید هر تابع را مشخص شما می خواهید برای رسیدن به آنجا نامیده می شود، بنابراین من این initialize_db مشخص تابع است که ما در حال مدل فایل، بنابراین قبل از هر درخواست، شما می خواهید برای اتصال به پایگاه داده. دو مختلف وجود دارد روش شما می توانید این کار را. شما می توانیدapp است.، من باور آن after_request. و تفاوت بین after_request و teardown_request، این است که after_request تنها اتفاق خواهد افتاد در صورت درخواست در واقع معتبر بود. و بنابراین، تنها در صورتی که درخواست موفق بود، اگر چیزی را اشتباه رفت، اما teardown_request در مورد یک اتفاق می افتد موفق درخواست، و یا در مورد یک خطا. بنابراین، معمولا، شما می خواهید به استفاده از teardown_request، مگر اینکه شما می خواهید به انجام چیزی، به خصوص مختلف در مورد یک خطا. اما فقط برای بستن پایگاه داده، آیا آن را موفق می شود یا اگر نتواند، ما آیا شما می خواهید به قطع از پایگاه داده باشد. بنابراین آن را به نام، db.close بر روی شی دسی بل. توجه داشته باشید که teardown_request در یک استثنا طول می کشد. بنابراین شما می توانید بررسی کنید که آیا در واقع وجود دارد خطا در هنگام بسته شدن آن پایین بود، اما در اینجا، امیدوارم، وجود دارد یک کل بسیاری از اشتباهات، بنابراین ما فقط از نادیده گرفتن است. خوب، و بقیه از آن است خیلی بد نیست. بنابراین، هنگامی که ما به صفحه اصلی بروید، ما ارائه این الگو home.html که باز خواهد شد. پاس در پست به، و آنچه این برابر می کند، به یاد داشته باشید که ما این ارسال مدل، بنابراین ما انتخاب همه نوشته ها، و پس از آن چیز دیگری که شما می توانید انجام دهید، شما می توانید بند که در آن مشخص کنید، شما می توانید یک مشخص سفارش توسط، و بنابراین ما را همه پست که گرفتن انتخاب شده، و پس از آن ما آنها را سفارش توسط post.date.descending. و مشخص خواهد شد، زمانی آنها در واقع بیرون می آیند، یکی از جدید ترین خواهد بود یکی از اولین. و پس از آن، ما که به تصویب قالب home.html، بنابراین اجازه دهید در واقع باز کردن که الگو واقعا سریع، و نگاهی به چگونه است که کار می کند. و این است که HTML بزرگ نیست، اما امیدوارم، ما می توانیم در پایتون تمرکز می کنند. بنابراین یک لینک به اضافه کردن جدید وجود دارد ارسال، و بنابراین این مشخص مسیر در فلاسک که ما تعریف است، که در اینجا ببینید. این پست مسیر جدید است، و ما مشخص است که تا اینجا. و به طوری که یک لینک است که پس از آن خواهد شد به آن مسیر در سرور فلاسک. نکته جالب در این حلقه در اینجا است. بنابراین ما مشخص است که این ارسال پارامتر که به تصویب رسید عملکرد render_template، برای هر پست در پست ها در شی می شود که در گذشت. ما می خواهیم برای چاپ کردن عنوان پست، در H1، و سپس در زیر، ما می خواهیم برای چاپ کردن متن ارسال در یک پاراگراف. و در اینجا، ما در واقع می توانید فراخوانی یک تابع پایتون، بنابراین ما تابع strftime می توانید تماس بگیرید، ST-RF-زمان، و شما می توانید در رشته فرمت عبور که شما می خواهید به چاپ اطلاعات در. پس از آن خیلی خوب که شما می توانید در واقع این تابع پایتون پاسخ از درون است. شما لازم نیست که به انجام قالب بندی در سمت کنترلر، زیرا در واقع، قالب بندی تاریخ چیزی است که می خواهید برای مقابله در نمایش. و همه از این درصد همه چیز فوق العاده مهم نیست. اگر شما نگاه کردن اسناد و مدارک برای تابع تابع strftime در پایتون، همه ی این مشخص همه چیز، اما این چگونه، زمانی که ما به دنبال در صفحه اصلی در اینجا، این فرمت با خوب تاریخ، و آن را مشخص AM یا PM، اما به طور معمول، اگر ما این در اینجا وجود ندارد، شما احتمالا خواهید دریافت برخی از زباله تاریخ است که به نظر نمی آید بسیار خوب است. و سپس ما مشخص post.text، و من می توانم یک زن و شوهر از قرار داده اند پرش به خط در اینجا، فقط برای قرار دادن برخی فضاهای بین هر پست. بنابراین، من فکر می کنم مهمترین چیزی که در این مثال، این است که شما می توانید این حلقه استفاده کنید. و این شبیه به است همه چیز شما می توانید در PHP را انجام دهد. شما می توانید از طریق تکرار، همه چیز می شود به تصویب رسید در، و بنابراین، به جای نیاز به انجام کپی / چسباندن، کپی / چسباندن همه HTML، شما فقط باید به آن نوشتن یک بار، و پس از آن شما می توانید تکرار بیش از همه از پست. و این چیزی است مشترک است که شما می خواهید انجام دهید، هنگامی که شما به بسیاری از داده ها، این است که برای همه چیز در داده های خود، شما می خواهید برای انجام یک چیز مشابه است. و پس از آن، فقط به یاد داشته باشید، که زمانی که شما می خواهید برای چاپ کردن چیزی به صراحت در HTML، شما با استفاده از پرانتز دو در اینجا، اما پس از آن زمانی که می خواهید برای مشخص برخی از اطلاعات در مورد یک وضعیت، و یا در مورد یک حلقه for، شما استفاده از درصد براکت. بنابراین، رفتن به پایتون کد، به طوری که توضیح می دهد آنچه که در اصلی اتفاق می افتد مسیر، زمانی که ما رفتن وجود دارد، فقط نمایش تمام پست، اما پس از درخواست است، چگونه ما در واقع پست ها را به پایگاه داده، که کمی جالب تر است. بنابراین، هنگامی که شما در جدید کلیک کنید ارسال لینک، که ما در اینجا دیدم، آن شما تغییرمسیر به این شکل. و این فقط یک تماس ساده به این عملکرد render_template، که پس از آن عبور در پست جدید در فرم HTML. بنابراین اجازه دهید نگاهی به که. پس این یکی خیلی ساده است. از آن است که یک فرم HTML ساده، که کمی آشنا نگاه کنید، بر اساس فرم در CS50 مالی. و بنابراین، ما در اینجا مشخص، عمل است. و در اینجا، اگر شما در حال کار با پی اچ پی، به طور معمول، خواهد بود چیزی شبیه، create.PHP، اما در اینجا ما در واقع یک مسیر مشخص در سرور فلاسک. و به این ترتیب، مربوط به این مسیر به مسیر ایجاد که ما در اینجا، که ما را به در یک ثانیه است. و بنابراین، ما مشخص است که این یک روش پست، زیرا ما می خواهیم به ارسال این فرم اطلاعات، و معمولا زمانی که شما ارسال اطلاعات از یک فرم، شما ممکن است مایل به استفاده از یک درخواست POST، فقط شما می پایان ندارد تا با این بزرگ، URL گنده. اما شما همچنین می تواند یک درخواست GET استفاده کنید، و با تصویب آن در با متغیر مسیریابی، اما برای قالب، آن را به خوبی به درخواست پست ارسال کنید. و به این ترتیب پس از آن، فقط از شما می خواهم با HTML و PHP را انجام دهید، شما می توانید این ورودی متن را مشخص کنید، و شما می توانید نام آنها را مشخص کنید، و این که نام که گذشت خواهد کرد به شی درخواست در فلاسک. و سپس ما یک ارسال دکمه که می گوید ارسال. و در اینجا، ارسال نام است را فشار دهید، چرا که آن را یک پست وبلاگ است، اما در اینجا، پست روش درخواست است. بنابراین کسانی که همان کلمه اما در واقع نامربوط. آره رفتن به کد پایتون، هنگامی که ما به نام روش ایجاد، متوجه اینجا که شما می توانید در واقع در درون مسیر مشخص روش درخواست که شما می خواهید به پذیرش، و بنابراین در اینجا، من که من را مشخص فقط می خواهید برای قبول یک روش ارسال. بنابراین، اگر من در واقع سعی کنید برای بازدید از صفحه به طور مستقیم، است که با استفاده یک درخواست GET، آن را به من بگویید "روش مجاز نمی باشد." و به این ترتیب، شما باید صفحات، نوع مانند این صفحه ایجاد کنید، که من فقط هستم واقعا با استفاده از به عنوان یک راه را برای فرم به ارسال، شما می توانید مشخص کنید که به شما نمی کنند می خواهم مردم را قادر به رفتن وجود دارد طور مستقیم از طریق یک درخواست GET، و یا اگر شما نمی خواهم، به چند دلیل، یک درخواست POST، شما فقط می تواند مشخص به اینجا برسم، اما در این مثال، ما فقط می خواهید به پست درخواست به بیرون بروید. بنابراین، هنگامی که create_post نامیده می شود، که ما از طریق پست درخواست بازدید از آن، هر زمان که شما به یک خاص است مسیر، این شیء را درخواست وجود دارد، و ما مجبور به واردات درخواست در بالا بسیار، اما این درخواست وجود دارد شی می شود که در گذشت، و شما می توانید داده های فرم دسترسی داشته باشید، که به طور خودکار پر زمانی که شما یک درخواست از یک فرم را ارسال کنید. و پس از آن، چه من فکر می کنم واقعا سرد است، است که جسم فرم را به منتقل می در، فقط یک دیکشنری پایتون است که شامل، اگر شما بنابراین در اینجا access--، اجازه دهید من را بالا بکشد HTML در کنار آن، فقط بنابراین شما می توانید که به عنوان یک مرجع، بله، به طوری که نام که ما در اینجا مشخص برای زمینه های مختلف، به طوری که عنوان و متن، ما پس از آن فقط کسانی که بیش از اینجا استفاده کنید به عنوان شاخص را به داده های فرم. به طوری که فوق العاده راحت است. پس ما post.create پاسخ که ایجاد خواهد شد و به طور خودکار وارد ارسال این پست شی جدید به پایگاه داده. و من فکر می کنم این تابع ایجاد در اینجا یک مثال از چگونگی واقعا سرد است قدرتمند فلاسک و کار با این، چرا که اگر شما انجام عملی در پی اچ پی، شما ممکن است به انجام بسیاری از اعتبار سنجی، شما می توانید به پس از آن ایجاد یک اتصال به پایگاه داده، شما می توانید به پس از آن پرس و جو SQL اجرا، اما در اینجا ما فقط این خوبی داشته باشید post.create، که ما پس از آن می توانید فقط دریافت اطلاعات از از شی درخواست، و سپس آن را تصویب به جدید ارسال که ما در حال ایجاد. و پس از آن، آخرین چیزی که ما خواهید انجام دهید، است به تغییر مسیر تماس کاربر را به صفحه اصلی. و بنابراین ما از این استفاده کنید فلاسک تغییر مسیر تابع. و چیزی است که ما تا به حال ندیده قبل از این، این تابع URL بود. بنابراین URL به شما اجازه می دهد برای عملکرد شما در واقع به نام عبور از یک تابع در کد پایتون، به جای مسیر خاص که آن را در. بنابراین من می تواند به راحتی دارند هدایت یک کاربر برای بریده بریده، که آن را برگشت به خانه، اما با استفاده از URL برای عملکرد خوب است، چرا که اگر شما تغییر محل که در آن همه چیز، بنابراین اجازه دهید بگویم که من تغییر خانه به در / خانه به جای آن، این هنوز هم پس از بازگشت / خانه، زیرا در واقع می رود و به نظر می رسد تا نام تابع، و آن به شما پشت URL برای آن. بنابراین، بر روی فرض که شما به احتمال زیاد تغییر در آن همه چیز هستند، از اسامی توابع. شما می توانید این واقعا استفاده URL خوب برای تابع. و یک چیز به آگاهی از که یک کمی روی حیله و تزویر، این است که شما فکر می کنم شما می توانید فقط پاسخ به تغییر مسیر بر روی URL برای، اما در واقع همه از راه اند به بازگشت برخی از متن و HTML، بنابراین شما در واقع به بازگشت پاسخ تغییر مسیر. در غیر این صورت، شما چیزی نامعتبر در مورد بازگشت یک رشته نیست، چرا که همه از این مجبور به بازگشت HTML شما در واقع می خواهم برای ارائه. و به این ترتیب، هنگامی که شما پاسخ تغییر مسیر، آن را به شما تغییرمسیر به صفحه، اما در واقع می گرداند HTML شما نیاز به اجرای این تغییر مسیر است. بازگشت به صفحه اصلی. بنابراین ما باید این دو دیدگاه متفاوت است. ما نمایش اصلی. یا، من حدس می زنم من باید قالب می گویند. ما باید این دو قالب، قالب اصلی است که نمایش همه پست های ما، و پس ما باید این چیزی که آگهی، و هنگامی که شما با کلیک بر روی پست، از آن می رود به یک مسیر جدید در فلاسک، اما مسیر لزوما یک قالب مربوطه. شما لازم نیست برای دیدن هر چیزی، اما شما می توانید این کار رفتن در پشت صحنه. و سپس شما را هدایت می شوید به صفحه اصلی بازگشت. و قطعا، آن را آسان به کار در برخی از CSS بهتر به قالب و این نگاه خیلی بهتر است، اما همه از منطق اصلی در پایتون وجود دارد. هرگونه سوال در مورد این مثال؟ من می دانم که بسیاری از وجود دارد از چیزهای مختلف در رفتن وجود دارد، بسیاری از چیزهای ندیده بودیم قبل از، اما مثل هر چیز. آره. مخاطبان 1: آیا شما به انجام هر کاری ویژه به مالش داده هایی را که در آینده از فرم؟ من متوجه شما فقط گفت: "ایجاد" EZRA زیگمند: آره، به طوری که در واقع، که یک نقطه واقعا خوب است. بنابراین سوال این بود، شما نیاز به بررسی و مطمئن شوید که که داده معتبر است، و انجام هر نوع از شستشو مطمئن شوید که آن معتبر است، چرا که به عنوان شما در اینجا می توانید ببینید، من انجام این کار نیست. بنابراین اجازه دهید که چه اتفاقی می افتد اگر پست من چیزی خالی است. بنابراین، آن را در واقع فقط یک را ارسال خالی و پر در استاندارد. پس در حقیقت، شما احتمالا می خواهم به چیزی شبیه به شاید مشخص اگر عنوان برابر است با رشته خالی، سپس این کار را نکنید. و یا، فقط آن را انجام دهید اگر عنوان به رشته خالی برابر نیست. پس از آن در واقع به طور خودکار مراقبت از آن را شستشو برای شما، بنابراین شما هنوز هم نیاز به انجام این کار. آره، سوال خوب است. مخاطبان 2: این اسکراب برای تزریق عاقبت؟ میدونی؟ EZRA زیگمند: امیدوارم، چيز كوچك و جزئي ندارد که. من فکر می کنم آن را قطعا خیلی می شود کتابخانه بد اگر آن کار نیست که. من دقیقا نمی دانم. من می خواهم که در نگاه پرس و جو که آن را تولید می شود. من فکر می کنم که اگر من در یک تایپ پست وبلاگ که مرتب سازی بر اساس نگاه مانند حمله تزریق SQL، چیزی شبیه به این، اگر این مانند یک فیلد رمز عبور و یا چیزی، شما ممکن است چیزی شبیه به این انجام. من فکر می کنم که هنوز هم گرفتن به معنای واقعی کلمه نوشته شده، اما من فکر می کنم که چيز كوچك و جزئي را انجام برخی از شستشو داده ها قبل از آن در واقع آن را اجرا می کند. مخاطبان 1: این فیلد متنی است طراحی شده را به متن ساده، درست است؟ EZRA زیگمند: بله، در آن است. آره. بنابراین من فکر می کنم که همه از، پس این رفتار درست، که انجام این کار، اما من فکر می کنم که چيز كوچك و جزئي امیدوارم را انجام نوعی از حفاظت خود قرار دهد. و اگر شما به خواست بررسی کنید که وجود دارد، راه زمانی که شما یک پرس و جو تولید می باشد. بنابراین شما لازم نیست که اجرای آن به طور مستقیم. من می خواهم که به یک در اسناد و مدارک نگاه کنید، اما در واقع شما می توانید مشاهده SQL آن است که تولید، و نگاهی که در آن، و مطمئن شوید که آن در حال فرار است. دلیل دیگری که چرا شما ممکن است می خواهم در SQL نگاه که چيز كوچك و جزئي خروجی است، اگر همه چیز به نظر می رسد که واقعا به آرامی، شما می توانید نگاه کنند و ببینید چه چیزی آن در واقع انجام این کار، به دلیل آن را گاهی اوقات آسان به طور تصادفی اضافه در، راه شما آن را ارسال، شما به طور تصادفی می توانید آن را اول را انتخاب کنید کل پایگاه داده، و پس از انجام برخی از عملیات مرتب سازی بر در آن، زمانی که شما واقعا به معنای انتخاب یک زیر مجموعه. و بنابراین، اگر همه چیز نیست کاملا رفتن حق، آن را خوب به نگاهی درخواست که در واقع گرفتن تولید می شود. آره. مخاطبان 2: هنگامی که شما برای اولین بار شروع، شما در بندر 5000 قرار داده است. EZRA زیگمند: آره. مخاطبان 2: آیا طور پیش فرض با چيز كوچك و جزئي، یا این است که چیزی شما می توانید تغییر دهید؟ EZRA زیگمند: بله، به طوری که پورت پیش فرض با فلاسک است. اگر شما آن را اجرا بدون مشخص هر چیزی، آن را به طور خودکار انجام دهد. به اعتقاد من، من می خواهم که به دو برابر بررسی این اما شما می توانید مشخص کنید که در app.run، من فکر می کنم شما می توانید چیزی شبیه به انجام این کار، پورت = 8080. اجازه دهید که سعی کنید سریع واقعی. آره، بنابراین شما فقط می توانید مشخص کنید پورت = 8080، و آن را اجرا خواهد کرد وجود دارد، که من فکر می کنم، اگر شما می خواهید آن را اجرا کنید در IDE، من این تلاش نیست، اما من فکر می کنم که اگر شما آن را بر روی پورت 8080 زد، شما احتمالا قادر برای دسترسی به سرور، درست مثل شما برای وب سایت است. آره، اما آن را آسان به تغییر است که اگر شما هر گونه مانند پورت حمل و نقل چیزهایی که شما باید انجام دهید. هر گونه سوال دیگر؟ آره؟ مخاطبان 1: بنابراین، من در دیدم خود را مدل های که، همانطور که شما اشاره شد، شما باید برای مشخص کردن پایگاه داده برای هر شیء است. آیا شما اتفاق می افتد به می دانم، می کند که آن را واقعا آسان اگر شما تعداد زیادی از پایگاه های داده SQLite که شما خواهید به استفاده از یک برنامه وب تنها، که شما فقط می توانید مشخص کنید یک دسته از آنهایی که در مدل های مختلف خود را؟ EZRA زیگمند: بله، به من اجازه دهید باز که سریع واقعی. بنابراین، شما می گویید، اگر شما می خواهید به یک دسته از چیزی متفاوت، شاید دوست و دانش آموزان، برای برخی از دلیل، چیزی شبیه به آن؟ آره، بنابراین من فکر می کنم که شما هنوز هم، هر مدل هنوز هم می خواهم که به فقط باید یک پایگاه داده به آن اختصاص داده، اما اگر شما می خواستم به مدل های مختلف که اشیاء پایگاه داده اند مختلف اختصاص داده به آن، شما قطعا می تواند انجام دهد. بنابراین، اگر من ایجاد شده جدید، چیزی شبیه به این، و در حال حاضر این است که یک دانش آموز به نظر می رسد عجیب مانند یک پست وبلاگ، من می توانم مشخص است که پایگاه داده برابر با db_2 در اینجا است. بنابراین، من فکر می کنم که این راه اصلی شما می توانید انجام دهید. خنک. هر گونه سوال دیگر؟ پس فقط به پایان برساند تا کمی کمی، در اینجا برخی منابع، و این اسلاید به صورت آنلاین ارسال شده بنابراین شما در واقع می تواند به این لینک دریافت کنید. بهترین منابع واقعا اسناد و مدارک برای فلاسک و خود را چيز كوچك و جزئي. آنها نوشته شده است در حال واقعا خوب، من فکر می کنم. بنابراین، وب سایت فلاسک است که در اینجا، و آنها یک کلید شروع سریع که آموزش را از طریق راه رفتن مشابه همه چیز را به آنچه من راه می رفت، از طریق، اما اگر شما می خواهید هر نوع بررسی از چیزهایی که من رفتم، و یا شما فکر کردم که من توضیح داد چیزی در راه گیج کننده است، آنها نمونه های مشابه وجود دارد. چيز كوچك و جزئي است اسناد و مدارک، و آنها یک کلید شروع سریع آموزش که می رود بیش از پارامترهای اصلی که شما می خواهید استفاده کنید. بنابراین، چیزهایی که در مورد صحبت با منحصر به فرد، و تعیین پیش فرض، انواع مختلف از زمینه های که شما می توانید استفاده کنید، کسانی که در تمام وجود داشته باشد. همچنین، اگر شما سوال در مورد چيز كوچك و جزئي، و شما آنها را در stackoverflow، کسی که چيز كوچك و جزئي ساخته شده در واقع در می رود و پاسخ این گاهی اوقات. اگر شما یک سوال، امیدوارم او قادر خواهید بود به آن پاسخ، چرا که او نوشت به همه چیز. من فکر می کنم که همه چیز من می خواستم به را پوشش میدهد. با تشکر برای بیرون می آید.