میکرو فریم ورک Flask چیست و چه کاربردی دارد؟

پایتون معرکه است. پایتون حرف ندارد. کار با پایتون یک تیر و چند نشان زدن است. جمله‌های این چنینی را زیاد شنیده ایم و هر روز هم می‌شنویم. اما به نظرتان چه چیزی پایتون را آنقدر محبوب و دوست داشتنی کرده است؟ بدون شک یکی از این دلایل فریم ورک‌ها هستند. پایتون فریم ورک‌های بسیار متنوعی دارد که در بسیاری از موارد قدرت پایتون را چند برابر می‌کنند. فریم ورک چهارچوبی برای منسجم نگه داشتن کد، صرفه جوی در زمان و هماهنگی بهتر با اعضای تیم است. استفاده از فریم ورک‌ها کار را برای توسعه دهندگان آسان کرده و فرآیند برنامه نویسی را لذت بخش می‌کنند. می‌دانیم که پایتون در توسعه وب هم کاربرد داشته و فریم ورک‌های معروفی هم برای این کار دارد، یکی از این فریم ورک‌ها Flask نام دارد و به شما کمک می‌کند در کوتاه‌ترین زمان برنامه‌های تحت وب قدرتمندی بسازید. همراه ما باشید تا با هم وارد دنیای شگفت انگیز Flask شده و بفهمیم که فریم ورک Flask چیست و چه کاربردهایی دارد.

Flask چیست؟

میکرو فریم ورک فلسک چیست و چه کاربردی دارد؟

قبل از اینکه بررسی کنیم Flask چیست، اجازه بدهید به این سوال پاسخ بدهیم که Flask چه چیزهایی نیست! دانستن این موارد ذهن ما را برای درک بهتر مفاهیم آماده می‌کند:

  • Flask یک سرویس سمت سرور نیست
  • Flask یک وب سرور نیست
  • Flask زبان برنامه نویسی نیست
  • Flask بهترین ابزار برای وارد شدن به زبان پایتون نیست

در واقع Flask یک فریم ورک وب سبک می‌باشد که با زبان پایتون طراحی و نوشته شده است. البته به عبارت دقیق‌تر فلسک یک میکرو فریم ورک است چون بسیاری از ابزارها و کتابخانه‌های رایج سایر فریم ورک‌ها را ندارد. مثلا فلسک به طور پیش فرض نمی‌تواند با دیتابیس کار کند با فرم‌ها را اعتبارسنجی کند و برای این کار باید سراغ کتابخانه‌ها و دیتابیس‌های موجود بروید. فلسک به طور رسمی از سال 2010 تحت لایسنس BSD شروع به کار کرد و توسط آقای Armin Ronacher نوشته شده است.

فلسک تا حدی از فریم ورک سیناترا که با روبی نوشته شده تاثیر گرفته است. سیانترا برخلاف بیشتر رقبای خود از مدل MVC پشتیبانی نکرده و به جای آن روی “ساخت وب اپلیکیشن با سرعت بالا” تمرکز دارد. این فریم ورک امکانات پایه ای را برای ساخت یک برنامه تحت وب در اختیارتان می‌گذارد و اگر نیاز به ماژول‌های بیشتر بود می‌توانید آنها را به پروژه خود اضافه کنید. همینطور نصب و راه اندازی Flask بسیار آسان بوده و نیاز به نصب ابزار خاصی ندارد. پیشنهاد می‌کنیم برای آشنایی بیشتر با معماری MVC به مطلب زیر مراجعه کنید:

Flask در کجاها استفاده می‌شود؟

Flask چه کاربردهایی دارد؟

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

  • Red Hat
  • Netflix
  • Reddit
  • Pinterest
  • Linkedin
  • Mozila
  • Hotjar
  • Nginx

Flask چطور کار می‌کند؟

ببینید که فریم ورک فلسک چطور کار می‌کند

 با نگاه به تصویر بالا می‌توانید نحوه عملکرد فریم ورک Flask را بهتر درک کنید. برای درک این موضوع که Flask چیست باید بگوییم که فلسک به طور کلی با دو کامپوننت Werkzeug (این کلمه آلمانی بوده و ممکن است تلفظ آن کمی دشوار باشد) و Jinja کار می‌کند. کارهایی مثل مسیریابی، دیباگ کردن، ارتباط با وب سرور و غیره توسط Werkzeug انجام می‌شود. Jinja هم یک template Engine است که داده‌های مختلف را در قالب مورد نظر شما نمایش می‌دهد. هر دو کامپوننت توسط سازنده فلسک یعنی آقای Ronacher ساخته شده و تحت لایسنس BSD منتشر شده اند.

