在 Django Views 中将代码从 FBV 转换为 CBV

Converting codes from FBV to CBV in Django Views

我目前正在将基于函数的视图转换为基于 class 的视图。在我的模板上,我通过 input 标签获得了一个值。

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

得到值后,我在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))

但是现在,我想将代码转换为 CBV。 我该怎么做?

更新

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,
    })

这是您使用 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