آموزش فلسک

آنچه در این صفحه می خوانید:

معرفی فلسک (Flask)

Flask یک میکرو فریمورک وب است که در پایتون نوشته شده است. به دلیل اینکه نیازی به ابزار یا کتابخانه خاصی ندارد، به عنوان میکرو ساختار طبقه بندی می شود. این فریمورک لایه انتزاع بانک اطلاعاتی، اعتبار سنجی فرم یا هر مؤلفه دیگری ندارد و در آن کتابخانه های شخص ثالث از قبل عملکردهای متفاوتی را ارائه می دهند. با این حال، Flask از پسوندهایی پشتیبانی می کند که می توانند ویژگی هایی را به برنامه را اضافه کنند، گویی که در خود Flask پیاده سازی شده اند. افزونه هایی برای نقشه برداری شی - رابطه ای، اعتبار سنجی فرم، رسیدگی به بارگذاری، انواع فناوری های تأیید هویت باز و چندین ابزار مرتبط با فریمورک وجود دارد. برنامه های افزودنی بسیار بیشتر از برنامه اصلی فلسک به روز می شوند. برنامه هایی که از فریمورک Flask استفاده می کنند شامل Pinterest ،LinkedIn و صفحه وب انجمن برای خود Flask است.

فلسک بر اساس ابزار Werkzeug ،WSGI و موتور الگو Jinja2 می باشد که هر دو پروژه Pocco هستند. یادگیری Flask برای افراد مبتدی آسان است، زیرا به کدنویسی کمی برای راه اندازی و اجرای برنامه لازم است. Armin Ronacher در سال 2010 این فریمورک را طراحی و منتشر کرد. Flask از فریمورک سیناترا روبی الهام گرفته شده که تحت مجوز BSD می باشد. Flask برای استفاده و گسترش آسان طراحی شده است. ایده پشت Flask این ایده است که پایه محکم برای پیچیدگی های مختلف برنامه های کاربردی باشد. از این رو شما آزاد هستید تا افزونه ی مورد نیازتان را ایجاد کنید. همچنین شما می توانید ماژول های خود را بسازید. Flask برای انواع پروژه ها عالی است و برای نمونه سازی اولیه بسیار مناسب است.

"میکرو" به چه معنی است؟

"Micro" به این معنا نیست که کل برنامه وب شما باید در فایل پایتون قرار بگیرد (اگرچه مطمئناً می تواند) و همچنین به معنای عدم وجود عملکرد در فلسک در نیست. "میکرو" در میکرو ساختار به این معنی است که فلسک قصد دارد هسته را ساده و قابل توسعه نگه دارد. فلسک تصمیمات زیادی را برای شما اتخاذ نمی کند، از جمله پایگاه داده که از آن استفاده می کنید. همه چیز به شما بستگی دارد، به طوری که فلسک می تواند همه چیز مورد نیاز شما باشد. فلسک ممکن است "میکرو" باشد، اما برای نیازهای مختلف آماده استفاده است.

تاریخچه فلسک (Flask)

فلسک توسط آرمین روناچر از پوکو، گروه بین المللی از علاقه مندان به پایتون در سال 2004 ایجاد شده است. طبق گفته روناچر، این ایده در ابتدا شوخی آوریل بود که به اندازه کافی محبوب بود تا بتواند کاربرد جدی داشته باشد. هنگامی که روناشر و جورج براندل سیستم بولتن اعلان شده را در پایتون نوشتند، پروژه های پوکو Werkzeug و Jinja توسعه یافتند. علیرغم عدم انتشار عمده، فلسک در بین علاقه مندان به پایتون رواج پیدا کرده است. از اواسط سال 2016، این محبوب ترین فریمورک توسعه وب Python در GitHub بود و به محبوب ترین فریمورک وب در Python Developers Survey 2018 رای داده شد.

ویژگی های فلسک (Flask)

فلسک به گونه ای طراحی شده است که به راحتی قابل استفاده و گسترش باشد. ایده Flask ایجاد پایه محکم برای برنامه های وب با پیچیدگی های مختلف است. از آن به بعد شما می توانید برنامه های افزودنی را که فکر می کنید به آنها نیاز دارید نصب کنید. همچنین شما قادر به ساخت ماژول های خود هستید. فلسک برای انواع پروژه عالی است. به خصوص برای نمونه سازی خوب است. فلسک به دو کتابخانه خارجی بستگی دارد: موتور الگو Jinja2 و ابزار Werkzeug WSGI.