در حقیقت فریم ورک‌ها مجموعه ای از کدهای آماده هستند که کار را برای برنامه نویس آسان می‌کنند. مثلا طراحی یک وب سرور به زبان پایتون که بتواند میزبان سایت‌ها باشد بدون فریم ورک کار دشوار و زمان بری است. اما با فریمورکی مثل Flask می‌توانید این کار را با کمتر از 120 خط کد انجام داده و یک وب سرور ساده بنویسید. در واقع فلسک به شما کمک می‌کند بدون درگیر شدن با مسائل پیچیده سطح پایین، تمرکز خود را روی توسعه سرویس خود بگذارید. برای شناخت سایر فریم ورک‌های پایتون که در طراحی وب استفاده می‌شوند به مطلب زیر مراجعه کنید:

چرا باید از Flask استفاده کنیم؟

در حالی که پایتون فریم ورک‌های وب دیگری مثل Django، Bottle، Tornado و غیره دارد، این سوال مطرح می‌شود که چرا باید سراغ فریم ورک flask برویم؟ قبل از جواب دادن به این سوال باید این نکته را یادآور شویم که هیچکدام از فریم ورک‌ها از دیگری بالاتر نیست و باید با توجه به شرایط پروژه و نیازهای خود بهترین انتخاب را داشته باشیم. در واقع هر فریم ورک نقاط ضعف و قوت خودش را دارد. بعضی از نقاط قوت فلسک که برنامه نویسان را به استفاده از آن ترغیب می‌کنند عبارتند از:

  • یادگیری Flask بسیار آسان است. اگر کمی با زبان پایتون آشنا باشید با دیدن کدهای فلسک می‌توانید سر از کار آن دربیارید.
  • هنگام کار با Flask دست شما باز است که کارها را مطابق میل خودتان پیش ببرید. یعنی این فریم ورک کاملا انعطاف پذیر است.
  • یک جامعه قوی پشت زبان پایتون و فریم ورک فلسک قرار داد که می‌توانید هنگام به وجود آمدن مشکل روی کمک آنها حساب باز کنید.

ساخت یک برنامه تحت وب ساده با Flask

نوشتن یک برنامه بسیار ساده با Flask

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

from flask import Flask

سپس یک Object به متغیری با نام app اضافه می‌کنیم. در واقع هر برنامه در فلسک باید یک نمونه یا Instance ایجاد کند تا وب سرویس کلیه درخواست‌ها را با پروتکل WSGI به Object مورد نظر پاس بدهد.

from flask import Flask
app = Flask(__name__) #app is the name of the object here

حالا دایرکتوری اصلی (Root) خودمان را به یک تابع فراخوانی وصل می‌کنیم:

        from flask import Flask
        app = Flask(__name__)
        @app.route('/')
        def home():
          return "<h1> Hello World </h1>"

در خط 5 ما یک Route یا URL تعریف کرده ایم. زمانی که کاربر درخواست آن صفحه خاص را داشته باشد سرور ما تابع مربوطه را فراخوانی می‌کند (در این مثال home() ) در واقع یکی از مزیت‌های استفاده از فریم ورک را اینجا به چشم خود می‌بینیم، چون بدون فریم ورک همین کار ساده نیاز به کدهای بسیار بیشتر و در نتیجه صرف زمان بیشتر داشت. در آخر کد زیر را هم به پروژه خود اضافه می‌کنیم:

        from flask import Flask
        app = Flask(__name__)
        @app.route('/')
        def home():
          return "<h1> Hello World </h1>"
        if __name__ =="__main__":
          app.run(debug=True,port=8080)

این تکه کد آخر برنامه ما را کامل می‌کند. دستور آخر وب سرور را راه انداخته و برنامه ما اجرا می‌شود. اگر مراحل بالا را درست انجام داده باشید با چنین تصویری مواجه شده و پیغام Hello World را روی صفحه مشاهده خواهید کرد. تبریک می‌گویم. اولین برنامه خود را با Flask طراحی و اجرا کردید.

نتیجه گیری

