پایتون معرکه است. پایتون حرف ندارد. کار با پایتون یک تیر و چند نشان زدن است. جملههای این چنینی را زیاد شنیده ایم و هر روز هم میشنویم. اما به نظرتان چه چیزی پایتون را آنقدر محبوب و دوست داشتنی کرده است؟ بدون شک یکی از این دلایل فریم ورکها هستند. پایتون فریم ورکهای بسیار متنوعی دارد که در بسیاری از موارد قدرت پایتون را چند برابر میکنند. فریم ورک چهارچوبی برای منسجم نگه داشتن کد، صرفه جوی در زمان و هماهنگی بهتر با اعضای تیم است. استفاده از فریم ورکها کار را برای توسعه دهندگان آسان کرده و فرآیند برنامه نویسی را لذت بخش میکنند. میدانیم که پایتون در توسعه وب هم کاربرد داشته و فریم ورکهای معروفی هم برای این کار دارد، یکی از این فریم ورکها Flask نام دارد و به شما کمک میکند در کوتاهترین زمان برنامههای تحت وب قدرتمندی بسازید. همراه ما باشید تا با هم وارد دنیای شگفت انگیز Flask شده و بفهمیم که فریم ورک Flask چیست و چه کاربردهایی دارد.
قبل از اینکه بررسی کنیم Flask چیست، اجازه بدهید به این سوال پاسخ بدهیم که Flask چه چیزهایی نیست! دانستن این موارد ذهن ما را برای درک بهتر مفاهیم آماده میکند:
Flask یک سرویس سمت سرور نیست
Flask یک وب سرور نیست
Flask زبان برنامه نویسی نیست
Flask بهترین ابزار برای وارد شدن به زبان پایتون نیست
در واقع Flask یک فریم ورک وب سبک میباشد که با زبان پایتون طراحی و نوشته شده است. البته به عبارت دقیقتر فلسک یک میکرو فریم ورک است چون بسیاری از ابزارها و کتابخانههای رایج سایر فریم ورکها را ندارد. مثلا فلسک به طور پیش فرض نمیتواند با دیتابیس کار کند با فرمها را اعتبارسنجی کند و برای این کار باید سراغ کتابخانهها و دیتابیسهای موجود بروید. فلسک به طور رسمی از سال 2010 تحت لایسنس BSD شروع به کار کرد و توسط آقای Armin Ronacher نوشته شده است.
فلسک تا حدی از فریم ورک سیناترا که با روبی نوشته شده تاثیر گرفته است. سیانترا برخلاف بیشتر رقبای خود از مدل MVC پشتیبانی نکرده و به جای آن روی "ساخت وب اپلیکیشن با سرعت بالا" تمرکز دارد. این فریم ورک امکانات پایه ای را برای ساخت یک برنامه تحت وب در اختیارتان میگذارد و اگر نیاز به ماژولهای بیشتر بود میتوانید آنها را به پروژه خود اضافه کنید. همینطور نصب و راه اندازی Flask بسیار آسان بوده و نیاز به نصب ابزار خاصی ندارد. پیشنهاد میکنیم برای آشنایی بیشتر با معماری MVC به مطلب زیر مراجعه کنید:
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 خط کد انجام داده و یک وب سرور ساده بنویسید. در واقع فلسک به شما کمک میکند بدون درگیر شدن با مسائل پیچیده سطح پایین، تمرکز خود را روی توسعه سرویس خود بگذارید. برای شناخت سایر فریم ورکهای پایتون که در طراحی وب استفاده میشوند به مطلب زیر مراجعه کنید:
در حالی که پایتون فریم ورکهای وب دیگری مثل Django، Bottle، Tornado و غیره دارد، این سوال مطرح میشود که چرا باید سراغ فریم ورک 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 داشته باشیم چی؟
من حتی یه مثال واقعی از فلسک هنوز پیدا نکردم. سایتهای فارسی تقریبا ترجمه سایتهای خارجی هستند و خیل هم شفاف توضیح نمیدن
ممنون میشم اگر حداقل لینکی معرفی کنید که بتوینم مثال جامعتری برای فلسک بببینیم و یاد بگیریم
نازنین کریمی مقدم۱۲ آذر ۱۳۹۹، ۰۸:۴۷
درود.
این مقاله معرفی فلسک هست و برای همین ما صرفا یه مقدمه در مورد چیستی فریمورک رفتیم. چشم ما مقالات مربوط به آموزشش رو هم در لیست موضوعات انتشاری ماههای بعد قرار میدیم.
در مورد سوالی که کردید، شما باید خروجی رو در یک متغیر بریزید و اون رو در تمپلیت نمایش بدید. برای دیدن چندین مثال میتونید <a href="https://pythonbasics.org/flask-tutorial-templates/" target="_blank" rel="noopener noreferrer nofollow ugc">این آموزش</a> رو مطالعه کنید.
اگر چند تا def یا تابع داشته باشید، بستگی داره به اینکه میخواید خروجی شون رو در یک صفحه نشون بدید یا در دو صفحه؟ مثلا فرض کنید شما یه تابع چاپ اعداد زوج و یک تابع چاپ اعداد اول رو دارید. اگر بخواید هر دو خروجی رو روی یک صفحه نشون بدید باید از تمپلیت استفاده کنید که لینک نمونه شو بالا فرستادم.
اگر بخواید در دو صفحه مجزا نشون بدید باید @app.route('/') رو بالای تابعتون صدا بزنید و آدرس روت تون رو تغییر بدید.
برای آموزش هم در سایتهای انگلیسی نسبتا نامفهوم توضیح دادند، اما من<a href="https://pythonbasics.org/#Flask-Tutorial" target="_blank" rel="noopener noreferrer nofollow ugc"> این سایت</a> رو توصیه میکنم که حداقل مفاهیم ابتدایی رو به روشنی توضیح داده.
اگر باز خطا داشتید بفرمایید که با کمک هم رفعش کنیم.