【问题标题】:Django 2.0, can't fix searchbar working in django 2.0Django 2.0,无法修复在 django 2.0 中工作的搜索栏
【发布时间】:2018-06-10 17:55:13
【问题描述】:

我在 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 的新手,我不知道如何解决它。

【问题讨论】:

  • 使用text__icontains 而不是text__incontains
  • 感谢您的回答!我从 text_incontains 重命名为 text_icontains 但它仍然无法正常工作:,
  • 注意:text__icontains中有双下划线,即__
  • 对不起,我用双下划线,忘了写在那里。
  • 你能展示一下你如何在模板中显示书籍列表吗?

标签: python django web django-2.0


【解决方案1】:

您的代码不够清晰,我猜您使用的是 CBV,因为您使用的是变量名 `object_list,并尝试通过在内部实现 FBV 来检索 GET 参数,这是完全不正确的。

尝试以下方法:

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)

【讨论】:

  • 还是不行。当我单击搜索按钮时,它什么也不做。我将此表单放在我的 base.html 和 book_list.html 中。
  • 您可以编辑您的代码并发布您的视图现在的样子吗?以及如何遍历 object_list
  • 我通过在我的视图文件中添加一个新的 SearchView 来修复它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-28
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多