django中的简单搜索框

时间:2018-04-11 20:44:38

标签: django search

我正在尝试创建一个非常简单的搜索功能,该搜索功能会根据搜索表单中的关键字进行过滤。

html搜索表单:

<form method="get" action="{{ request.get.q }}">
  <input type="search" type="text" name="q" placeholder=„search">
  <button type="submit">search</button>
</form>

views.py:

def search(request):
    query = request.GET.get(q)
    if query:
        results = Sklep.objects.filter(miasto=query)
        if results.count():
            context_dict['results'] = results
        else:
            context_dict['no_results'] = query
    return render(request, "apka/lista.html", context_dict)

div显示结果:

<div>
{% if no_results %}
    No results returned for <q>{{ no_results }}</q>
{% else %}
    {% for result in results %}
        {{ result.miasto }}
   {% endfor %}
{% endif %}
</div>

最后是models.py:

from django.db import models

class Sklep(models.Model):
    miasto = models.CharField(
        max_length=200,
    )
    nazwa = models.CharField(
        max_length=200,
    )
    adres = models.CharField(
        max_length=200,
    )
    def __str__(self):
        return self.miasto +", "+ self.nazwa+", "+self.adres`

模板似乎没有显示任何结果,既没有“没有结果......”也没有显示任何已过滤的条目。我做错了什么?

1 个答案:

答案 0 :(得分:0)

它不起作用的原因是query = request.GET.get(q)没有“”。没有获得q,因此没有执行循环。

答案实际上是将query = request.GET.get(q)替换为query = request.GET.get('q')