【问题标题】:simple search box in djangodjango中的简单搜索框
【发布时间】:2018-04-11 20:44:37
【问题描述】:

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

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`

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

【问题讨论】:

  • 你能检查这个函数是否被执行,并在 if query: print("query") 里面做一个 print 并且检查 action="{{ request.get.q }}" URL 是否正确

标签: django search


【解决方案1】:

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

答案其实就是把query = request.GET.get(q)换成query = request.GET.get('q')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2011-02-13
    • 2011-03-10
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多