هنوز این سؤال باقی مانده است که اگر از "فلسک" به عنوان فریمورک برنامه وب خود استفاده کنیم، اگر Django ،Pyramid بسیار قدرتمند داشته باشیم و megaframework Turbogears را فراموش نکنیم؟ این ها فریمورک های برتر وب پایتون هستند، اما ویژگی های خارج از باکس فلسک که بسیار چشمگیر است، عبارتند از:

  •  اشکال زدایی سریع
  • پشتیبانی یکپارچه از تست واحد
  • قابلیت ساخت سرویس مبتنی بر RESTful
  • استفاده از Jinja2 برای templating
  • پشتیبانی از کوکی های امن
  • پشتیبانی از یونیکد
  • طراحی سبک و ماژولار
  • تبدیل آسان به فریمورک وب
  • انعطاف پذیری بالا
  • چندسکویی

علاوه بر این، فلسک کنترل بیشتری در مرحله توسعه پروژه خود به شما می دهد. این اصول مینیمالیسم را دنبال می کند و به شما اجازه می دهد تصمیم بگیرید که چگونه برنامه خود را بسازید.

  • فلسک دارای طراحی سبک و مدولار است، بنابراین می توان آن را با چند افزونه به فریمورک وب مورد نیاز خود تبدیل کرد.
  • ORM-agnostic: می توانید ORM مورد علاقه خود را به عنوان مثال SQLAlchemy وصل کنید.
  • پایه بنیادی API به زیبایی شکل و منسجم است.
  • اسناد فلسک جامع، پر از مثال ها و ساختارمند است. شما حتی می توانید برخی از برنامه های نمونه را امتحان کنید.
  • استقرار فلسک در تولید بسیار آسان است (فلسک 100٪ با WSGI 1.0 سازگار است)
  • قابلیت مدیریت درخواست HTTP
  • پیکربندی حتی انعطاف پذیرتر از جنگو است و برای هر نیاز تولید، راه حل های زیادی به شما می دهد.

به طور خلاصه، Flask یکی از جزیی ترین و غنی ترین ویژگی های میکرو موجود است. فلسک هنوز جوان است و دارای جامعه پر رونق، پسوندهای درجه یک و API ظریف است. فلسک با تمامی مزایای الگو های سریع، ویژگی های WSGI قوی، قابلیت تست کامل واحد در برنامه وب و سطح کتابخانه، مستندات گسترده همراه است. بنابراین دفعه بعد که شما در حال شروع پروژه جدید هستید که به برخی از ویژگی های خوب و تعداد زیادی پسوند نیاز دارید، مطمئناً Flask را بررسی کنید.

مقایسه فلسک با جنگو

توسعه دهنده وب می تواند ضمن استفاده از پایتون به عنوان زبان های برنامه نویسی سمت سرور، از طیف گسترده ای از فریمورک های وب انتخاب کند. او می تواند با بهره گیری از تعدادی از ویژگی ها و ابزارهای مستحکم، از فریمورک های وب پایتون برای تسریع در توسعه برنامه های بزرگ و پیچیده وب استفاده کند. به همین ترتیب، او همچنین می تواند فریمورک های وب میکرو و سبک وزن پایتون را برای ساختن برنامه های وب ساده و بدون قرار دادن وقت و تلاش اضافی، انتخاب کند.

جنگو و فلسک در بین برنامه نویسان پایتون بسیار محبوب هستند. جنگو فریمورک وب پشته کامل برای پایتون است، در حالی که فلسک فریمورک وب سبک پایتون سبک و گسترده است. جنگو بر اساس رویکرد شامل باتری توسعه یافته است. این مزیت برنامه نویسان را قادر می سازد بدون استفاده از ابزارها و كتابخانه های شخص ثالث، وظایف مشترک توسعه وب را انجام دهند. جنگو فاقد برخی از ویژگی های قوی ارائه شده توسط پایتون است.

از این رو، برای توسعه دهندگان وب ضروری است که تفاوت های عمده بین Flask و Django را درک کنند.

نوع فریمورک وب

همانطور که قبلاً نیز اشاره شد، جنگو فریمورک وب پایتون فول استک است. همچنین، آن را بر اساس رویکرد batteries-included استفاده شده است. batteries موجود در جنگو انجام وظایف مشترک توسعه وب مانند تأیید اعتبار کاربر، مسیریابی URL و مهاجرت شمای پایگاه داده را برای توسعه دهندگان Django آسانتر می کند. همچنین، جنگو با تهیه موتور الگو داخلی، سیستم ORM و ابزار bootstrapping، توسعه برنامه وب سفارشی را تسریع می کند. از طرف دیگر، Flask فریمورک وب ساده، سبک و مینیمالیست است. فاقد برخی از ویژگی های داخلی ارائه شده توسط جنگو است. اما به توسعه دهندگان کمک می کند تا هسته اصلی برنامه وب را ساده و گسترده نگه دارند.

رابط کاربری مدیر تابعی

بر خلاف Flask ،Django باعث می شود تا کاربران بتوانند وظایف معمول مدیریت پروژه را با ارائه فریمورک آماده برای استفاده مدیریت، انجام دهند. علاوه بر این، ماژول مدیر عملکردی را بطور خودکار بر اساس مدل های پروژه تولید می کند. توسعه دهندگان حتی گزینه ای برای سفارشی کردن رابط مدیر برای دیدار با نیازهای خاص تجاری دارند. آنها حتی می توانند از رابط کاربری مدیر تابعی برای ساده کردن مدیریت محتوای وب سایت و مدیریت کاربر استفاده کنند.

