Flask یک فریم ورک سبک و انعطافپذیر برای توسعه وب با پایتون است. این فریم ورک به این دلیل طراحی شده که شروع کار با توسعه وب را سریع و آسان کند و در عین حال همچنان قدرتمند باشد تا بتوانید برنامههای پیچیده وب را با آن ایجاد کنید.
فریم ورک فلسک چیست؟
Flask یک API از پایتون است که به شما امکان ایجاد برنامههای تحت وب را میدهد. این فریم ورک توسط Armin Ronacher توسعه داده شده است.
فریم ورک فلسک در مقایسه با Django سادهتر بوده و یادگیری آن راحتتر می باشد زیرا برای پیادهسازی یک برنامه ساده نیاز به کد پایه کمتری دارد. Flask مبتنی بر WSGI (Web Server Gateway Interface) و موتور قالب Jinja2 است.
تصویر(1)
مزایای فریم ورک فلسک:
- سبک بودن: Flask یک فریم ورک بکاند سبک با حداقل وابستگیها است.
- یادگیری آسان: API ساده و قابل درک این فریم ورک، یادگیری و استفاده از آن را برای مبتدیان آسان میکند.
- انعطافپذیری: این فریم ورک به شما امکان میدهد تا آن را برای رفع نیازهای خود به راحتی سفارشی سازی کرده و توسعه دهید.
- سازگاری با هر دیتابیس: از دیتابیسهای SQL و NoSQL پشتیبانی میکند و همچنین با هر تکنولوژی فرانتاند مانند React یا Angular قابل استفاده است.
- مناسب پروژههای کوچک تا متوسط: برای پروژههایی که نیازی به پیچیدگی فریم ورکهای بزرگ ندارند، ایدهآل است.
شروع به کار با فریم ورک فلسک
برای نصب فریم ورک فلسک به پایتون 3 نیاز دارید. میتوانید Flask را از بسته پایتون نصب نموده و کد زیر را در هر محیط IDE پایتون اجرا کنید:
تصویر(2)
آدرس ' / ' به تابع ()hello متصل شده است.
وقتی صفحه اصلی وب سرور را باز کنید، خروجی این تابع نمایش داده میشود.
برای اعمال تغییرات در کد، نیاز به راهاندازی مجدد سرور دارید. جهت رفع این مشکل میتوانید از حالت debug استفاده کنید:
تصویر(3)
ایجاد مسیرها (Routes) در فریم ورک فلسک
مسیرها اجازه میدهند تا کاربران URL ها را به خاطر بسپارند و مستقیم به صفحات دسترسی پیدا کنند. این کار با استفاده از دکوراتور ()route انجام میشود:
تصویر(4)
با بازدید از آدرس http://localhost:5000/hello، خروجی تابع ()hello_world در مرورگر نمایش داده میشود.
همچنین میتوانید از روش زیر برای اتصال URL به یک تابع استفاده کنید:
تصویر(5)
متغیرها در فریم ورک Flask
میتوانید از متغیرها برای ایجاد URL های پویا استفاده کنید. مثال زیر را مشاهده نمایید:
تصویر(6)
اگر آدرس http://localhost:5000/hello/example را باز کنید، خروجی زیر را خواهید دید:
Hello example!
انواع داده در URL های متغیر فریم ورک Flask
Flask به شما امکان میدهد علاوه بر رشتهها (string)، از انواع دادههای دیگر مانند int، float و path در URL استفاده کنید. به مثال زیر توجه نمایید:
تصویر(7)
خروجی:
- اگر آدرس http://localhost:5000/blog/555 باز شود:
Blog Number 555
- اگر آدرس http://localhost:5000/rev/1.1 باز شود:
Revision Number: 1.100000
ساخت URL به صورت پویا در فریم ورک فلسک
برای ایجاد URL های پویا، از تابع ()url_for استفاده میشود که نام تابع را به عنوان اولین آرگومان میگیرد. همچنین میتواند آرگومانهای کلیدی بیشتری دریافت کند.
تصویر(8)
ورودی و خروجی:
- با وارد کردن آدرس http://localhost:5000/user/admin، خروجی زیر نمایش داده میشود:
Hello Admin
- با وارد کردن آدرس http://localhost:5000/user/ABC، خروجی زیر نمایش داده میشود:
Hello ABC as Guest
متدهای HTTP در فریم ورک Flask
Flask پروتکلهای مختلف HTTP را برای بازیابی دادهها از URL پشتیبانی میکند. این پروتکلها شامل موارد زیر است:
متد |
توضیحات |
GET |
ارسال داده بدون رمزگذاری به سرور. |
POST |
ارسال دادههای فرم به سرور؛ دادهها توسط سرور کش نمیشوند. |
HEAD |
فقط هدر پاسخ را بدون بدنه (body) ارسال میکند. |
PUT |
جایگزین کردن داده موجود در منبع مشخص شده با داده جدید. |
DELETE |
حذف منبع مشخص شده. |
جدول(1)
ارائه فایلهای استاتیک در فریم ورک فلسک
برای نمایش فایلهای استاتیک مانند CSS یا JavaScript، میتوانید از پوشه static در پروژه خود استفاده کنید. مثال زیر نحوه استفاده از فایل استاتیک را نشان میدهد:
تصویر(9)
فایل HTML یا index.html:
تصویر(10)
فایل جاوا اسکریپت (hello.js):
تصویر(11)
در اینجا:
- فایل HTML در پوشه templates قرار دارد.
- فایل JavaScript در پوشه static ذخیره شده است.
کار با کوکیها در Flask
کوکی نوعی فایل متنی است که روی رایانه کلاینت ذخیره میشود و هدف آن نگهداری و ردیابی دادههای استفاده شده توسط مشتری است تا تجربه کاربری و آمار صفحه وب بهبود یابد.
شیء درخواست (Request object) شامل ویژگیهای کوکی است. این شیء یک دیکشنری از تمام متغیرهای کوکی و مقادیر مربوط به آنها می باشد. همچنین زمان انقضای خود را نیز شامل میشود. در فریم ورک فلسک، کوکیها روی شیء پاسخ (response object) تنظیم میشوند. در تصویر زیر، مثالی از آن آورده شده است:
تصویر(12)
فایل HTML یا index.html:
تصویر(13)
فایل HTML یا cookie.html:
تصویر(14)
برنامه فوق را اجرا کنید و به لینک زیر در مرورگر بروید:
http://localhost:5000/
فرم روی آدرس setcookie/ تنظیم شده و تابع set شامل یک کوکی به نام userID است که در صفحه وب دیگری نمایش داده میشود. فایل cookie.html شامل یک لینک به تابع نمایشی دیگری با نام ()getcookie است که مقدار کوکی را در مرورگر نمایش میدهد.
سشنها (Sessions) در فریم ورک فلسک
در سشنها، دادهها سمت سرور ذخیره میشوند و تنها در مدت زمانی که کاربر وارد سیستم شده است، نگهداری خواهند شد. این دادهها به صورت موقت در پوشهای روی سرور ذخیره میشوند. هر کاربر یک شناسه سشن (Session ID) منحصر به فرد دریافت میکند.
شیء Session یک دیکشنری است که جفتهای کلید-مقدار متغیرهای مرتبط با سشن را نگهداری میکند. برای رمزگذاری دادهها در کوکیها، از SECRET_KEY استفاده میشود.
مثال کد:
تصویر(15)
در این مثال:
- مقدار username به سشن اضافه میگردد.
- داده از سشن بازیابی شده و نمایش داده میشود.
- سشن پاک خواهد شد.
توابع مهم دیگر در Flask
1. تابع redirect
این تابع کاربر را به مکان دیگری هدایت میکند.
نحوه نگارش:
تصویر(16)
- location: آدرس مقصد.
- statuscode: کد وضعیت (پیشفرض 302).
- response: پاسخ اولیه.
مثال:
تصویر(17)
2. تابع abort
برای مدیریت خطاها و ارسال پاسخهای HTTP خاص استفاده میشود.
نحوه نگارش:
تصویر(18)
کدهای خطا:
- 400: درخواست اشتباه (Bad Request).
- 401: احراز هویت نشده (Unauthorized).
- 403: درخواست ممنوع (Forbidden).
- 404: پیدا نشد (Not Found).
- 429: درخواست بیش از حد (Too Many Requests).
مثال:
تصویر(19)
آپلود فایل در Flask
Flask امکان آپلود فایلها را به سادگی فراهم میکند. برای این کار نیاز به فرم HTML با enctype و یک هندلر URL است.
کد پایتون:
تصویر(20)
فایل HTML یا upload.html:
تصویر(21)
ارسال دادههای فرم به سرور در فریم ورک فلسک
در HTML، فرمها برای جمعآوری اطلاعات کاربران استفاده میشوند. Flask این دادهها را دریافت کرده و به یک تابع ارسال میکند.
تصویر(22)
فایل HTML یا student.html:
تصویر(23)
فایل HTML یا result.html:
تصویر(24)
پیامهای هشدار (Alerts) در Flask
برای نمایش پیامهای هشدار یا خطا، از تابع ()flash استفاده میشود.
نحوه نگارش:
تصویر(25)
- message: متن پیام.
- category: دسته پیام (اختیاری، مثلاً error یا info).
مثال :
تصویر(26)
جمعبندی
فریم ورک فلسک یکی از محبوبترین فریم ورکهای توسعه وب در زبان برنامهنویسی پایتون می باشد که به دلیل سادگی، انعطافپذیری و قابلیتهای گسترده، برای ایجاد وبسایتها و اپلیکیشنهای تحت وب مورد توجه بسیاری از توسعهدهندگان قرار گرفته است. فلسک یک فریم ورک میکرو می باشد و به برنامهنویسان این امکان را میدهد که تنها بخشهای مشخصی از قابلیتهای موردنیاز را انتخاب کنند.
هاست پایتون و نود جی اس میهن وب هاست به طور خاص برای اجرای اپلیکیشن های مبتنی بر فریم ورک فلسک بهینه سازی شده است. به همین دلیل، توسعهدهندگان میتوانند با اطمینان از عملکرد بهینه، سرعت بالا و پشتیبانی مناسب، پروژههای خود را در محیطی مطمئن و پایدار مستقر کنند.