/ / Konverzia kódov z FBV na CBV v zobrazení Django - django, pohľady založené na triede django

Konverzia kódov z FBV na CBV v zobrazeních Django - django, zobrazenia založené na django-triede

Momentálne prevádzam svoje funkčné pohľady na triedne. Na svojej šablóne dostanem hodnotu prostredníctvom input tag.

<input name="search_text" type="text">

Po získaní hodnoty spracujem s hodnotou ako je táto vo FBV.

def search(request):
search_text = request.GET.get("search_text")

search_stores = Store.objects.filter(Q(businessName__icontains=search_text) | Q(mKey__icontains=search_text))

Ale teraz chcem previesť kódy na CBV. Ako to môžem spraviť?

UPDATE

def search(request):
search_text = request.GET.get("search_text")
sorter = request.GET.get("sorter")

if not sorter:
sorter = "popularity"

if search_text:
search_stores = Store.objects.filter(Q(businessName__icontains=search_text) | Q(mKey__icontains=search_text))
if sorter == "businessName":
search_stores = search_stores.order_by(sorter)
else:
search_stores = search_stores.order_by(sorter).reverse()
else:
search_stores = ""

for store in search_stores:
store.mKey = store.mKey.split(" ")

return render(request, "boutique/search.html", {
"search_stores": search_stores,
"search_text": search_text,
"sorter": sorter,
})

odpovede:

2 pre odpoveď č. 1

Tu je vaše riešenie, ktoré používate ListView

from django.views.generic import ListView

class SearchView(ListView):
template_name = "template.html"
model = Store

def get_queryset(self):
search_text = self.kwargs["search_text"]
object_list = self.model.objects.filter(Q(businessName__icontains=search_text) | Q(mKey__icontains=search_text))
return object_list