در دسامبر سال ۲۰۲۱ تیم توسعه جنگو، نسخه چهارم این فریمورک را که شامل بروزرسانیهای بسیار مهمی بود ارائه کردند. در این بروزرسانیها میتوان بهبودهایی در امکانات سفارشیسازی، قالبها، 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 را فراهم بیاورید.
تغییرات بسیار زیاد دیگری در نسخه جدید جنگو بوجود آمده که همه آنها را میتوانید صفحه تغییرات نسخه چهارم مشاهده کنید.
در پایان
در حال حاضر نسخههای ۴.۰.۱ و ۴.۰.۲ نیز منتشر شده است که هر کدام از این موارد باگهایی که در نسخه اولیه (نسخه ۴) وجود داشت را به نحوی حل کرده است.
جنگو فریمورکی پیشرو بوده و مطمئنا در آینده با بروزرسانیهای هیجان انگیز بسیار زیادی دیگری همراه میکند.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید