آموزش جانگو - قسمت اول : جانگو چیست؟

گردآوری و تالیف : ارسطو عباسی
تاریخ انتشار : 09 مرداد 1397
دسته بندی ها : پایتون

وقتی که شروع به فرایند توسعه وب می‌کنید، ممکن است انتخاب مسیر از ابتدای کار کمی سخت باشد و شما در این روند سردرگم شوید. همانطور که وب پیشرفت کرد و تغییرات بسیاری را به خود دید، تکنولوژی‌های بسیار زیادی وارد عرصه توسعه وب شدند. 

ابتدای کار بسیار مهم است که بدانید چگونه یک وبسایت ساختاردهی می‌شود. یک وبسایت را به صورت کلی می‌توان به دو بخش تقسیم کرد: فرانت-اند و بک‌-اند. فرانت‌-‌اند همان بخشی است که مشتری یا بازدید کننده با آن به صورت مستقیم تعامل دارد، از آن به عنوان Client-Side نیز نام برده می‌شود. بک‌-اند هم جایی است که برنامه‌نویسی Server-Side در آن انجام می‌شود. به صورت کلی این قسمت وظیفه دارد تا محتوای یک برگه را از طریق سرور و بانک اطلاعاتی آماده کند. 

یک راه دیگر برای فکر کردن در رابطه با این دو بخش، ماشین‌هایی است که هر کدام از این موارد را میزبانی می‌کند و کد روی آن اجرا می‌شود. کدهای قسمت Client-Side روی دستگاه مشتری و مرورگر وی اجرا می‌شود، این در حالی‌ست که کدهای Server-Side روی یک سرور اجرا می‌شود.

حال که ما تفاوت اصلی این دو را می‌دانیم، می‌توانیم به زبان‌هایی که با استفاده از آن‌ها برای هر بخش از این دو مورد اپلیکیشن طراحی می‌کنیم، نگاهی بیاندازیم. برای بخش کلاینت یا فرانت‌-اند ما از HTML، CSS و جاوااسکریپت برای نمایش اطلاعات و تعامل با آن‌ها استفاده می‌کنیم.

در قدم اول بسیار ساده است، اما وقتی به گزینه‌های بخش سرور نگاه می‌کنیم، همه چیز پیچیده‌تر می‌شود. مشکل اینجاست که بیشتر زبان‌های برنامه‌نویسی برای ساخت اپلیکیشن‌های سمت سرور استفاده می‌شود. با این حال، اگرچه می‌شود از آن‌ها استفاده کرد، اما هیچ بایدی در کار نیست. تمام زبان‌های برنامه‌نویسی با همدیگر متفاوت هستند، البته موارد مشابهی را نیز دارند، با این حال تمام آن‌ها برای توسعه وب ساخته نشده‌اند. منظور کلی‌مان از این قسمت این است که ممکن است برخی از موارد نیازهای شما را برطرف کند، اما این نیاز را به صورتی مؤثر و کارامد برطرف و تعریف نمی‌کند.

یک راه‌حل خوب برای شناسایی یک زبان این است که به وب فریمورک‌های ایجاد شده با آن نگاه کنید. انجام چنین کاری به شما می‌گوید که آیا این زبان انتخاب مناسبی برای توسعه وب است یا خیر. در سال‌های اخیر، جاوااسکریپت خود را به عنوان یک بازیکن اصلی در روند توسعه وب معرفی کرد. البته بحث‌های بسیاری نیز در مورد ویژگی‌های این زبان وجود دارد. اما در کل نوشتن برنامه‌های سمت سرور و مشتری آن هم تنها با استفاده از یک زبان برنامه‌نویسی، برای توسعه‌دهندگان جذاب به نظر می‌رسد. جاوااسکریپت با وجود وب فریمورک‌های بسیاری که دارد به شما قابلیت ساخت وب اپلیکیشن‌ها را می‌دهد. در هر حال، جاوااسکریپت تنها یکی از چندین مورد مناسب برای توسعه وب است، ما در این مجموعه مقاله قصد داریم روی پایتون و جانگو تمرکز داشته باشیم.

