簡単な検索フォームを使用して、ユーザー入力に基づいてフィルタリングしようとしています。ここに私の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 サイトでは同じように実行されません。なぜそうなのかについての洞察を持っている人はいますか?ありがとう、