0

我正在尝试使用简单的搜索表单根据用户输入进行过滤。这是我的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 中嵌入的内容

一个例子是我有一种名为硝酸的化学物质。如果我将 Nitric Acid 放在搜索栏中,它将显示所有名称为 Nitric Acid 的所有事物的所有相关信息。它也是区分大小写的,我认为 icontains 不应该是。也搜索 Nitric、nitric、Acid 或 acid 没有结果,这让我觉得有问题。我在 shell 中使用了相同的命令,它完成了我期望它做的事情,但它在网站上的表现不同。有没有人知道为什么会这样?谢谢,

4

1 回答 1

1

问题是你的ifequal测试:

{% ifequal chemical.Name q %}

除非化学名称完全等于 q,否则不会显示该行。

于 2013-06-25T22:47:56.800 回答