我正在尝试创建一个非常简单的搜索功能,该搜索功能会根据搜索表单中的关键字进行过滤。
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`
模板似乎没有显示任何结果,既没有“没有结果......”也没有显示任何已过滤的条目。我做错了什么?
答案 0 :(得分:0)
它不起作用的原因是query = request.GET.get(q)没有“”。没有获得q,因此没有执行循环。
答案实际上是将query = request.GET.get(q)
替换为query = request.GET.get('q')