मेरे पास खोज क्षेत्र है, मैं उपयोगकर्ता को छँटाई का विकल्प देना चाहता हूँ ताकि उपयोगकर्ता खोज परिणाम में निम्न से उच्च से निम्न की कीमत के लिए छँटाई कर सके, लेकिन मेरे विचार को प्राप्त करने में असमर्थ

class search_item(View):
    def get(self, request):
        search_item = request.GET.get('search')
        if search_item:
            items = Item.objects.filter(Q(name__icontains=search_item)|Q(color__icontains=search_item))
            sort_by = request.GET.get("sort", "l2h") 
            if sort_by == "l2h":
                item = items.order_by("price")
            elif sort_by == "h2l":
                item = items.order_by("-price")
            return render(request, 'search_result.html', {'items':item})

यह खोज करता है लेकिन मेरे कोड में जो गलत है उसे छाँटने में असमर्थ है

एचटीएमएल

 <li><a class="dropdown-item" href="?sort=l2h">Low To High</a></li>
 <li><a class="dropdown-item" href="?sort=h2l">High To Low</a></li>

मेरा मॉडल

class Item(models.Model):
    categories = models.ForeignKey(Categories, on_delete=models.CASCADE, related_name='our_items')
    subcategories = models.ForeignKey(Subcategories, on_delete=models.CASCADE, related_name='products')
    name = models.CharField(max_length=200, blank=False)
    swag = models.BooleanField(blank=False, default=False)
    male = models.BooleanField(blank=False, default=False)
    female = models.BooleanField(blank=False, default=False)
    unisex = models.BooleanField(blank=False, default=False)
    first = models.ImageField(upload_to='items', blank=False)
    second = models.ImageField(upload_to='items', blank=False)
    third = models.ImageField(upload_to='items', blank=True)
    color = models.CharField(max_length=30, blank=False, default='Black')
    material = models.CharField(max_length=50, blank=False, default='Plastic' )
    price = models.FloatField(blank=False,)
    description = models.TextField(blank=True)
    
    @staticmethod
    def get_items_by_id(ids):
        return Item.objects.filter(id__in = ids)

    def __str__(self):
        return self.name

मेरा यूआरएल

path('search-result/',search_item.as_view(),name='search')

त्रुटि जब मैं reuslted आइटम मूल्य के आधार पर छँटाई करना चाहता हूँ देखें products.views.search_item एक HttpResponse ऑब्जेक्ट वापस नहीं किया। यह बदले में कोई नहीं लौटा।

वापस ट्रेस करें

Traceback (most recent call last):
  File "C:\Users\mithlesh\Desktop\coolbuy2.0\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\mithlesh\Desktop\coolbuy2.0\lib\site-packages\django\core\handlers\base.py", line 188, in _get_response
    self.check_response(response, callback)
  File "C:\Users\mithlesh\Desktop\coolbuy2.0\lib\site-packages\django\core\handlers\base.py", line 309, in check_response
    raise ValueError(

Exception Type: ValueError at /search-result/
Exception Value: The view products.views.search_item didn't return an HttpResponse object. It returned None instead.

देखें जिसमें छँटाई कार्य पूरी तरह से ठीक है

class Product(View):
    def get(self, request, subcategory_id):
        subcategory = get_object_or_404(Subcategories, pk=subcategory_id)

        sort_by = request.GET.get("sort", "l2h") 
        if sort_by == "l2h":
           products = subcategory.products.order_by("price")
        elif sort_by == "h2l":
           products = subcategory.products.order_by("-price")
        sort_by = request.GET.get("sort", "newest")
        if sort_by == "unisex":
            products = subcategory.products.order_by("-unisex")
        elif sort_by == "newest":
            products = subcategory.products.order_by("-update_at")
        sort_by = request.GET.get("sort", "male")
        if sort_by == "male":
            products = subcategory.products.order_by("-male")
        elif sort_by == "female":
            products = subcategory.products.order_by("-female")

        category_list = Categories.objects.all()
        return render (request, 'products.html',{"subcategory_list" : products, 'category_list': category_list })
-2
Blackranger 27 अगस्त 2021, 00:06
आप वास्तव में कौन सा यूआरएल देखते हैं?
 – 
Willem Van Onsem
27 अगस्त 2021, 00:07
क्या आप कह रहे हैं कि निम्न से उच्च कार्य करता है लेकिन उच्च से निम्न कार्य नहीं करता है? या कि यह कीमत के आधार पर बिल्कुल भी छाँटता नहीं है? क्या प्रत्येक स्थिति में sort_by सही मान है?
 – 
jarmod
27 अगस्त 2021, 00:11
1
मैं Django को यह समझने के लिए पर्याप्त रूप से नहीं जानता कि चीजें कैसे जुड़ी हुई हैं, लेकिन आपकी get() विधि पूरी तरह से कोई नहीं लौटाती है यदि search_item गलत है। क्या आपने यहां कोई डिबगिंग की है? क्या आप सुनिश्चित हैं कि आपका फ़िल्टर/order_by कोड वास्तव में निष्पादित हो रहा है? कम से कम, यदि search_item गलत है या raise Http404(...) या कोई अन्य HTTP प्रतिक्रिया ऑब्जेक्ट है, तो आपके प्राप्त फ़ंक्शन को शायद कुछ वापस करना चाहिए।
 – 
jarmod
27 अगस्त 2021, 15:48
1
वे थोड़े अलग हैं। आपका उत्पाद/दृश्य/कोड प्राप्त करना सशर्त नहीं है। आपका search_item/view/get कोड है सशर्त - search_item के सत्य होने पर यह सशर्त है। कृपया search_item का मान लॉग करें और items (फ़िल्टर कॉल के बाद) और item (order_by कॉल के बाद) का मान भी लॉग करें।
 – 
jarmod
27 अगस्त 2021, 16:38
1
क्या आप अनुरोधित डिबगिंग जानकारी जोड़ सकते हैं?
 – 
jarmod
27 अगस्त 2021, 17:07

1 उत्तर

सबसे बढ़िया उत्तर

निम्न त्रुटि संदेश कुंजी है:

products.views.search_item ने कोई HttpResponse ऑब्जेक्ट नहीं लौटाया। यह बदले में कोई नहीं लौटा।

यह आपको बता रहा है कि आपकी products.views.search_item विधि ने कोई नहीं लौटाया। यह कोई कैसे वापस नहीं कर सकता है? जब search_item का गलत मान होता है और यह पूरी तरह से आइटम को पढ़ने/छंटने को छोड़ देता है, तो यह कोई नहीं लौटाता है। और ऐसा तब होता है जब search पैरामीटर अनुपस्थित (या खाली) होता है।

1
jarmod 27 अगस्त 2021, 17:54