فریم ورک جنگو ( Django ) یکی از برترین فریم ورک های حال حاضر در زمینه ی برنامه نویسی وب می باشد. این فریم ورک با بهره گیری از زبان قدرتمند پایتون به عنوان هسته ی اصلی خود توانایی های بسیاری را برای برنامه نویسان جهت پیاده سازی پروژه های بزرگ و حرفه ای ایجاد می کند.
جنگو (Django) یکی از وب فریم ورکهای سطح بالای پایتون میباشد که با استفاده از آن میتوان سایتها را به سرعت توسعه داده و امنیت آن را تامین کرد. از آنجایی که توسعه جنگو به دست متخصصان این زمینه صورت گرفته، میتواند اغلب مشکلات مطرح در زمینه توسعه وب سایت ها را حل کند.
توضیحات تکمیلی
جنگو (Django)، یک وب فریمورک پایتونی رایگان و اپن سورس (Open-source) است که با هدف توسعه سریع، آسان و کارآمد، توسط توسعه دهندگان با تجربه، ساخته شده است. در جنگو می توانید بدون اختراع مجدد چرخ، فقط روی نوشتن برنامه خود تمرکز کنید. جنگو حرفه ای بودن را در کنار سادگی و سرعت به ارمغان می آورد.
در آموزش جنگو (Django) از ترکیب دو رویکرد پروژه محور و سرفصل محور استفاده شده است. یعنی ابتدا درس ها مورد تحلیل و بررسی قرار گرفته و سعی شده است که از طریق مثال های متنوع، این اصل، ارضا شود، سپس در بخش پایانی، یک پروژه از صفر تا صد، با استفاده از معلوماتی که در درس های ابتدای این فرادرس یاد گرفتیم، تکمیل می شود، به این شکل کاربران هم از نظر اطلاعات نظری و هم از نظر اطلاعات عملی، در سطح مناسبی قرار خواهند گرفت. لازم به ذکر است که این فرادرس در محیط لینوکس (Linux) آموزش داده شده است.
اصول کدنویسی در این فریم ورک بسیار ساده بوده و هر برنامه نویسی که مقداری با پایتون آشنایی داشته باشد میتواند از این فریم ورک قدرتمند جهت ایجاد پروژه های مبتنی بر وب استفاده کند.
برخلاف سادگی کار با این فریم ورک ، پروژه هایی نظیر Instagram ، YouTube ، Spotify ، Udemy و بسیاری دیگر در هسته ی اصلی خود از Django استفاده میکنند.
اجزا
علی رغم نامگذاری خاص خود مانند نامگذاری اشیا قابل خواندن توسط پاسخ های HTTP که View نام دارد، چارچوب هسته Django را می توان به عنوان یک معماری MVC نیز یاد کرد. همچنین موارد زیر در چارچوب این هسته گنجانده شده اند:
یک وب سرور سبک و مستقل برای توسعه و آزمایش.
یک سیستم قالب که از مفهوم ارث برده شده از برنامه نویسی شی گرا استفاده می کند.
یک چارچوب ذخیره سازی که می تواند از هر یک از چندین روش Cache استفاده کند.
یک سیستم بین المللی سازی شامل ترجمه های اجزای سازنده Django به زبان های مختلف
یک سیستم برای گسترش قابلیت های موتور قالب
برنامه های کاربردی همراه
توزیع اصلی Django همچنین تعدادی از برنامه های موجود در بسته Contrib خود را شامل می شود که می توان به موارد زیر اشاره کرد:
یک سیستم تایید هویت extensible
رابط کاربری اداری پویا
ابزار برای تولید خوراک RSS و Atom syndication
ابزار برای تولید نقشه های سایت گوگل
یک چارچوب برای ایجاد برنامه های کاربردی GIS
مقدمات و طبقه بندی سرور
فریم ورک Django را می توان در رابطه با آپاچی یا Ngixn با استفاده از WSGI یا کوکی با استفاده از فلوت اجرا کرد. Django نیز شامل توانایی راه یک سرورFastCGI می شود که امکان استفاده از پشت هر وب سروری که از FastCGI پشتیبانی می کند را می دهد (مانند Lighttpd یا Hiawatha). این چارچوب همچنین می تواند در رابطه با python در هر سرور درخواست Java EE مانند GlassFish یا JBoss اجرا شود.
ویژگی های خاص
این چارچوب برای کمک به توسعه دهندگان طراحی شده است تا برنامه ها را هر چه سریع تر و در اسرع وقت به اتمام رساند.
اطمینان
این چارچوب امنیت را به طور جدی ایفا می کند و به توسعه دهندگان کمک می کند تا از بسیاری از خطا های امنیتی مشترک جلوگیری کنند.
فوق العاده مقیاس پذیر
برخی از شلوغ ترین سایت ها در وب، توانایی این چارچوب را به سرعت و انعطاف پذیری در مقیاس می گیرند.
مزایا و معایب برنامه نویسی جنگو
فریم ورک جنگو با استفاده از زبان برنامه نویسی پایتون پیادهسازی میشود. از این رو کار طراحی وب سایت را برای برنامه نویسان آسانتر کرده است. برنامهنویسان میتوانند با استفاده از قوانین دستوری پایتون، صحت کدها را بررسی کرده و آنها را ذخیره کنند. علاوه بر این میتوانند برخی فعالیتها را بدون نوشتن کد انجام داده و فرآیند توسعه وب سایت را تسریع دهند.
توسعه وب سایتهای سفارشی با سرعت بالا
جنگو یکی از کاملترین فریم ورکهای توسعه وب در پایتون میباشد. قوانین طراحی آن به شکلی برنامهریزی شده که زمان مورد نیاز برای توسعه وب سایت را تا حد امکان کاهش دهند. توسعهدهندگان با استفاده از امکانات جنگو، می توانند به سرعت برای طیف گسترده ای از نیازهای تجاری، وب سایت طراحی کنند. اغلب پایتون نویسانی که برای رسیدن به اهداف پروژه زمان کمی در اختیار دارند، از فریم ورک جنگو استفاده می کنند.
برای ایجاد یک وب سایت، توسعه دهندگان به ابزارهای زیادی نیاز دارند. در اغلب زبان های برنامه نویسی برای ایجاد یک وب سایت باید از منابع زیادی کمک بگیرند. اما در فریم ورک جنگو کدهای مربوط به دستورات تغییر پایگاه داده، قالبهای HTML، مسیریابی URL، مدیریت نشست و امنیتی نیز مهیا شده است. این قابلیت منجر به تسریع روند طراحی وبسایت می گردد.
برای اینکه با مفهوم جنگو چیست آشنا شویم باید بدانیم که این روزها کاربران با دستگاهها و سیستمهای مختلفی به وب سایتها متصل میشوند. از آنجایی که جنگو سیستم عاملهای بزرگی همچون ویندوز، لینوکس و مک را پشتیبانی میکند، قابل دسترس بودن وب سایت را افزایش میدهد. علاوهبراین، به دلیل وجود سیستم ORM در جنگو بهراحتی میتوان با اغلب پایگاه دادهها کار کرد.
امکانات امنیتی جنگو چیست
قابلیت های امنیتی موجود در جنگو منجر می گردد تا وب سایتهای ایجاد شده در برابر حملات امنیتی همچون تزریق اسکریپت از طریق وبگاه، تزریق SQL و جعل درخواست میان وبگاه، ایمن باشند. در عین حال، این فریم ورک میتواند اشتباهات متداول کد نویسی را تشخیص داده و امنیت وب سایت را افزایش دهد.
معایب برنامه نویسی با فریم ورک جنگو چیست
امکانات منحصر به فرد جنگو منجر میشود که برنامه نویس بتواند وب سایتهای بزرگ و پیچیده ای را طراحی کند. اما در ساخت یک وب سایت ساده و کوچک به تمامی این امکانات نیازی نیست و وجود آنها باعث کندشدن سایتهای کوچک میشود.
اگر بخواهید برای طراحی وبسایتهای کوچک از این فریم ورک استفاده کنید، برای تقویت عملکرد وب سایت خود باید به دنبال راه کار باشید.در یک فرآیند نمی توان چندین درخواست را به صورت همزمان اجرا کرد
اغلب فریمورکهای موجود در بازار میتوانند در آن واحد چندین درخواست را پردازش میکنند اما این امکان در جنگو وجود ندارد.
وابستگی شدت به سیستم ORM
وجود سیستم ORM در این فریم ورک، امکان اتصال به اغلب پایگاه دادهها را فراهم آورده است. اما سیستم ORM تعبیه شده در این فریمورک نسبت به سیستم مشابه در فریمورکهای دیگر، برخی از امکانات قدرتمند را در اختیار ندارد. علاوه بر این به توسعهدهنده اجازه استفاده کامل از امکانات SQL Toolkit و SQLAlchemy در پایتون را نمیدهد.
با این حال جنگو با استفاده از امکانات، افزونهها و ابزارهای پایتون در توسعه وب سایتهای سفارشی، به برنامهنویسان کمک زیادی کرده است. همچنین این فریم ورک مدام در حال تکامل میباشد تا بتواند جوابگوی نیازهای جدید توسعهدهندگان باشد.
ساختار جنگو چیست
در وب سایتهای سنتی وابسته به داده، برنامه تحت وب منتظر یک درخواست HTTP از مرورگر میماند. زمانی درخواستی دریافت میشود، با توجه به URL یا اطلاعاتی که در دادههای ارسالی یا دریافتی قرار دارند، پردازش میکند.
با توجه به درخواست دریافت شده ممکن است اطلاعات از پایگاه داده خوانده شده، در آن ذخیره گشته یا عمل دیگری انجام بگیرد. سپس برنامه پاسخ را به مرورگر ارسال میکند. در فریم ورک جنگو، کد هایی که هر کدام از این درخواست ها را پردازش میکنند، در یک گروه قرار داده شدهاند.
ساختار فریم ورک جنگو
آدرس اینترنتی یا URLS: با اینکه میتوان تمامی درخواستهای دریافتی را از طریق یک تابع مدیریت کرد، اما با نوشتن تابعی جداگانه برای مدیریت هر منبع میتوان برنامه را پایدار تر کرد. با استفاده از نقشه یاب URL میتوان با توجه به هر درخواست HTTP دریافتی، کاربر را به نمای مناسب هدایت کرد.
نما یا View
نما یک تابع مدیریت درخواست است که درخواست HTTP را دریافت کرده و به صورت HTTP به آن پاسخ میدهد. نما برای پاسخ به درخواست، میتواند با استفاده از مدلها به دادههای مورد نیاز دسترسی یافته و پاسخ را به فرم متناسب با قالب درمیآورد.
مدل ها (Models)
مدل ها جزء اشیای پایتون هستند که وظیفه آنها مشخص کردن ساختار دادههای برنامه تحت وب میباشد و امکان مدیریت (حذف، ویرایش و افزودن) رکوردهای پرس و جو و پایگاه داده را فراهم میکند.
قالب ها
فایلهای متنی هستند که ساختار یا چیدمان یک فایل را مشخص میکنند . یک نما میتواند با استفاده از یک قالب HTML، صفحه HTML ایجاد کند و با استفاده از مدلها، محتوای اصلی را نمایش دهد. با استفاده از قالب میتوان ساختار هر گونه فایلی را تعیین کرد
تشریح مدل دادهها
مدل ها ساختار دادههای ذخیره شده را تعیین می کنند. این ساختارها عبارتند از نوع فیلد، مقدار پیش فرض، حداکثر اندازه فیلد، گزینههای لیست انتخاب، متن راهنما و …. میباشند.
بحث مدل ها از بحث پایگاه داده جدا است و تعریف متفاوتی دارد. پس از اینکه پایگاه داده مورد نظر خود را انتخاب کردید، نیازی به تنظیم مستقیم آن ندارید. در واقع شما ساختار مدل خود را طراحی کرده و کدنویسیهای دیگر را نیز انجام میدهید، سپس جنگو کدهای شما را با پایگاه داده مرتبط میکند.