موتور الگو

همانطور که قبلاً اشاره شد، فلسک بر اساس موتور الگو Jinja2 ساخته شده است. Jinja2 به عنوان موتور الگو کاملاً برجسته برای پایتون، از سیستم الگوی Django نیز الهام گرفته است. این برنامه نویسان را قادر می سازد با بهره گیری از محیط اجرای یکپارچه و نوشتن الگو ها با زبان رسا، توسعه برنامه های وب پویا را تسریع کنند. Django مجهز به موتور الگو داخلی است که به توسعه دهندگان امکان می دهد بدون نیاز به وقت و تلاش اضافی، لایه نمای کاربر برنامه وب را تعریف کنند. حتی به توسعه دهندگان این امکان را می دهد تا با نوشتن الگو ها به زبان الگو جنگو (DTL)، رابط کاربری سفارشی را تسریع کنند.

طرح پروژه

فلسک به توسعه دهندگان هر پروژه به عنوان برنامه واحد نیاز دارد. اما توسعه دهندگان گزینه اضافه کردن چندین مدل و نمایش به همان برنامه را دارند. از طرف دیگر، جنگو به توسعه دهندگان اجازه می دهد تا پروژه را به چندین برنامه تقسیم کنند. از این رو نوشتن برنامه های فردی برای برنامه نویسان آسان تر می شود و با یکپارچه سازی برنامه ها در پروژه، عملکردی به برنامه وب اضافه می شود. برنامه های کوچک بیشتر به توسعه دهندگان کمک می کند تا برنامه های وب را که در پایتون نوشته شده است گسترش و نگهداری کنند.

پشتیبانی پایگاه داده

جنگو به توسعه دهندگان اجازه می دهد تا از سیستم قوی ORM استفاده کنند. توسعه دهندگان می توانند از سیستم ORM برای کار با بانک های اطلاعاتی پرکاربرد مانند مای اس کیو ال، اوراکل، SQLite و پستگرس کیوال استفاده کنند. همچنین، سیستم ORM به توسعه دهندگان امکان می دهد عملیات بدون پایگاه داده را بدون نوشتن نمایش داده های SQL طولانی انجام دهند. برخلاف جنگو، فلسک سیستم ORM داخلی را ارائه نمی دهد. به توسعه دهندگان نیاز دارد تا با بانک های اطلاعاتی کار کنند و عملیات پایگاه داده را از طریق SQLAlchemy انجام دهند. توسعه دهندگان Python می توانند با استفاده از SQLAlchemy به عنوان ابزار SQL و سیستم ORM برای Python با پایگاه داده ها کار کنند. همچنین، آنها می توانند با نوشتن و اجرای نمایش داده شدگان SQL، نمایش داده های متداول پایگاه داده را انجام دهند.

موارد استفاده و کاربرد

در حال حاضر هر دو Flask و Django توسط چندین وب سایت پر ترافیک مورد استفاده قرار می گیرند. اما آمار استفاده ارسال شده در وب سایت های مختلف نشان می دهد که جنگو محبوب تر از Flask است. در اینجا می توانید برخی از بهترین وب سایت های توسعه یافته با استفاده از Django را پیدا کنید. توسعه دهندگان می توانند از ویژگی های قوی ارائه شده توسط Django برای ساخت و استقرار سریع برنامه های وب پیچیده استفاده کنند. در عین حال، آنها می توانند از Flask برای تسریع در توسعه وب سایت های ساده با محتوای استاتیک، استفاده کنند. با این حال، توسعه دهندگان هنوز گزینه ای برای گسترش و سفارشی سازی Flask با توجه به شرایط دقیق پروژه دارند.

در کل، هر دو Flask و Django از فریمورک های وب منبع باز برای Python استفاده می کنند. Django فریمورک وب کامل است، در حالی که Flask میکرو فریمورک وب است. ویژگی های ارائه شده توسط جنگو به توسعه دهندگان کمک می کند تا برنامه های بزرگ و پیچیده وب را بسازند. از طرف دیگر، فلسک با فراهم کردن قابلیت های مورد نیاز، پیشرفت برنامه های ساده وب را تسریع می کند. از این رو، توسعه دهندگان باید ضمن مقایسه Flask و Django، نیازهای پروژه های فردی را به خاطر بسپارند.

مثال های فلسک (Flask)

کد زیر برنامه وب ساده است که "!Hello World" را هنگام بازدید نشان می دهد:

from flask import Flask
app = Flask(__name__)

@app.route("/") def hello(): return "Hello World!"

if __name__ == "__main__": app.run()

نظرتون درباره این نوشته چیه؟ عالیه بد نیست خوب نبود