Django 2.0, не могу исправить панель поиска, работающую в Django 2.0 - PullRequest
0 голосов
/ 10 июня 2018

У меня проблема с панелью поиска в Django.

Я создаю простое представление:

class BookList(ListView):
    model = Book

    def book_list(request):
        books = Book.objects.all()
        search_term = ''

        if 'search' in request.GET:
            search_term = request.GET['search']
            books = books.filter(text__incontains=search_term)

        context = {'books': books, 'search_term': search_term}

        return render(request, 'book_list.html', context)

И простую форму:

<form class="form-inline my-2 my-lg-1">
   <input class="form-control mr-sm-2"
       type="search"
       placeholder="Search"
       aria-label="Search"
       name="search"
       value="{{ search_term }}">
   <button class="btn btn-outline-success my-2 my-sm-0" type="submit">search</button>
</form>

Когда япопытаться найти что-то в моей панели поиска, это не работает.Я новичок в Django, и я не знаю, как это исправить.

1 Ответ

0 голосов
/ 10 июня 2018

Ваш код недостаточно понятен. Я полагаю, вы используете CBV, поскольку вы используете переменную с именем `object_list и пытаетесь получить параметр GET путем реализации FBV внутри, это совершенно не правильно.

попробуйте следующее:

class BookList(ListView):
    model = Book
    template_name = 'template.html'

    def get_queryset(self):
        books = self.model.objects.all()
        if 'search' in request.GET:
            search_term = request.GET['search']
            books = books.filter(text__incontains=search_term)
        return books

    def get(self,request, *arg,**args)
        context = self.get_context_data(**kwargs)
        context['search_term'] = request.GET.get('search','')
        return render(request.self.template_name,context)
...