فلسک یک فریمورک وب مبتنی بر پایتون می باشد که برای ایجاد سریع و ساده وبسرور توسعه دادهشده است. این بسته نرم افزار را یک میکروفریمورک مینامند زیرا فریم ورک را ساده نگه داشته و طراحی فلسک و فریمورک کوچک بوده و بسیاری از پیشفرض ها برای برنامهنویسان قائل نمی باشد. فلسک رایگان و متنباز است و با مجوز آزاد BSD منتشر شده است.
کار با فلسک به قدری ساده می باشد که اگر کمی با زبان پایتون آشنا باشید با دیدن اولین کدهای flask با ساختار این فریمورک آشنا میشوید. فریمورک flask با همهی سادگی خود بسیار قدرتمند و کارا می باشد. کوچک بودن فریمورک با ضعیف بودن آن برابر نیست و امکانات فریمورکهایی مثل جنگو و ریلز را با اندکی جستجو به دست میدهد. به عنوان مثال از سرویسهای بزرگی که از فلسک استفاده میکنند میتوان از Pinterest و Linkedin نام برد که به مناسب بودن flask برای توسعهی سرویسهای اینترنتی اشاره می کنند.
پایههای قدرتمند فلسک را دو کتابخانه اساسی ساختهاند؛ به عنوان واسط وبسرور ( WSGI ) از کتابخانهی werkzeug و برای تمپلیتانجین از Jinja2 استفاده کرده اند که هردو کتابخانه توسط تیم توسعه ی فلسک توسعه یافته اند.
بطور پیشفرض برای کار با دیتابیسها، اعتبارسنجی فرم ها و کاربران و از این دست کارها ابزار مشخصی در فلسک تعریف نشده و میتوان از ابزارهای شخص ثالث (Third party applications) که برای آن توسعه داده شدهاند ، استفاده کرد.
معماری فریم ورک فلسک:
نصب
آماده کردن محیط مجازی
برای نصب و راهاندازی پروژهها ، بهتر است یک محیط مجازی توسعه ساخت تا در حین کار و حتی یادگیری، مفسر عمومی و پکیجهای عمومی سیستم دچار تغییر و کانفلیکت نشوند. محیطهای توسعهمجازی یک کپی از مفسر پایتون را بصورت خصوصی در دایرکتوری پروژه شما ایجاد کرده و بعد از فعال کردن این مفسر پکیجها هم بصورت خصوصی در دایرکتوری پروژه نصب میشوند.
نصب flask
متداول ترین روش نصب بستههای پایتون استفاده از مدیر بستهی pip می باشد که با استفاده از آن flask با دستور زیر نصب میشود
۱ |
pip install flask |
ساختار برنامهها در flask
فلسک ، هیچ محدودیتی درمورد ساختاربندی فایلهای پروژه برای شما ایجاد نمیکند و میتوانید ساختار خودتان را ساخته یا از رولهای متداول جامعه ی فلسک استفاده کنید.
ساخت برنامه های flask
شروع سریع
کدهای یک اپلیکیشن سادهی فلسک که عبارت Hello World را در یک صفحه ی وب خروجی می دهد ، بصورت زیر می باشد:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ |
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run() |
این برنامه از چند بخش تشکیل شده است : فراخوانی و تعریف فلسک ، تعریف مسیرها، اجرای فلسک.
فراخوانی و تعریف flask
برای ساخت برنامههای فلسک نیاز است به لود فلسک در فایل پایتون می باشد. سپس یک نمونه (instance) از Flask بسازید یعنی :
۱ |
from flask import Flask app = Flask(__name__)</> |
تنها آرگومان مورد نیاز برای کانستراکتور فلسک نام ماژول یا پکیج main می باشد که برای بیشتر برنامه ها __name__
در پایتون مقدار درستی است.
تعریف مسیرها
مسیرها همان آدرسهای (url های) مختلفی می باشند که عملیاتهای متفاوتی بر اساس آنها انجام میشود. مثلا site.domain مسیر ریشه و site.domain/subdomain یک مسیر دیگر در همان سایت تعریف میکند. در کد این مثال ، مسیر بصورت زیر تعریف شده بود :
۱ ۲ ۳ |
@app.route('/') def hello_world(): return 'Hello World!' |
در اینجا یک دکوریتور نوع ()route از app (که در قسمت قبل ساختیم) برای تابع Hello world تعریف میکند و آدرس مسیر ('/'
) را به آن میفرستد. مسیرها در فلسک ، اساس ساخت برنامهها می باشند. با استفاده از مسیرها میتوانید به سادگی بخشهای مختلف وباپلیکیشن خود را ساخته و مدیریت کنید.
اجرای flask
در آخر پایتون ، فلسک را باید روی یک وبسرور اجرا کند که دستورات آن بصورت زیر می باشد:
۱ ۲ |
if __name__ == '__main__': app.run() |
این کد را در یک فایل مانند app.py ذخیره کرده و در خط فرمان با دستور python app.py اجرا کنید. خروجی روی ترمینال چیزی شبیه این است :
۱ |
* Running on http://۱۲۷.۰.۰.۱:۵۰۰۰/ (Press CTRL+C to quit) |
که آدرس ۱۲۷.۰.۰.۱:۵۰۰۰ را که در خروجی مشخص شده است اگر در مرورگر خود امتحان کنید روی صفحه عبارت Hello World نمایان میشود. فلسک به صورت پیشفرض پورت ۵۰۰۰ را برای اجرا در نظر میگیرد.
تابع run میتواند پارامتر ای با عنوان host داشته باشد که مشخص میکند سرور برروی چه آدرسی اجرا شود، همچنین توسط پارامتر port میتوان پورتی که سرور روی آن اجرا شود را مشخص کرد و توسط پارامتر debug و دادن مقدار true به آن میتوان مشخص کرد که لاگها و گزارشات مربوط به اشکال یابی برنامه نیز چاپ شوند.
۱ |
app.run(host='۰.۰.۰.۰', port=۸۰۸۰, debug=True) |
برای اینکه سرور از طریق کامپیوترهای متصل به همین شبکه قابل مشاهده و استفاده باشد ، پارامتر host را مقدار ۰.۰.۰.۰ قرار دهید.
با پلاتین همراه باشد.