我正在尝试使用简单的搜索表单根据用户输入进行过滤。 以下是我的views.py
中的相关代码def search(request):
error = False
if 'q' in request.GET and request.GET['q']:
q = request.GET['q']
if not q:
error = True
elif len(q) > 20:
error = True
else:
chemicals = Chemicals.objects.filter(Name__icontains=q)
return render_to_response('search_results.html', locals(), context_instance=RequestContext(request))
return render_to_response('search_form.html',{'error':True})
模板
<table>
<th>Barcode</th>
<th>Name</th>
<th>Description</th>
{% for chemical in chemicals %}
{% ifequal chemical.Name q %}
<tr>
<td>{{ chemical.Barcode }} </td>
<td>{{ chemical.Name }} </td>
<td>{{ chemical.Description }} </td>
{% endifequal %}
{% endfor %}
</table>
下一篇文章是我在search_results.html中嵌入的内容
一个例子是我有一种名为硝酸的化学物质。如果我在搜索栏中放入硝酸,它将显示所有具有硝酸名称的所有相关信息。它也是区分大小写,我认为icontains不应该是。同时搜索硝酸,硝酸,酸或酸也没有结果,这让我觉得有些不对劲。我在shell中使用了相同的命令,它完成了我原本预期的操作,但它在网站上的执行情况并不相同。有没有人知道为什么会这样? 谢谢,
答案 0 :(得分:1)
问题在于您的ifequal
测试:
{% ifequal chemical.Name q %}
除非化学名称恰好等于q,否则不会显示该行。