Django Expert
9.71K subscribers
991 photos
81 videos
112 files
1.34K links
✔️ بزرگترین کانال و جامعه جنگو به فارسی
Contact:
@majid_aghamohamad
@BobyCloud

Group:
@DjangoIR

Our Site ;coming soon:
🔜 PyExpert.ir

تبلیغات نداریم فقط درج آگهی های استخدامی مرتبط پذیرفته می‌شود
Download Telegram
✔️ اینپورت کردن ماژول‌ها از طریق رشته

یکی از پرکاربرد‌ترین توابع در ساختار جنگو تابع import_string است. اگر به تنظیمات جنگو دقت کرده باشید، تمامی ماژول‌های پیش‌فرض مثل MIDDLEWARE و INSTALLED_APPS با آدرس کامل آن ماژول نوشته شده‌اند. جنگو با استفاده از مسیر هر ماژول، آن را به عنوان یک شئ اینپورت کرده و در فضای پایتون استفاده می‌کند.
برای مثال به جای اینپورت کردن کلاس ValidationError به این صورت:

from django.core.exceptions import ValidationError

می‌توانید آن را به نحوه زیر وارد کنید:

from django.utils.module_loading import import_string
ValidationError = import_string('django.core.exceptions.ValidationError')

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

مشاهده در مستندات جنگو
#django_tips
#Django
〰️〰️〰️〰️〰️〰️
© @DjangoEx
✔️ ایجاد فیلتر دلخواه برای تمپلیت جنگو

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

myapp/
templatetags/
\__init__.py
myapp_extras.py

توجه داشته باشید که اپلیکیشن مورد نظر حتما باید به فهرست INSTALLED_APPS اضافه بشه.
در فایل مورد نظر هر تعداد فیلتری که می‌خواهید اضافه کنید:

from django import template

register = template.Library()

@register.filter(name="custom_filter")
def custom_filter(value, arg):
return value + " " + arg

در ابتدا یک شئ از کتابخانه مربوط به Template Engine ایجاد کردیم و به صورت دکوریتور از آن برای افزودن فیلتر جدید استفاده کردیم. پارامتر value مقدار داده‌ای است که این فیلتر روی آن اعمال شده و arg پارامتر اضافه‌ای است که در تمپلیت فرستادیم که وجود آن اجباری نیست.
حال با این روش از آن استفاده می‌کنیم:

{% load myapp_extras %}

{{ somevariable|custom_filter:"TEST" }}

در نتیجه مقدار TEST به داده ما اضافه می‌شود.
مطالعه بیشتر

#django #django_tips
〰️〰️〰️〰️〰️
©️ @DjangoEx