چرا Django (جانگو)؟

جانگو یک فریمورک وب است که با استفاده از پایتون ایجاد شده است. این زبان ویژگی‌های بسیار زیادی با خود به همراه دارد. برای افرادی که مبتدی هستند، پایتون روند یادگیری آسانی را ارائه می‌دهد و می‌تواند به عنوان یک زبان شئ‌گرا استفاده شود. همچنین قابلیت استفاده در اپلیکیشن‌هایی با مقیاس‌های متفاوت را می‌دهد. جانگو باعث می‌شود که پایتون زبان بسیار منعطفی باشد، البته جدای از جانگو، وب فریمورک‌های مختلف دیگری نیز برای پایتون نوشته شده است.

جانگو گزینه بسیار خوبی برای یادگیری برنامه‌نویسی سمت سرور است. بیایید با همدیگر نگاهی به مزیت‌های مهم جانگو بیاندازیم.

  • فرایند توسعه سریع - به لطف وجود کدهای واضح و ساده‌ای که دارد، فرایند توسعه در جانگو بسیار مؤثر،‌سریع و کاربردی است. یکی از اهداف اصلی در ایجاد جانگو این بوده که به توسعه‌دهنده قابلیت ایجاد اپلیکیشن با سرعت بالا را بدهد. بنابراین استفاده از چنین گزینه‌ای برای توسعه‌دهندگانی که از نظر زمان تحویل پروژه تحت فشار هستند بسیار خوب است.
  • مقیاس‌پذیر - همانطور که به صورت خلاصه‌وار در بالا اشاره کردیم، جانگو می‌تواند به درخواست‌های متفاوتی پاسخگو باشد. برخی از پرترافیک‌ترین پلتفرم‌های حال حاضر به همین دلیل از پایتون استفاده می‌کنند. دو نمونه بسیار مشهور از این پلتفرم‌ها، اینستاگرام و پینترس است. سایت‌هایی مانند این می‌توانند به ۵۰ هزار بازدید در ثانیه پاسخ‌گو باشند.
  • انعطاف‌پذیری - از جانگو می‌توان برای ساخت تقریبا هر شکل از وبسایتی استفاده کرد. این محدوده از شبکه‌های اجتماعی، وبسایت‌های خبری، سیستم‌های مدیریت محتوا و ویکی‌ها را شامل می‌شود. همچنین جانگو را می‌توان در کنار هر تکنولوژی فرانت-اندی استفاده کرد.
  • امن - با کمک جانگو، توسعه‌هندگان قابلیت این را خواهند داشت که بتوانند بسیاری از مشکلات امنیتی را در یک اپلیکیشن حذف کنند. جانگو به صورتی طراحی شده که بتواند بهترین کارها را برای برقراری امنیت وبسایت انجام دهد. برای مثال، جانگو راه امنی را برای پیاده‌سازی مدیریت کاربران با استفاده از نام کاربری و پسورد‌شان پیاده‌سازی کرده است. این متد از اشتباهاتی مانند قرار دادن اطلاعات یک نشست در کوکی‌ها (یکی از آسیب‌پذیری‌ها) جلوگیری می‌کند. 
  • کامل بودن - جانگو از فلسفه‌ای پیروی می‌کند که سعی دارد تمام امکانات لازم برای استفاده‌های توسعه‌دهندگان را در خود داشته باشد. از آن‌جایی که تمام این امکانات از یک محصول نشئت می‌گیرد بنابراین همه موارد به خوبی با همدیگر کار می‌کنند و قواعد یکپارچه‌ای حاکم است. مستندات مربوط به جانگو نیز بسیار کامل است. 
  • قابلیت نگه‌داری - کدهای جانگو با استفاده از قواعد و الگو‌های درست طراحی نوشته شده است، بنابراین شما قادر به ایجاد کدهایی با قابلیت نگه‌داری و استفاده‌پذیری دوباره بالا را دارید. یکی از قواعدی که در جانگو پیاده‌سازی شده DRY یا Don't Repeat Yourself نام دارد. با استفاده از این قاعده شما نیازی ندارید  که کارهای تکراری را انجام دهید و این موضوع حجم کدهای‌تان را بسیار کاهش می‌دهد.
  • قابل حمل - از آنجایی که جانگو با استفاده از پایتون نوشته شده است، می‌توان آن را در پلتفرم‌های مختلف اجرا کرد. بنابراین شما محدودیت ندارید و می‌توانید برنامه‌ها در هر سیستم عاملی اعم از ویندوز و خانواده یونیکس اجرا کنید. اکثر سرویس‌دهندگان میزبانی نیز امروزه از جانگو پشتیبانی می‌کنند. اغلب آن‌ها زیرساخت‌ها و مستنداتی را برای میزبانی وبسایت‌های ایجاد شده با پایتون را به شما ارائه می‌دهند. 

