سلام استاد وقت بخیر
من سایت فروشگاهی رو طبق تدریس شما پیاده کردم اما بعضی اوقات لیست محصولات بهم میخوره و مثل شکل زیر میشه ممنون میشم راهنمایی کنید
سلام خدمت شما دوست عزیز
این مشکل از جنگو نیست دوست من و به کد هم مربوط نمیشه
مشکل از اندازه تصویر محصولات هستش. از اونجایی که یکی از محصولات شما اندازه ی متفاوتی نسبت به بقیه داره ، موقع نمایش ترتیب به هم میریزه
یا باید از تصاویر با اندازه های یکسان استفاده کنین یا باید از sorl-thumbnail برای ایجاد thumbnail تصاویر استفاده کنین تا عکس محصولات شما به یک اندازه نمایش داده بشن
روش استفاده از این پکیج رو در دوره اموزش دادم دوست من. لطفا ویدیوها رو ادامه بدین :)
بله از sorl thumbnail استفاده کردم
پس مشکل از متن محصولی هستش که توی 2 خط نمایش میده
یا باید با استفاده از filter های جنگو اون رو مدیریت کنین که بیشتر از 1 خط نشه یا با استفاده از css این مورد رو مدیریت کنین
امکانش هست قطعه کدش رو لطف کنید نمیدونم تو فیلتر چجوری باید هندل کنم این مورد رو
فکر میکنم اشتباه برداشت کردین دوست من
منظور بنده دستور filter ای که داخل Model ها استفاده میکردیم نیست
در جنگو یک ساختاری وجود داره تحت عنوان template tag که یکی از این موارد filter هستش
باید یک template tag از نوع filter ایجاد کنین که متن مورد نظر رو به عنوان ورودی میگیره و اون رو کوتاه میکنه
1 - روی app مورد نظر کلیک راست کنین و گزینه ی add رو باز کرده و گزینه ی python package رو انتخاب کنین
اسمش رو بذارید templatetags ( نام این پکیج باید دقیقا همین باشه وگرنه کار نمیکنه )
2 - یک فایل پایتون با نام دلخواه ایجاد کنین و کد زیر رو داخلش قرار بدین :
from django import template
register = template.Library()
@register.filter(name='truncate_20')
def truncate_20(value):
if isinstance(value, str) and len(value) >= 20:
return value[:20] + ' ...'
return value
3 - حالا وارد فایل html ای بشید که روی محصولات حلقه زدید برای نمایش
4 - بالای این صفحه دستور load رو بنویسین . اگر دقت کنین اسم فایل پایتون شما رو نمایش میده مثلا اگر اسم فایل پایتونی که ایجاد کردین products_filters باشه، به این صورت باید از load استفاده کنین :
{% load products_filters %}
5 - حالا جایی که دارین عنوان محصول رو نمایش میدین از این فیلتر میتونین استفاده کنین :
{{ product.title|truncate_20 }}
این کار باعث میشه تا از عنوان محصول نهایتا 20 کاراکتر نمایش داده بشه نه بیشتر
البته میتونین مقدارش رو خودتون به صورت دلخواه تنظیم کنین