首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django中的搜索栏

Django中的搜索栏
EN

Stack Overflow用户
提问于 2019-02-13 11:54:29
回答 5查看 33K关注 0票数 8

编辑:我使用“DjangoFilter”成功地包含了一个搜索栏

我想在Django的模板中添加一个搜索栏

我想在上面的文章列表中加入一个搜索框,这样用户就可以通过这些数据进行搜索。

当我在酒吧里输入什么东西时,什么都不会发生.

下面是我的代码

感谢在HTML页面中预先提供的帮助

代码语言:javascript
运行
AI代码解释
复制
    <form class="form-inline my-2 my-lg-0">
    <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search" name="search" >
    <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
    </form>

在views.py中

代码语言:javascript
运行
AI代码解释
复制
def article_overview(request):
    search_term = ''

    if 'search' in request.GET:
        search_term = request.GET['search']
        articles = Article.objects.all().filter(feeder__icontains=search_term) 

    articles = Article.objects.all()

    return render(request, 'overviews/overview.html', {'articles' : articles, 'search_term': search_term })    

在overview.html(简化)中:

代码语言:javascript
运行
AI代码解释
复制
{% for article in articles %}
<a> {{article.feeder}} </a> 
{% endfor %}
EN

回答 5

Stack Overflow用户

发布于 2019-02-13 22:25:28

在views.py中,

代码语言:javascript
运行
AI代码解释
复制
class SearchView(ListView):
    model = Article
    template_name = 'search.html'
    context_object_name = 'all_search_results'

    def get_queryset(self):
       result = super(SearchView, self).get_queryset()
       query = self.request.GET.get('search')
       if query:
          postresult = Article.objects.filter(title__contains=query)
          result = postresult
       else:
           result = None
       return result

在模板中搜索查询,

代码语言:javascript
运行
AI代码解释
复制
<form class="add_your_class" method="GET" action="" >
    <input class="add_your_class" type="search" name="search"> 
    <button class="add_your_class" type="submit"> Search </button>
</form>

在模板中,可以将其添加为显示结果。

代码语言:javascript
运行
AI代码解释
复制
{% for result in all_search_results %}
   {{ .....add according to your model }}
{% empty %}
   add something to show no results
{% endfor %}
票数 7
EN

Stack Overflow用户

发布于 2020-08-12 07:23:11

我的示例在我的示例中有效:基本模板:

代码语言:javascript
运行
AI代码解释
复制
form class="form-inline my-2 my-lg-0" method="GET" action="{% url 'ecomm:search' %}" >
            <input class="form-control mr-sm-2" type="search" name="search">
            <button class="btn btn btn-outline-info my-2 my-sm-0" type="submit"> Search </button>
        </form>

搜索模板:

代码语言:javascript
运行
AI代码解释
复制
{% extends "ecomm/base.html" %}

{% block content %}
    {% for product in all_search_results %}
        <h3>{{product.title}}</h3>
        <p>{{product.description}}</p>
        <img src="{{ product.picture.url }}">
    {% empty %}
        <h2>No results found</h2>
    {% endfor %}
{% endblock %}

意见:

代码语言:javascript
运行
AI代码解释
复制
class SearchView(ListView):
    model = Products
    template_name = 'ecomm/search.html'
    context_object_name = 'all_search_results'

    def get_queryset(self):
        result = super(SearchView, self).get_queryset()
        query = self.request.GET.get('search')
        if query:
            postresult = Products.objects.filter(title__contains=query)
            result = postresult
        else:
            result = None
        return result

网址:

代码语言:javascript
运行
AI代码解释
复制
    path('results/', ecomm_views.SearchView.as_view(), name='search'),
票数 1
EN

Stack Overflow用户

发布于 2019-02-13 12:01:40

假设您已经将文章保存在数据库中,那么您可以做的就是为输入拥有一个datalist,使用AJAX将datalist预先填充到数据库中的文章中,这样您就有了某种类型的自动完成下拉/搜索框。

对于这个实现,Teamtreehouse.com有一个很好的教程。这是链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54678389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档