• پنجشنبه ۱۳ اردیبهشت ۱۴۰۳
نویسنده : سید طه آیت اللهی
آخرین آپدیت : 1400/09/14
زمان مورد نیاز برای خواندن : 12

آموزش شخصی سازی کامل ادمین جنگو و تغییر تم ظاهری به همراه فونت فارسی در فریمورک جنگو(django)

آموزش شخصی سازی کامل ادمین جنگو و تغییر تم ظاهری به همراه فونت فارسی در فریمورک جنگو(django)

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

نصب تم روی ادمین جنگو 

برای اینکار شما میتوانید از کتابخانه های مختلف استفاده کنید اما ما توی این آموزش از کتابخانه ی django-admin-interface استفاده میکنیم که هم برای تمامی نسخه های جنگو کار میکند و تم هایش قابل تغیر نیز هست

آدرس اصلی این کتابخانه روی pypi 

django-admin-interface · PyPI

آدرس این کتابخانه روی گیت هاب

GitHub - fabiocaccamo/django-admin-interface: django's default admin interface made customizable. popup windows replaced by modals.

همانطور که میدانید برای نصب این کتابخانه میتوانید از دستور pip install django-admin-interface استفاده کنید.

آموزش کار با کتابخانه ی django-admin-interface 

پس از نصب این کتابخانه وارد تنظیمات پروژه ی جنگو خود میشویم (setting.py) و در اینجا لیست app های نصب شده در پروژه را به این صورت تغییر خواهیم داد

INSTALLED_APPS = (
    #...
    'admin_interface',
    'flat_responsive', # only if django version < 2.0
    'flat', # only if django version < 1.9
    'colorfield',
    #...
    'django.contrib.admin',
    #...
)

اگر ورژن جنگو ما بالاتر از 2 بود دو گزینه ی flat_responsive و flat رو نیاز نداریم 

نکته : دقت داشته باشید که این موارد رو حتما بالای django.contrib.admin باید قرار بدید.

سپس در همان فایل setting.py اگر ورژن جنگو بالا تر از 3 بود دو متغیر 

# only if django version >= 3.0
X_FRAME_OPTIONS = 'SAMEORIGIN'
SILENCED_SYSTEM_CHECKS = ['security.W019']

را اضافه خواهیم کرد.

نکته : برای فهمیدن ورژن جنگو کافیست دستور python -m django --version را در محیط cmd خود وارد کنید.

این app هایی که به تنظیمات اضافه کردیم یکسری جدول در دیتابیس باید بسازند تا تم ها رو در آنها مدیریت کنند بنابراین ما به دستور 

python manage.py migrate 

نیاز داریم تا تغیرات مورد نیاز این کتابخانه روی دیتابیس اعمال شود.

اگر در محیط سرور واقعی هستید نیاز دارید که دستور python manage.py collectstatic را یک بار وارد کنید تا فایل های css , js در این کتابخانه در محلی که شما فایل های static رو سرو میکنید انتقال یابد 

اما اگر در محیط لوکال و توسعه هستید نیاز به این دستور نیست.

تا همینجا اگر دستور python manage.py runserver را وارد کنید و وارد ادمین شوید میبینید که تم آن تغییر کرده و در app ها یک , Themes دارید.

ظاهر اولیه ی کتابخانه ی django-admin-interface

شما با وارد شدن به Themes  و به کمک دکمه ی ADD THEME به راحتی میتوانید یک تم جدید را به صورت کامل خودتان بسازید.

اضافه کردن یک تم جدید به جنگو

سپس با پر کردن فیلد های خواسته شده تم را ساخته و آنرا در دیتابیس ذخیره کنید.

فیلد های django-admin-interface

چگونه تم های آماده روی django-admin-interface نصب کنیم؟

برای اینکار کافیست از دستور مشابه زیر استفاده کنید:

django theme

python manage.py loaddata admin_interface_theme_django.json

bootstrap theme

python manage.py loaddata admin_interface_theme_bootstrap.json

Foundation theme

python manage.py loaddata admin_interface_theme_foundation.json

U.S. Web Design Standards theme

python manage.py loaddata admin_interface_theme_uswds.json

با هر کدوم از دستورات یک تم جدید یه قسمت Themes اضافه میشود.

djang themes | تم های ادمین جنگو

راست چین کردن و فارسی سازی ادمین جنگو

برای اینکار کافیست به فایل setting.py در پروژه رفته و متغیر LANGUAGE_CODE را پیدا کرده و مقدار آن را برابر با fa قرار دهید.

LANGUAGE_CODE = 'fa'

حال اگر پروژه را دوباره run کنید و وارد ادمین شوید میبینید که فارسی شده است.

راست چین و فارسی کردن پنل ادمین جنگو

همانطور که میبینید تنها کلماتی که فارسی نشده است نام کلاس و نام app ای هست که ما خودمان ساختیم و به پروژه اضافه کردیم

قراردادن نام دلخواه فقط برای نمایش در ادمین جنگو برای مدل ها (models)و اپ ها(apps)

برای تغییر نام مدل به فایل models.py مربوطه رفته و برای کلاس مدل خود یک کلاس متا (meta) تعریف میکنیم و در آن مقدار verbose_name را برابر به اسمی که برای یک ردیف از جدول مد نظر است و مقدار verbose_name_plural را برابر با اسم مجموع خط ها که میخواهیم قرار میدهیم 

from django.db import models


class Product(models.Model):
    price = models.IntegerField()
    description = models.TextField()
    title = models.CharField(max_length= 200)
    image = models.ImageField(upload_to = "product")
    class Meta:
        verbose_name_plural = "محصولات"
        verbose_name = "محصول"

و برای تغییر نام app در ادمین وارد پوشه ی app مربوطه میشویم و فایل apps.py را به صورت زیر تغییر میدهیم.

from django.apps import AppConfig


class HomeConfig(AppConfig):
    name = 'home'
    verbose_name = "خانه"

سپس در تنظیمات INSTALLED_APPS را به شکل زیر تغیر داده و کلاس HomeConfig در پوشه ی home را به عنوان تنظیمات اصلی app معرفی میکنیم.

INSTALLED_APPS = [
    'admin_interface',
    'colorfield',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'home.apps.HomeConfig',
]

حال اگر وارد ادمین شوید دوباره میبینید که آن دو کلمه نیز فارسی شده اند.

در آموزش بعدی یاد خواهیم گرفت که چگونه از آپشن های فیلتر ، سرچ و اکشن های مختلف در مدل ها در پنل ادمین استفاده کنیم 

آموزش بعدی (آموزش قراردادن سرچ، فیلتر، اکشن ها و ... در پنل ادمین فریمورک جنگو(django) | tmayt)

آموزش قبلی (آموزش کار با پنل ادمین جنگو واضافه کردن مدل های دیتابیس به پنل در فریمورک جنگو(django) | tmayt)

نظرات(4)


OnewPlelm

ApoDox stored in PBS Figure 4B, pH 7 <a href=http://cialis.mom>best price cialis 20mg</a>


1401/11/06 پاسخ


سلام . ممنون واقعا عالی بود .


1401/09/21 پاسخ


عالیه


1401/09/21 پاسخ


ensiye

سلام ممنون خیلی کامل توضیح دادین میشه در مورد لینک 2 کمبوباکس یه توضیحی بدین


1401/08/01 پاسخ

نظر خود را وارد کنید