از آن‌جایی که جانگو نیز بخشی از تکنولوژی است، پس بدون نقص نیست و در آن معایبی نیز وجود دارد. یکی از مشکلات اصلی که با جانگو وجود دارد این است که پیشرفت و تکامل کندی دارد. ممکن است در فرایند استفاده از آن متوجه شوید که برخی از امکانات آن منسوخ شده است. یک مثال از این موضوع می‌تواند استفاده جانگو از ORM در زمان تبدیل کوئری‌های پیچیده باشد. این مورد قبل از SQLAlchemy ایجاد شده و حال باید گفت که موارد دیگری وجود دارد که از چنین تکنولوژی ارتقایافته‌تر است. دلیل آن نیز این است که ORM انعطاف‌پذیری کمتری  دارد، این موضوع از مبتنی بر الگوی Active Record بودن نشئت می‌گیرد. این در حالی‌ست که SQLAlchemy از الگوی بهتری به نام Unit Record استفاده می‌کند. 

قدم بعدی چیست؟

حال که ما با تعریف جانگو و مزیت‌ها و معایب آن همراه شدیم، می‌توانیم فرایند ایجاد وبسایت‌مان را شروع کنیم. در قسمت بعدی ما یک اپلیکیشن ساده را با استفاده از این فریمورک از ابتدای کار خواهیم ساخت.

منبع

مقالات پیشنهادی

آموزش جانگو - قسمت دوم: پیاده‌سازی سرور

در قسمت اول، ما نگاهی به این موضوع که جانگو انتخاب مناسبی برای توسعه وب است انداختیم. حال، ما قصد داریم که از آن استفاده کنیم و با استفاده از آن یک اپ...

آموزش جانگو - قسمت سوم: ایجاد بانک‌ اطلاعاتی

در این مقاله ما روش پیاده‌سازی یک بانک‌ اطلاعاتی و پنل مدیریت را برای وبسایت جانگو خودمان یاد خواهیم گرفت. این قسمت به احتمال بسیار زیاد، پیچیده‌ترین...

آموزش جانگو - قسمت چهارم: ایجاد فرانت-اند

حال که قسمت بک‌-اند ما به صورتی درست کار می‌کند، می‌توانیم به فرانت-اند وبسایت بپردازیم. در حال حاضر آدرس Localhost:8000/todos به ما چیزی جز یک متن سا...

آموزش جانگو - قسمت پنجم : تکمیل اپلیکیشن

تا به اینجای کار ما هیچ توجهی به کاربر اپلیکیشن نکردیم. در حقیقت کاربران این اپلیکیشن نمی‌توانند به صورت مستقیم از آن استفاده کنند. ما اپلیکیشن را با...