
روز ۱۸: جنگو Admin و شخصی سازی آن
جنگو Admin یکی از ویژگیهای قدرتمند و متمایز جنگو است که امکان مدیریت دادهها و مدلها را بدون نیاز به نوشتن صفحات مدیریت سفارشی فراهم میکند. این ابزار به صورت پیشفرض ارائه میشود و رابطی کاربرپسند برای مدیریت رکوردهای پایگاه داده در اختیار توسعهدهندگان قرار میدهد. استفاده از پنل Admin باعث میشود بتوانید دادهها را اضافه، ویرایش و حذف کنید و پروژه را به شکل حرفهای مدیریت نمایید. در این روز از دوره جنگو، با نحوه استفاده از Admin و شخصیسازی آن آشنا میشویم تا مدیریت دادهها دقیقتر و هماهنگتر انجام شود.
فعالسازی جنگو Admin
برای استفاده از Admin، ابتدا باید اپلیکیشن admin را در settings پروژه فعال کنیم که به صورت پیشفرض در INSTALLED_APPS وجود دارد. سپس مدلهای موردنظر را در فایل admin.py اپلیکیشن ثبت میکنیم. این ثبت باعث میشود مدلها در پنل مدیریت نمایش داده شوند و قابلیت افزودن، ویرایش و حذف رکوردها فراهم شود. فعالسازی Admin یکی از اولین قدمها برای مدیریت حرفهای دادهها در پروژههای جنگو است.
from django.contrib import admin from .models import Student, Course admin.site.register(Student) admin.site.register(Course)
با این کار، مدلهای Student و Course در پنل مدیریت قابل مشاهده و مدیریت هستند و میتوان دادهها را بدون نوشتن صفحات وب مدیریت کرد.
سفارشیسازی نمایش مدلها
جنگو Admin امکان شخصیسازی نحوه نمایش مدلها را نیز فراهم میکند. میتوان فیلدهای قابل نمایش، فیلترها، جستجو و مرتبسازی را مشخص کرد. این ویژگی باعث میشود پنل مدیریت حرفهای و مناسب نیازهای پروژه باشد و دادهها به شکل استاندارد و سازمانیافته نمایش داده شوند. با استفاده از کلاسهای مدل Admin میتوان رفتار پنل مدیریت را به دلخواه تغییر داد و تجربه کاربری بهتری ایجاد کرد.
class StudentAdmin(admin.ModelAdmin):
list_display = ('name', 'email', 'is_active')
search_fields = ('name', 'email')
list_filter = ('is_active',)
admin.site.register(Student, StudentAdmin)در این مثال، ستونهای قابل مشاهده در لیست، فیلدهای جستجو و فیلترها مشخص شدهاند و پنل مدیریت حرفهایتر و کاربردیتر شده است.
افزودن فیلدهای محاسباتی و سفارشی
یکی از قابلیتهای پیشرفته جنگو Admin، افزودن فیلدهای محاسباتی و سفارشی است که در مدل وجود ندارند اما در پنل مدیریت نمایش داده میشوند. این فیلدها میتوانند مقادیر محاسبه شده، وضعیتها یا دادههای مرتبط را نشان دهند. این امکان باعث میشود اطلاعات مفید و کاربردی برای مدیر سایت به راحتی در دسترس باشد و مدیریت دادهها سریعتر انجام شود.
class EnrollmentAdmin(admin.ModelAdmin):
list_display = ('student_name', 'course_title', 'get_course_duration')
def get_course_duration(self, obj):
return obj.course.duration
get_course_duration.short_description = 'مدت دوره'
admin.site.register(Enrollment, EnrollmentAdmin)در این مثال، یک فیلد محاسباتی برای نمایش مدت دوره در پنل مدیریت اضافه شده است که تجربه کاربری و مدیریت اطلاعات را بهبود میبخشد.
استفاده از Inline Admin برای نمایش دادههای مرتبط
جنگو Admin امکان نمایش دادههای مرتبط در همان صفحه مدل را نیز فراهم میکند. با استفاده از Inline Admin میتوان دادههای مرتبط با یک مدل را مستقیماً در همان صفحه مشاهده و مدیریت کرد. این ویژگی برای پروژههای بزرگ و پیچیده که دارای روابط بین مدلها هستند، بسیار مفید است و باعث افزایش سرعت و دقت مدیریت دادهها میشود.
class EnrollmentInline(admin.TabularInline):
model = Enrollment
extra = 1
class StudentAdmin(admin.ModelAdmin):
inlines = [EnrollmentInline]
admin.site.register(Student, StudentAdmin)با این کار، تمامی ثبتنامهای یک دانشآموز در همان صفحه مشاهده و مدیریت میشوند و نیازی به رفتن به صفحات جداگانه نیست.
نکات حرفهای در شخصیسازی Admin
برای پروژههای بزرگ، شخصیسازی Admin اهمیت بالایی دارد. استفاده از list_display، search_fields، list_filter و Inline Admin باعث افزایش کارایی، سرعت و تجربه کاربری بهتر میشود. همچنین افزودن فیلدهای محاسباتی و تنظیم دسترسی کاربران به مدلها و فیلدها باعث میشود پنل مدیریت حرفهای، امن و منعطف باقی بماند. رعایت این نکات باعث میشود مدیریت دادهها سریع، قابل اعتماد و استاندارد باشد.
جمعبندی روز هجدهم
در روز هجدهم، با جنگو Admin و نحوه فعالسازی آن آشنا شدیم و یاد گرفتیم چگونه مدلها را ثبت کنیم و دادهها را مدیریت نماییم. همچنین با شخصیسازی نمایش مدلها، افزودن فیلدهای محاسباتی، استفاده از فیلتر، جستجو و Inline Admin آشنا شدیم. تسلط بر جنگو Admin باعث میشود مدیریت پروژههای جنگو سریع، دقیق و حرفهای باشد و پایهای محکم برای ایجاد سیستمهای مدیریت داده استاندارد فراهم شود. یادگیری درست این بخش به توسعهدهندگان کمک میکند تا پروژههای بزرگ را بدون پیچیدگی و با امنیت بالا مدیریت کنند.