
در این نوشته سعی کردم بطور خلاصه، مقایسهای بین این دو فریم ورک انجام بدم.
وارد جزئیات فیچرهای این دو فریم ورک نمیشم؛ مطالبی خواهم گفت که بیشتر تجربه خودم از پروژهها و آموختههای تجربیِ این چند سال هست.
فرض من اینه که شما هم مثل من علاقه ندارید مثل دولوپرهای کم سواد و پرادعا، آنچه بلدیم رو بهترین بدونید و روی بقیه فریم ورکها خطِ باطل نمیکشید. فرض میکنم ما مثل هم، همیشه دنبال کشف راه های جدید و سادهتر هستیم.
قبل از هر چیز باید بدونیم که هر دوی این فریم ورک ها در حقیقت ابزارهایی برای برقراری ارتباط وب پیج ها با سرور هستند. این فریم ورک ها آدرسهایی که در آدرس بار مرورگر مینویسیم یا در بدنه صفحه صدا میکنیم، به متدهایی پایتونی که در سمت سرور نوشتهایم مپ می کنند.
مثلا فرض کنید میخواهیم با فشردن یک دکمه در صفحه سایت توسط کاربر، اطلاعات تعداد فایلهای درون فولدر x در سرور، برای کاربر در مرورگر نمایش داده شود. شما متد پایتونیِ اینکار را به عنوان سرویس back-end مینویسید و به کمک یکی از این دو فریم ورک، روت (route) تعریف میکنید و آدرس آن را در اختیار برنامه نویس سمت کلاینت قرار میدهید تا بعنوان درخواست از سرور، درون رویدادِ کلیکِ دکمه قرار دهد. یک مکانیزم کاملا معمولی در وب.
با این تفاسیر کدام یک از این فریم ورک ها برای کارهایی شبیه این مناسب است؟
فلاسک سادهتر است و جنگو به لحاظ ساختار پیچیده است. با جنگو کارهای بیشتری به نسبت فلاسک میتوانید انجام دهید.(به این معنی نیست که با فلاسک نمیتوانید؛ در ادامه توضیح خواهم داد.)
به عبارتی جنگو یک فریم ورک همه فن حریف است. وقتی جنگو را نصب و راه اندازی میکنید تقریبا تمامی موارد معمول یک سایت، مثل اتصال به دیتابیس و اعتبارسنجی کاربر و حتا محیط ادمین را به طور آماده در اختیار دارید.
شاید الان بگویید جنگو انتخاب درستی است؛ چون کارهای بیشتری انجام میدهد.
اما همیشه اینطور نیست. برای شروع کار با جنگو، با حجم عظیمی از کدهای از پیش آماده شده روبرو هستید، که با اینکه در بیشتر موارد نیاز به دستکاریِ آنها ندارید، اما کم تجربگی در پایتون، عدم تسلط به معماری و پیچیدگی شیوه نوشتن آنها، کمی آزار دهنده خواهد بود؛ از طرفی اطلاع پیدا کردن از مکانیزم جنگو نیاز به مطالعه و زمان دارد. اینکه هر فایل چرا ایجاد شده و چه کار میکند و کدهای درون فایلهای از قبل آماده شده چه معنی میدهند و اینکه چرا باید به مدل خاصی کد بنویسیم کمی اعصاب تازه کارها را خرد میکند!
اینکه از دستورالعمل ها پیروی کنید و بر طبق آنچه جنگو گفته جلو بروید شما را به نتیجه میرساند، اما اگر تازه کار باشید به لحاظ کسب تجربه یا دریافت منطقی چرایی ماجرا کمفایده است. (فراموش نکنید پیروی کردن از دستورات، به سادگی کار با وردپرس برای تازه کارها نیست؛ به هر حال دانشِ پایتون نیاز است)
فلاسک این مزیت را دارد که ساختار پیچیده ای ندارد و حداقلِ ابزارها را برای ارتباط وبی در اختیارتان میگذارد. اگر تازه کار باشید، حین یادگیری و با افزایش دانش، پروژه شما بر اساس آگاهی های خودتان بزرگ میشود، کتابخانه های مورد نیازتان را با آگاهی روی پروژه نصب میکنید و درگیر پیچیدگیهای ساختار فریم ورک نخواهید شد. این روند به شما کمک میکند که بدانید چه چیزی را، چرا و چطور می نویسید.

بعلاوه اگر پروژه های کوچکی دارید مثلا وب سایت شخصی، اینترفیس یا رابط دیوایس های الکترونیکی در IOT و آدرس های Rest Api ، فلاسک میتواند سریعترین گزینه باشد. معنی این جملات این نیست که فلاسک برای پروژه های بزرگ مناسب نیست. شما برای پروژه های بزرگ به دانش بیشتر برای طراحی و استفاده از کتابخانه ها در فلاسک نیاز دارید که در Django بسیاری از آنها از قبل اضافه شده ولی هزینه یادگیریِ پیچیدگیِ آن نیز به عهده خودتان است!
اگر قبلا با فریم ورک های دیگر با زبان های دیگر کار کردید و کمی هم با پایتون آشنایی دارید، پیشنهاد میکنم با Django شروع کنید و بعد با Flask آشنا شوید. اما اگر هیچ تجربه ای از پایتون ندارید و یا در حوزه وب تازه کار هستید، فلاسک گزینه مناسب تری است و جوری معتادش میشوید که برای پروژه های بزرگ تر هم با جمع آوری اطلاعات یشتر، از آن استفاده میکنید.
در نظر داشته باشید که خیلی ها از پنل ادمینی که جنگو به شکل نسبتا خودکار برای ما میسازد نمیتوانند بگذرند. برای همین رسیدن به یک انتخاب مشخص بین این دو فریم ورک مشکل است.
برای اینکه بطور عملی هم با Flask آشنا بشین این ویدیو رو ببینید :
خوشحال میشم نظرات شما در این مورد رو بدونم.
اگر پادکست کافه برنامه نویس رو تا حالا نشنیدید از طریق گوگل پادکست و اپل پادکست و کست باکس میتونید دریافت کنید. کافیه در بخش جستجوی این اپ ها بنویسید: "کافه برنامه نویس"