✔️ اینپورت کردن ماژولها از طریق رشته
یکی از پرکاربردترین توابع در ساختار جنگو تابع import_string است. اگر به تنظیمات جنگو دقت کرده باشید، تمامی ماژولهای پیشفرض مثل MIDDLEWARE و INSTALLED_APPS با آدرس کامل آن ماژول نوشته شدهاند. جنگو با استفاده از مسیر هر ماژول، آن را به عنوان یک شئ اینپورت کرده و در فضای پایتون استفاده میکند.
برای مثال به جای اینپورت کردن کلاس ValidationError به این صورت:
مشاهده در مستندات جنگو
#django_tips
#Django
〰️〰️〰️〰️〰️〰️
© @DjangoEx
یکی از پرکاربردترین توابع در ساختار جنگو تابع 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 استفاده کنید.
برای اینکار کافیه یک اپلیکیشن جدا بسازید یا در یکی از اپلیکیشنهای موجود چنین ساختاری رو ایجاد کنید:
در فایل مورد نظر هر تعداد فیلتری که میخواهید اضافه کنید:
حال با این روش از آن استفاده میکنیم:
مطالعه بیشتر
#django #django_tips
〰️〰️〰️〰️〰️
©️ @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
Django Expert
✔️ ایجاد فیلتر دلخواه برای تمپلیت جنگو جنگو به شما این قابلیت رو میده که فیلترهای دلخواه رو به پروژه اضافه و در template استفاده کنید. برای اینکار کافیه یک اپلیکیشن جدا بسازید یا در یکی از اپلیکیشنهای موجود چنین ساختاری رو ایجاد کنید: myapp/ templatetags/…
شما هم اگر ترفند جالبی از جنگو بلدید که فکر میکنید برای بقیه جالبه اون رو در گروه @DjangoIR با هشتگ #django_tips ارسال کنید تا با اسم خودتون داخل کانال قرار بگیره :)