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 に埋め込んだものです。

例として、硝酸という名前の化学物質があります。検索バーに硝酸を入力すると、正確に硝酸という名前のすべてのものに関するすべての関連情報が表示されます。また、icontainsはそうあるべきではないと思っていた大文字と小文字が区別されます。また、硝酸、硝酸、酸、または酸を検索しても結果が得られないため、何かがおかしいと思います。シェルで同じコマンドを使用したところ、期待どおりの結果が得られましたが、Web サイトでは同じように実行されません。なぜそうなのかについての洞察を持っている人はいますか?ありがとう、

4

1 に答える 1

1

問題はあなたのifequalテストです:

{% ifequal chemical.Name q %}

化学名が q と正確に等しい場合を除き、行は表示されません。

于 2013-06-25T22:47:56.800 に答える