• 1403/08/20

تغییر حالت لیست محصولات :

سلام استاد وقت بخیر

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

  • 1403/08/21
  • ساعت 09:36

سلام خدمت شما دوست عزیز

این مشکل از جنگو نیست دوست من و به کد هم مربوط نمیشه

مشکل از اندازه تصویر محصولات هستش. از اونجایی که یکی از محصولات شما اندازه ی متفاوتی نسبت به بقیه داره ، موقع نمایش ترتیب به هم میریزه

یا باید از تصاویر با اندازه های یکسان استفاده کنین یا باید از sorl-thumbnail برای ایجاد thumbnail تصاویر استفاده کنین تا عکس محصولات شما به یک اندازه نمایش داده بشن

روش استفاده از این پکیج رو در دوره اموزش دادم دوست من. لطفا ویدیوها رو ادامه بدین :)


  • 1403/08/21
  • ساعت 14:36

بله از sorl thumbnail استفاده کردم


  • 1403/08/22
  • ساعت 13:13

پس مشکل از متن محصولی هستش که توی 2 خط نمایش میده

یا باید با استفاده از filter های جنگو اون رو مدیریت کنین که بیشتر از 1 خط نشه یا با استفاده از css این مورد رو مدیریت کنین


  • 1403/08/23
  • ساعت 00:58

امکانش هست قطعه کدش رو لطف کنید نمیدونم تو فیلتر چجوری باید هندل کنم این مورد رو


  • 1403/08/23
  • ساعت 08:16

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

منظور بنده دستور 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 کاراکتر نمایش داده بشه نه بیشتر

البته میتونین مقدارش رو خودتون به صورت دلخواه تنظیم کنین

 


logo-samandehi