زبان برنامه نویسی پایتون یک زبان پویا و متحرک است که در سیستم عامل های ویندوز، لینوکس و مک مورد استفاده قرار میگیرد و شرکتهای بزرگی نظیر گوگل (google)، دراپباکس (Dropbox)، فیس بوک (face book) و … از این زبان بهره میجویند. زبان برنامه نویسی پایتون، ویژگیهای خیلی جذابی دارد که این زبان را، به یکی از 5 زبان محبوب دنیا بدل کرده است. یکی از این ویژگیها داشتن فریم ورکها و کتابخانههای غنی است. فریم ورک های پایتون در واقع مجموعهای از ماژولها یا پکیجها هستند که به نوشتن برنامههای مبتنی بر وب، سرعت میبخشند.
مادامی که از فریم ورکها در پایتون استفاده کنیم، نگرانی از بابت جزئیات سطح پایینی چون پروتکلها و سوکتها نخواهیم داشت. فریم ورکها در واقع مشکلات مشترک به هنگام طراحی سایت با پایتون را حل میکنند که باعث میشوند توسعه دهنده بتواند وقت بیشتری را صرف مسائل مهم و اساسیتر بکند.
عملکرد فریم ورکها به این شکل است که با ارائه الگوها و کدهای ساختاری که در تمامی برنامههای پایتون یکسان است، برنامه نویسان را از نوشتن دوباره آن معاف میکنند. در این مقاله از آموزش به بررسی فریم ورکهای پایتون خواهیم پرداخت.
انواع فریم ورک های پایتون
فریم ورکهای پایتون به سه دسته تقسیم میشوند.
- فریم ورکهای Full-Stack: فریم ورکهای Full-Stack که به عنوان فریم ورکهای سازمانی نیز شناخته میشوند، راه حلی برای تمام مشکلات یک توسعه دهنده محسوب میشوند. این فریم ورکها با کتابخانهای داخلی ساخته شدهاند تا به صورت یکپارچه عمل کنند. این فریم ورکها از توسعه دیتابیس، اینترفیسهای فرانت-اند و سرویسهای بک-اند پشتیبانی میکنند.
- میکرو فریم ورکها: میکرو فریم ورکهای پایتون، نرم افزارهای سبک مبتنی بر وبی هستند که کارایی محدودی دارند. این دسته از فریم ورکها معمولا، تنها اجزایی را در اختیار توسعه دهنده قرار میدهند که برای توسعه وب، ضروری هستند. میکرو فریم ورکها در واقع فاقد بسیاری از قابلیتهای اضافه و کارهایی مانند اعتبار سنجی فرمها، احراز هویت و اعطای مجوز هستند.
- فریم ورکهای Asynchronous: این فریم ورکها، آخرین فریم ورکهایی هستند که به پایتون پیوستند. فریم ورکهای Asynchronous، بسیار خاص هستند و از کتابخانه Asynico تغذیه میشوند. این فریم ورکها به توسعه دهندگان اجازه میدهند مجموعههای بزرگی از اتصالات همزمان را کنترل کنند.
فریم ورکهای FullStack پایتون برای توسعه وب
بالاتر توضیح دادیم که فریم ورکهای FullStack، فریم ورکهایی همه فن حریف هستند که در با کتابخانه ادغام شده و نیازهای وسیع یک توسع دهنده را پوشش میدهند. این بدان معنا است که با استفاده از این فریم ورکها، از تاییدیه فرم گرفته تا قالبهای آماده را در اختیار دارید. از محبوبترین فریم ورکهای توسعه وب پایتون، میتوان به Django، Web2Py، TurboGears، CubicWeb و Flask اشاره کرد که در ادامه به بررسی آنها خواهیم پرداخت.
فریم ورک Django
فریم ورک Django یک فریم ورک Full-Stack میباشد که به صورت رایگان و متن باز در اختیار برنامه نویسان قرار دارد. کار بر روی هرگونه کد یا اپلیکیشن پیچیده از طریق این فریم ورک پرسرعت امکان پذیر است. فریم ورک Django، از بهترین فریم ورکهای پایتون است و در بیشتر مواقع برای توسعه APIها و نرمافزارهای مبتنی بر وب از آن استفاده میشود. از این فریم ورک در وبسایت های پربازدید نظیر واشنگتن نیوز و اینستاگرام و پینترست استفاده شده است.
مزایا :
- استفاده از طرح های عملی (Pragmatic Design) برای ساده سازی فرآیند توسعه صفحات وب
- دارای کتابخانه ها و ویزگی های برجسته ای نظیر مکانیسم احراز هویت، مدیریت محتوا، موتور قالب ساز، مسیریابی URL و مهاجرت اسکیمای دیتابیس
- پشتیبانی از دیتابیس های PostgreSQL، Oracle، MySQL و SQLite
- قابلیت استفاده مجدد کامپوننت ها و کدنویسی کمتر
- امنیت بالا و امکان پاک کردن اشتباهاتی نظیر کلیک درجا (Clickjacking)، جعل و تزریق SQL
- تطبیق پذیری
- مقیاس پذیری
فریم ورک Web2PY
فریم ورک We2PY، با اشکال یاب، ویرایشگر و همچنین ابزار توسعه کد، همراه شده تا توسعه دهنده را قادر به ساخت و اشکال یابی کدها و برنامههای مبتنی بر وب کند. این فریم ورک بر روی پلتفرمهای زیادی چون ویندوز، لینوکس، مک و … قابل اجرا است. این فریم ورک Full-Stack نیز به همراه یک IDE انحصاری در اختیار توسعه دهندگان پایتون قرار دارد. این ویژگی شامل یک ابزار One-Click Deployment، کد ادیتور و دیباگر (Debugger) است.
مزایا :
- قابلیت سازگاری وارونه (Backward)
- معماری MVC
- پشتیبانی از قابلیت Internalization
- نصب بسیار راحت بدون نیاز به کانفیگ
- کنترل دسترسی Role محور
- دارای پروتکل های قابل خوانش چندگانه
- پشتیبانی داخلی از کوکی، Session و درخواست های HTTP
- قابلیت Cross-Platform
- عملکرد قابل تغییر
- امنیت خوب در برابر خطرات معمولی
- اتصال یکپارچه به دیتابیس
- قابلیت استفاده اپلیکیشن در محیط های مختلف (Portability)
فریم ورک TurboGears
فریم ورک TurboGears، فریم ورکی FullStack و مبتنی بر داده است و از بهترین عناصر موجود در ساخت آن استفاده شده است.. این فریم ورک طراحی شده تا ناکافی بودن فریم ورکهای مورد نیاز برای توسعه برنامههای وب و گوشیها را جبران کند. با استفاده از این فریم ورک، برنامه نویسان قادر خواهند بود با کمترین تنظیمات اولیه، کار خود را شروع کنند.
مزایا :
- معماری MVC
- مجهز به قالب های PasteScript
- پشتیبانی از دیتابیس های چندگانه
- مجهز به توابع Decorator
- پشتیبانی از فریم ورک Pylon
- پشتیبانی از انواع سیستم عامل های موجود (Cross-Platform)
فریم ورک CubicWeb
این فریم ورک Full-Stack و منبع باز دارای کامپوننت هایی به نام Cube است که برای توسعه وب اپلیکیشن طراحی شده اند. در حقیقت Cube های مختلف گرد هم آمدهاند و با کمک یک دیتابیس، یک وب سرور و چند فایل کانفیگ برای ساخت Instance مورد استفاده قرار میگیرند.
یادگیری فریم ورک CubicWeb، سختیهای خودش را دارد. این فریم ورک به صورت کامل، شبیه به دیگر فریم ورکهای پایتون نیست؛ در حقیقت، توسعه دهندگان CubicWeb، آن را شبه فریم ورک میدانند. از این فریم ورک یا شبه فریم ورک برای ساخت دیتابیس فرانت اند برنامه های مبتنی بر وب استفاده میشود.
مزایا :
- کامپوننت های چند بار مصرف
- پشتیبانی از زبان های OWL و RDF
- پشتیبانی از زبان پرسمان RQL
- پشتیبانی از چندین دیتابیس
- امنیت بالا
فریم ورک Flask
Flask، یکی از فریم ورکهای پایتون است که تحت لیسانس BSD قابل استفاده است. Flask مبتنی بر ابزار Werkzeug WSGI و قالب Jinja2 است. اصلیترین هدف این فریم ورک، کمک به توسعه دهندگان برای توسعه برنامه قدرتمندی بر پایه وب است. این فریم ورک در واقع برای برنامههای متن باز طراحی شده و به همین دلیل توسط کمپانیهای بزرگی چون لینکدین و پینترست استفاده میشود.
میکرو فریم ورک Flask به صورت داخلی دارای یک سرور توسعه دهنده و اشکال زدا (Debugger) است. اگرچه این فریم ورک هیچ گونه ابزار داخلی برای برقراری ارتباط با دیتابیس ندارد اما از طریق پکیج SQLAlchemy و تنها با استفاده از URL دیتابیس به SQL وصل می شود.
مزایا :
- مبتنی بر استاندارد Unicode
- دارای موتور قالب ساز Jinja 2
- سازگار با WSGI 1.0
- پشتیبانی از پلاگین های ORM
- پشتیبانی از تست واحد (Unit Test)
- پشتیبانی از از کوکی های سمت کاربر (Client-Server)
- رسیدگی به HTTP Request
فریم ورک cherrypy
فریمورک بعدی فریم ورک cherrypy است. این فریم ورک یک فریم ورک مینیمالیست ( ویکی پدیا ) بوده و به دلیل سادگی آن بسیاری از این فریمورک استفاده میکنند. یکی از مزیتهای بسیار مهم این فریمورک استفاده از الگوی شی گرایی بوده که با استفاده از این الگو توسعه دهندگان شروع به توسعه نرم افزارهای تحت وب خود میکنند. همچنین وب سرور چند رشته ای WSGI اختصاصی خود را دارد.
مزایا :
- برنامه های توسعه یافته با CherryPy بدون نیاز به سرور Apache در سیستم عامل های ویندوز، لینوکس، Unix و Mac اجرا می شوند.
- به علت ویژگی ماژولار و Setup دسترسی به دیتا و قالب سازی آسان است. علاوه بر این رسیدگی به Session، فایل، کوکی و آپلود ها نیز به راحتی انجام می پذیرد.
- پشتیبانی داخلی از Task های مستندساز نظیر پروفایل، پوشش و تستینگ
- اجرای همزمان چند سرور HTTP
- مجهز به ابزارهای پیشفرض برای کشینگ (Caching)، رمزگذاری و صدور اجازه (Authorization)
- کانفیگ (Configuration) قدرتمند
- دارای پلاگین های انعطاف پذیر
- رابط کاربری مینیمالیسم
- سازگار با اندروید
فریم ورک Pyramid
این فریم ورک Full-Stack به عنوان یکی از فریمورک های برنامه پایتون برای وب نویسی است که برای سهولت برنامه نویسی در این حوزه طراحی شده است که به عنوان یک فریم ورک منبع باز است. در این فریم ورک اصولی پیروی میشود که عبارتند از:
- سادگی: این فریم طوری طراحی شده است که بسیار ساده است. حتی در صورتی که نسبت به برخی مسایل پیش رو درک عمیقی ندارید، باز هم میتوانید از این فریم ورک استفاده نمایید.
- مینیمالیسم: فریم ورک Pyramid فقط ابزارهای اصلی مورد نیاز برای همه برنامههای وب را فراهم میکند.
- مستندسازی: بهروز رسانی و استفاده از اسناد جامع از ویژگیهای آن است.
- سرعت استفاده: فریمورک Pyramid به شدت سریع اجرا میشود.
-
فریمورک Pyramid یکی از فریمورک های پایتون است که بسیار مدرن و پیشرفته بوده و آزمون شده است. سندهای نوشته شده در این فریم ورک جامع و کامل است و با پشتیبانی قوی از سوی پایتون همراه است. و در نهایت فریمورک Pyramid ویژگی هایی دارد که آن را منحصر به فرد میکند. برای مثال کمپانی هایی تظیر Mozilla، DropBox و Yelp از این فریم ورک استفاده کرده اند.
مزایا :
- دارای Predicates و Renderers
- دارای ویژگی های مربوط به قالب سازی (Templating) و دارایی
- اپلیکیشن های تک فایل
- مجهز به فریم ورک Traversal برای تیدیل URL به Code Mapping
- انعطاف پذیری Authentication و Authorization
- حجم کم
- دارای توابع Decorators
فریم ورک PYLONS
این فریمورک نیز متن باز است. مجموعهای از فناوریهای برنامه وب که در پایتون نوشته شده است را توسعه میدهد. فریم ورک PYLONS با فریم ورک Pyramid به طور مشترک در برنامه نویسی پایتون و توسعه آن اقدام مینمایند. میتوان گفت که Pyramid یک چارچوب وب منبع باز است که در پایتون نوشته شده و از Zope ،Pylons و Django الهام گرفته است. میتوان گفت که در حال حاضر Pylons با تغییر ساختاری که داده به Pyramid تغییر نام داد و لذا این دو فریمورک کارایی یکسانی از خود نشان خواهند داد. از فریم ورک PYLONS نیز برای طراحی وب استفاده میشود.
این فریم ورک Full-Stack بر پایه ویژگی های شاخص زبان های برنامه نویسی نظیر پایتون، Perl و Ruby ساخته شده است.
مزایا :
- تولید و اعتبارسنجی فرم های HTPM
- قابلیت URL Dispatch
- نقشه یابی URL بر اساس کانفیگ Routes
- مجهز به WebHelper برای نقشه یابی URL
- دارای قالب های تکست محور
- قابلیت کراس پلتفرم و دارای لیسانس BSD (توزیع نرم افزار بارکلی)
- دارای ساختاری با قابلیت پشتیبانی از ابزارهای ثالت
- پشتیبانی از WSGI
فریم ورک GROK
این فریم ورک Full-Stack به صورت متن باز برای توسعه پرسرعت نرم افزار طراحی شده است. اساس این فریم روک بر پایه سرورهای Toolkit Zope استوار است.
Grok شبیه zope3 میباشد و با API آن سازگاری دارد. اگر با Zope3 آشنا باشید استفاده از آن سخت نیست. همچنین استفاده zope3 با grok مزایایی دارد زیرا به فایلهای ZCML یا XML نیازی نیست، اکثر فایلها به صورت اتوماتیک تولید میشوند و همچنین کدهایی که کمتر به هم ریخته و شلوغ هستند را تولید میکند.
مزایا :
- توسعه اپلیکیشن وب پیشرفته
- قابلیت توسعه اپلیکیشن به صورت سفارشی
- مجهز به تکنولوژی پیشرفته (Martian’s grokcore.component)
- قابلیت دسترسی به شبکه گسترده و کتابخانه های مستقل
- معماری MVC
فریم ورک Zope
این فریم ورک Full-Stack ممکن است یکی از قدیمیترین فریم ورک های پایتون باشد که با نام Zope –Z در سال 1995 شروع به کار کرد. برای توسعه شیءگرا مناسب بوده و یافتن خطاها در آن آسان میباشد و نکتهای که در مورد آن وجود دارد، قابلیت استفاده مجدد کامپوننتها میباشد. از روش Object Publishing برای ساخت وبسایت استفاده میکند و به صورت کاملاً شی گرا در اختیار برنامه نویسان پایتون قرار دارد.
مزایا :
- قابلیت سفارشی سازی
- پشتیبانی از پایتون 2 و 3
- مجهز به قالب های Chameleon محور
- عملکردی بسیار بالا با حداقل استفاده از مموری
فریم ورک TORNADO
فریم ورک غیرهمزمان تورنادو یک فریم ورک منبع باز محسوب میشود که دارای یک کتابخانه شبکهای Async میباشد. این فریم ورک مخصوص پردازش فرآیندهای غیرهمزمان طراحی شده است.
تورنادو فریم ورکی است که به علت کارایی بالا شهرت زیادی دارد و به طور همزمان قابلیت کنترل 10000 اتصال (Connection) را در شبکه دارد. پشتیبانی از سیستم احراز هویت کاربران از دیگر مزایای این فریم ورک است و برای توسعه اپلیکیشنهایی که به عملکرد قوی و توانایی در مدیریت تعدادی زیادی کاربر نیاز دارند، کاربردی به نظر میرسد. این فریم ورک در سیستم عامل Unix و Linux پشتیبانی بهتری دارد.
مزایا :
- دارای کلاس HTTPclient غیر مسدود شونده (Non-Blocking)
- مجهز به سرویس های Real-Time
- عملکرد فوق العاده باکیفیت
- دارای خروجی بسیار باکیفیت
- مجهز به قالب سازهای وب
- پشتیبانی از احراز هویت کاربران
- پشتیبانی از احراز هویت و تایید اعتبارشخص ثالث
- پشتیبانی از مفسر (Interpretation) و محلی سازی (Localization)
فریم ورک Bottle
یکی دیگر از میکروفریم ورکهای محبوبی که برای توسعه اپلیکیشنهای کوچک به کار میرود، فریم ورک باتل است که فقط به کتابخانههای پایتون وابستگی داشته و نیازی به کتابخانههای اضافه ندارد. این فریم ورک از امکانات پایگاه دادههای مختلف پشتیبانی کرده و به کاربران اجازه دسترسی به دادهها و فایلها بارگذاری شده را میدهد. باتل در پایتون 3 پشتیبانی شده و امکان توسعه APIهای تحت وب را در اختیار شما قرار میدهد.
این میکروفریم ورک همانند CherryPy به صورت مینیمالیستیک است. به علت حجم پایین این فریم ورک، اجرای هرگونه وب اپلیکیشن در یک سورس فایل بدون نیاز به وابستگی (به جز وابستگی های درون کتابخانه استاندارد پایتون) صورت میپذیرد.
مزایا :
- پشتیبانی از موتورهای قالب ساز (Template Engine) های ثالث
- پشتیبانی از سرورهای WSGI/HTTP
- امکان دسترسی به Form Data، متا دیتای HTTP، کوکی و فایل آپلود
- کم حجم
- پشتیبانی از پلاگین های دیتابیس
- ویژگی روت های Request-dispatching و پشتیبانی از URL-parameter
فریم ورک AIOHTTP
فریمورک ناهمزمان AIOHTTP یکی دیگر از فریمورک های پایتون است که به شدت به ویژگیهای پایتون ۳.۵ به بالا مانند async و awaits متکی است. از کتابخانه asyncio پایتون استفاده میکند و بنابراین یک فریمورک ناهمزمان به حساب میاید. علاوه بر اینکه یک فریمورک وب سرور است، AIOHTTP میتواند به عنوان یک فریمورک کلاینت نیز عمل کند. همچنین این یک شی request و router را فراهم میکند تا بتواند به تغییر مسیر کوئریها برای توابع ایجاد شده رسیدگی کند. علاوه بر این، پکیج aiohttp همچنین از سرور WebSockets و Client WebSockets پشتیبانی میکند.
امکانات:
- از پروتکل HTTP هم از طرف کلاینت و هم از طرف سرور پشتیبانی میکند
- از Web-Socket کلاینت و سرور پشتیبانی میکند و از Callback Hell جلوگیری میکند
- وب سرور را با میانافزارها و مسیریابی قابل اتصال فراهم میکند
- این فریم ورک غیرهمزمان متکی به ویژگی های نسخه 3.5 به بالا پایتون بوده و از کتابخانه asyncio استفاده می کند.
- مجهز به ساختار موثر Views
- پشتیبانی از میان افزار و سیگنال
- روتینگ قابل برنامه ریزی (Pluggable)
فریم ورک Sanic
Sanic یک فریمورک توسعه وب مشهور است و برای مدیریت درخواستهای HTTP سریع و غیرهمزمان است. این فریمورک مبنی بر UVLOOP و HTTPtools میباشد که برای پیشروی سریع توسعه داده شده است، توسط github و جامعه بزرگ آن ایجاد شده و توسعه داده شده است.
این فریم ورک Async به صورت منبع باز برای پایتون 3.6 به بالا مورد استفاده قرار می گیرد. این فریم ورک به صورت اختصاصی برای پاسخ پرسرعت به درخواست های HTTP طراحی شده است.
مزایا :
- قابلیت خواندن و نوشتن کوکی ها
- انواع مختلف Logging
- نمای Class-Based
- پشتیبانی از توابع Decorators
- پشتیبانی از پلاگین
- دارای بلوپرینت هایی برای Sub Routing درون برنامه ای
- دارای اشیای کانفیگ (Configuration Object) طبقه بندی شده
فریم ورک FALCON
Falcon یک فریمورک وب WSGI (رابط دروازه وب سرور) مینیمالیست است که در آن فقط موارد ضروری قرار دارد. قابل اعتماد و انعطافپذیر بوده و میتواند برای توسعه پروژههای سطح بالا و سطح پایین استفاده شود.
میکروفریم ورک فالکون گزینه بسیار مناسبی برای توسعه API به شمار می رود. این فریم ورک برای توسعه HTTP API به بارگذاری وابستگی ها (Dependencies) نیاز ندارد.
مزایا :
- طراحی وب اپلیکیشن های Dieter Ram
- دارای پایگاه کد گسترده و بهینه سازی شده
- پردازش ریکوئست ها از طریق کامپوننت های میان افزار
- دسترسی به Header و Body از طریق کلاس های Request and Response
- پشتیبانی از کتابخانه Cython برای افزایش سرعت
- قابلیت مدیریت خطای به صورت روبه جلو (Upfront)
- قابلیت مدیریت خطای HTTP به صورت مجازی (Idiomatic)
- دارای کلاس های ریسورس REST-Style
- مجهز به قالب های URI برای روتینگ بصری
- پشتیبانی از WSGI برای تستینگ واحد (Unit Testing)
- پشتیبانی کامل از Unicode
- سازگاری با کتابخانه های Async نظیر gevent
- پشتیبانی از مدیریت پکیج PyPy
فریم ورک REAHL
Reahl یک فریم ورک وب با ویژگیهای کامل است که به طور کامل با پایتون توسعه یافته است و اسکریپتهای شلوغ و به هم ریخته ای پیرامون آن وجود ندارد و فاقد تمام تکنولوژیهای سنگین وب HTML، CSS، Javascript است. یادگیری آن در مقایسه با سایر فریمورکهای وب بسیار آسان است.
مقایسه فریم ورک های پایتون
فریمورک های پایتون هرکدام بنا به نوع استفاده و همچنین نحوه استفاده قدرتمند بوده و تواناییهای خاص خود را دارند. از همین رو نمیتوان به طور قطع برنده این رقابت و اینکه کدام فریمورک بهترین فریمورک پایتون است را بررسی نمود اما در اینجا قصد داریم برخی قابلیت های فریم ورک های گفته شده را مقایسه کنیم.
فریم ورک هایی که از MVC استفاده می کنند شامل TurboGears, Django و همچنین web2py می شوند. و فریمورک های flask و cherrypy این قابلیت را ندارند. از طرفی اگر بخواهیم برای برنامه نویسی به سراغ فریم ورک هایی برویم که بیشترین تعداد کتابخانه مختلف را داشته باشند باید به سراغ TurboGears, Django برویم. همچنین برای اینکه از پایگاه داده های مختلف استفاده کنیم فریم ورک های TurboGear و Django بهترین هستند. پس باید بنابه کار و استفاده ما فریمورک مناسب را انتخاب کرده و از آن استفاده کنیم.
شاید بتوان فریم ورکهای پایتون را بر اساس ویژگیهای زیر تقسیم بندی کرد:
فریمورکهای پایتون که از الگوی MVC پشتیبانی میکنند:
- Django
- Web2Py
- TurboGears
فریمورکهای پایتون که از پایگاه دادههای مختلف پشتیبانی میکنند:
- Bottle
- TurboGears
- Django
فریمورکهای پایتون که دارای کتابخانههای مختلف و متنوعی هستند:
- TurboGears
- Django
- Flask
الان وقتشه!
جهت مشاوره و ساخت طراحی سایت حرفه ای و بهینه سازی سایت و تولید محتوا تماس بگیر
نویسنده
مدیر سایت
حمیده عابدی کارشناس کامپیوتر رشته نرم افزار هستم و مشغول کار در در زمینه طراحی سایت با وردپرس و آشنا به سئو و بهینه سازی سایت، تولید محتوا، برنامه نویسی HTML, CSS هستم.