این مطلب بروزرسانی خواهد شد.
نکته اول Django:
Django به صورت پیشفرض از استاندارد i18n و l10n پشتیبانی می کند.
i18n مخفف عبارت Internationalization است. یک i و ۱۸ حرف سپس یک n .خارجی ها هم آره.
l10n هم مخفف عبارت localization است.
نکته:
برای ترجمه ی متن در قالب های جنگو باید از
{% trans %}
استفاده کرد و متن باید بین ” ” باشد.
نکته دوم Django:
در صورتی که در فرم ها بخواهیم از FileField استفاده کنیم. باید خصوصیت
enctype=”multipart/form-data”
را به فرم اضافه کنیم به صورت زیر:
<form method="post" action="" enctype="multipart/form-data"> {% csrf_token %} {{ form.as_p }} <input type="submit" value="ارسال فایل"/> </form>
اگر این خصوصیت را استفاده نکنیمُ خطا خالی بودن فیلد نمایش داده خواهد شد.
نکته سوم Django:
عبارت هایی مثل
{% if %}
در جنگو template tag هستند. در جنگو می توانیم custom template tag بسازیم.
تنها کافی است یک فولدر در app با نام templatetags ایجاد کنیم و custom tag های خود را در آن ایجاد کنیم.
نکته چهارم Django:
در جنگو self join یا recursive relationship به صورت زیر در مدل تعریف می شود:
models.ForeignKey(‘self’, null=True, related_name=’RELATED_NAME’)
نکته پنجم Django:
در جنگو برای اینکه تاریخ و زمان سرور با سیستم کلاینت یکی باشد باید در فایل settings.py مقدار Time_Zone را تغییر دهیم.
برای نمونه در صورتی که بخواهیم از time zone تهران استفاده کنیم باید به صورت زیر عمل کنیم:
TIME_ZONE = ‘Asia/Tehran’
نکته ششم Django:
برای ساختن فیلد Image در مدل های جنگو می توان از
models.ImageFiled
استفاده کرد. برای استفاده از این فیلد لازم است پکیج Pillow نصب باشد، می توان با دستور زیر نصب کرد:
pip install Pillow
نکته هفتم Django:
برای گرفتن یک رنج از آرایه در template از فیلتر Slice به صورت زیر می توان استفاده کرد:
{% for product in product_list.all | slice:”:12″ %}
نکته هشتم Django:
در template ها برای نمایش تصویر از url به صورت زیر استفاده می شود:
product.pic.url
نکته نهم Django:
برای اینکه بتوانیم از تگ های HTML در template ها استفاده کنیم باید از فیلتر safe استفاده کنیم، به صورت زیر:
{{ product.content | safe }}
در این حالت اگر در محتوا تگ HTML وجود داشته باشد، توسط مرورگر به درستی تفسیر می شود.
نکته دهم Django:
یکی از استفاده های widget تغییر حالت پیش فرض یک فیلد در forms.py است، در مثال زیر نوع فیلد CharFiled است، اما در خروجی Textarea نمایش داده می شود:
comment = forms.CharField(widget=forms.Textarea)
نکته یازدهم Django:
مقادیری که برای on_delete در فیلدهای خارجی می توان تعریف کرد:
- CASCADE
- PROTECT
- SET_NULL
- SET_DEFAULT
- SET()
- DO_NOTHING
نکته دوازدهم Django:
اگه از دستور python manage.py sqlmigrate استفاده کنیم، جنگو کدهای sql ای که قراره اجرا کنه رو به ما میده. میتونیم این کدهارو به مسوول دیتابیس بدیم که اجرا کنه
نکته سیزدهم Django:
تفاوت auto_now با auto_now_add :
مقدار auto_now هروقت رکورد را ویرایش کنیم، زمان الان با زمان قبلی جایگزین میشه پس در کل برای آپدیت استفاده میکنند.
اما auto_now_add را برابر با true قرار بدهیم فقط تایم زمان ساخت را قبول میکند و هر چقدر رکورد را ویرایش کنیم زمان تغییر نمی کند و همان زمان درج رکورد باقی می ماند.
نکته چهاردهم Django:
وقتی بخواهیم یک URL Pattern را از app دیگری include کنیم حتما باید از ()include استفاده کنیم، اما admin.site.urls در این مواقع یک استثنا است. و به include نیاز ندارد.
نکته پانزدهم Django:
تفاوت path و re_path در url_pattern این است که re_path همانند نسخه های 1 جنگو، از Regex برای routing استفاده می کند.