در این مطلب بررسی کردیم که میکرو فریم ورک Flask چیست و چه کاربردی دارد. همینطور درباره پروژه‌های موفقی که با آن ساخته شده اند صحبت کردیم. در آخر هم یک تمرین کوچک انجام داده و پیغام قدیمی و معروف “سلام دنیا” را روی صفحه نمایش چاپ کردیم. فلسک با اینکه بسیار مینیمال و کوچک است اما امکانات پایه ای که یک سایت نیاز دارد را در اختیارتان قرار می‌دهد. این میکرو فریم ورک یک روش سریع و قابل اطمینان برای طراحی سایت با پایتون است. یادگیری آن بسیار آسان بوده و پیچیدگی بسیاری از فریم ورک‌ها را ندارد. اگر با این میکرو فریم ورک کار کرده اید خوشحال می‌شویم تجربیات خود را با ما و کاربران سون لرن به اشتراک بگذارید.

 
ارسال دیدگاه
ما همه سوالات و دیدگاه ها رو می خونیم و پاسخ میدیم
۵ دیدگاه
قدرت ۱۲ مرداد ۱۴۰۰، ۱۷:۰۵
قدرت در دستان ماست
Power is in our hands
Le pouvoir est entre nos mains
هر چه پیش اید خوش اید ما که خندان میرویم.
امیرحسین ۱۲ آذر ۱۳۹۹، ۱۰:۰۵
سلام. ممنون از اموزش های خوبتون . کار ارزشمندیه که اموزش های رایگان قرار می دید. درخصوص فسلک این توضیحات خیلی مقدماتیه. فقط میشه همون عبارت رو وری یک ادرس نمایش داد. هیچ تصوری از اینکه چه کارای میشه با فلسک کرد نداریم! من یه کد نوشتم و میخوام خروجی کد رو بفرستم روی سرور. با این کد ساده hello word واقعا نمیشه فهمید چطور باید خروجی کدم رو ارسال کنم؟ هرچی میزنم خطا میده. حتی نمیدونم چطور ورودی بدم. اگر چندتا def داشته باشیم چی؟
من حتی یه مثال واقعی از فلسک هنوز پیدا نکردم. سایتهای فارسی تقریبا ترجمه سایتهای خارجی هستند و خیل هم شفاف توضیح نمیدن
ممنون میشم اگر حداقل لینکی معرفی کنید که بتوینم مثال جامع تری برای فلسک بببینیم و یاد بگیریم
نازنین کریمی مقدم ۱۲ آذر ۱۳۹۹، ۱۲:۱۷
درود.
این مقاله معرفی فلسک هست و برای همین ما صرفا یه مقدمه در مورد چیستی فریمورک رفتیم. چشم ما مقالات مربوط به آموزشش رو هم در لیست موضوعات انتشاری ماه های بعد قرار میدیم.
در مورد سوالی که کردید، شما باید خروجی رو در یک متغیر بریزید و اون رو در تمپلیت نمایش بدید. برای دیدن چندین مثال میتونید این آموزش رو مطالعه کنید.
اگر چند تا def یا تابع داشته باشید، بستگی داره به اینکه میخواید خروجی شون رو در یک صفحه نشون بدید یا در دو صفحه؟ مثلا فرض کنید شما یه تابع چاپ اعداد زوج و یک تابع چاپ اعداد اول رو دارید. اگر بخواید هر دو خروجی رو روی یک صفحه نشون بدید باید از تمپلیت استفاده کنید که لینک نمونه شو بالا فرستادم.
اگر بخواید در دو صفحه مجزا نشون بدید باید @app.route('/') رو بالای تابعتون صدا بزنید و آدرس روت تون رو تغییر بدید.

برای آموزش هم در سایتهای انگلیسی نسبتا نامفهوم توضیح دادند، اما من این سایت رو توصیه میکنم که حداقل مفاهیم ابتدایی رو به روشنی توضیح داده.
اگر باز خطا داشتید بفرمایید که با کمک هم رفعش کنیم.
مستر تینکستون ۲۱ شهریور ۱۳۹۹، ۱۰:۱۹
ببخشید میشه بصورت ویدیو توضیح بدین
نازنین کریمی مقدم ۲۲ شهریور ۱۳۹۹، ۱۲:۳۳
سلام. پیشنهاد شما در تیم سون لرن بررسی میشه و در صورت امکان قرار خواهد گرفت.
ممنون که با ما همراه هستید.