编辑:我使用“DjangoFilter”成功地包含了一个搜索栏
我想在Django的模板中添加一个搜索栏
我想在上面的文章列表中加入一个搜索框,这样用户就可以通过这些数据进行搜索。
当我在酒吧里输入什么东西时,什么都不会发生.
下面是我的代码
感谢在HTML页面中预先提供的帮助
<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中
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(简化)中:
{% for article in articles %}
<a> {{article.feeder}} </a>
{% endfor %}
发布于 2019-02-13 22:25:28
在views.py中,
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
在模板中搜索查询,
<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>
在模板中,可以将其添加为显示结果。
{% for result in all_search_results %}
{{ .....add according to your model }}
{% empty %}
add something to show no results
{% endfor %}
发布于 2020-08-12 07:23:11
我的示例在我的示例中有效:基本模板:
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>
搜索模板:
{% 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 %}
意见:
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
网址:
path('results/', ecomm_views.SearchView.as_view(), name='search'),
发布于 2019-02-13 12:01:40
假设您已经将文章保存在数据库中,那么您可以做的就是为输入拥有一个datalist,使用AJAX将datalist预先填充到数据库中的文章中,这样您就有了某种类型的自动完成下拉/搜索框。
对于这个实现,Teamtreehouse.com有一个很好的教程。这是链接。
https://stackoverflow.com/questions/54678389
复制