ویژگی‌های جدید در نسخه ۴ فریمورک جنگو
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 5 دقیقه

ویژگی‌های جدید در نسخه ۴ فریمورک جنگو

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

فریمورک جنگو چیست؟

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

معماری جنگو براساس ساختار MVT یا Model، View، Template کار کرده که نسبتا منحصر به فرد است. در این ساختار تمامی قسمت‌های اصلی توسعه نرم‌افزار به فایل‌های جداگانه‌ای تقسیم می‌شود. لایه Model برای توسعه و طراحی بانک اطلاعاتی با استفاده از ORM، لایه View برای توسعه بخش Business Logic (کار کرد کلی اپلیکیشن که با استفاده از توابع مختلف پیاده‌سازی می‌شود) و لایه Template که امور نمایشی وبسایت را برعهده دارد.

بروزرسانی

مهمترین نکته قابل توجه این است که جنگو نسخه ۴ تنها با نسخه‌های جدید پایتون یعنی ۳.۸ – ۳.۹ – ۳.۱۰ می‌تواند به خوبی کار بکند و از نسخه‌های قدیمی‌تر پشتیبانی بعمل نمی‌آورد.

نصب کردن و بروزرسانی

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

اما اگر از قبل جنگو روی سیستم عامل شما نصب بوده و حال نیاز دارید که نسخه آن را بروزرسانی کنید می‌توانید این کار را با اضافه کردن آرگومان –U در خط مربوط به دستور pip وارد کنید. به مثال زیر توجه کنید.

python -m pip install -U Django

عدم پشتیبانی

در نسخه ۴، جنگو از چندین نسخه مربوط به کتابخانه Third-parthy پشتیبانی نمی‌کند. در زیر می‌توانید چند مورد از این کتابخانه‌ها را مشاهده کنید.

PostgreSQL نسخه ۹.۶: از این به بعد جنگو تنها از نسخه ۱۰ به بالا از PostgreSQL پشتیبانی بعمل می‌آورد.

Oracle نسخه ۱۲: از این پس جنگو ۴ تنها از نسخه‌های بالاتر از ۱۹ اوراکل پشتیبانی بعمل می‌آورد.

در کنار این موارد کتابخانه‌ها و توابع زیر نیز در نسخه جدید جنگو پشتیبانی نمی‌شوند:

  • PostGIS 2.3
  • GDAL 2.0 و GEOS 3.5
  • cx_ORACLE 7.0
  • django.utils.text.unescape_entities() 
  • django.utils.http.is_safe url() 

ویژگی‌های جدید

ماژول زمان‌بندی zoneinfo

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

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

رندر فرم براساس تمپلیت‌ها

از این به بعد Formها، Formsetها و ErrorListها با استفاده از تمپلیت انجین (Template Engine) رندر می‌شوند. این تغییر برای ایجاد قابلیت سفارشی‌سازی بالا صورت گرفته است.

حال مقادیر مربوط به متد render می‌تواند به صورت دلبخواه وارد شود چرا که مقدار پیشفرض مربوط به template_name، context و renderer همگی None خواهد بود:

render(template_name=None, context=None, renderer=None)

در چنین حالتی اگر مقدار مشخصی وارد نشود مقادیر پیشفرض برابر خواهند بود با:

  • template_name()
  • get_context()
  • default_renderer

افزودن زبان جدید

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

محلی‌سازی

برای مشاهده زمان و تاریخ براساس منطقه زمانی و تنظیمات محلی خود جنگو یک بولین با نام USE_L10N در بخش تنظیمات خود دارد که در نسخه‌های قبلی به صورت پیشفرض برابر با مقدار False بود. اما حال در نسخه جدید این مقدار به True تغییر پیدا کرده است.

CSRF_TRUSTED_ORIGINS

CSRF_TRUSTED_ORIGINS  حاوی لیستی از منابع مطمئنی‌ست که درخواست‌های غیر امن را ارسال نخواهند کرد. در تغییرات نسخه جدید جنگو، این بخش به صورت حساس‌تری درآمده و برای تایید چنین منابعی از طرح‌های منحصر به فردی استفاده می‌کند.

scrypt password hasher

 scrypt password hasherقابلیت جدیدی است که به جنگو نسخه ۴ اضافه شده است. این قابلیت یک مرحله دیگر بر امنیت اپلیکیشن‌تان اضافه می‌کند. Scrypt مانند PBKDF2 برای انجام عملیات رمزنگاری و هشینگ پسوردها مورد استفاده قرار می‌گیرد اما این مورد که به تازگی توسعه یافته است بر موارد قدیمی پیشنهاد می‌شود.

تغییرات در unique constraints

با استفاده از تغییرات جدیدی که در ساختار UniqueConstraint بوجود آمده است حال می‌توانید unique constraints کاربردی‌تری را در مدل‌های خود ایجاد کنید.

پشتیبانی بهتر از Redis

در نسخه چهارم جنگو حال شما می‌توانید از طریق ماژول django.core.cache.backends.redis.RedisCache پشتیبانی بهتری برای کشینگ با استفاده از Redis را فراهم بیاورید.

تغییرات بسیار زیاد دیگری در نسخه جدید جنگو بوجود آمده که همه آن‌ها را می‌توانید صفحه تغییرات نسخه چهارم مشاهده کنید.

در پایان

در حال حاضر نسخه‌های ۴.۰.۱ و ۴.۰.۲ نیز منتشر شده است که هر کدام از این موارد باگ‌هایی که در نسخه اولیه (نسخه ۴) وجود داشت را به نحوی حل کرده است.

جنگو فریمورکی پیش‌رو بوده و مطمئنا در آینده با بروزرسانی‌های هیجان انگیز بسیار زیادی دیگری همراه می‌کند.

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
4.17 از 6 رای

/@arastoo
ارسطو عباسی
کارشناس تولید و بهینه‌سازی محتوا

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

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

ارسطو عباسی

کارشناس تولید و بهینه‌سازی محتوا

مقالات برگزیده

مقالات برگزیده را از این قسمت میتوانید ببینید

مشاهده همه مقالات