0
ネストされたif/elseステートメントで問題が発生しています。ifステートメントがtrueを評価しても、部分一致以上のelseステートメントが実行されます。なぜ起こるのかわかりません。if/elseをネストし、それ以外の場合は実行しませんか?
def search():
if request.method == 'GET':
return render_template('search_form.html') # TODO ADD THIS TEMPLATE
elif request.method == 'POST':
form = 'Search Form'
searchInput = request.form['search']
if len(searchInput) < 3:
errStr = 'The search term you entered is to short. Searches must have 4 characters.'
msg = [form, errStr]
return error(msg)
else:
exactMatch = Clients.query.filter(or_(Clients.cellNum==searchInput,
Clients.homeNum==searchInput,
Clients.otherNum==searchInput)).first()
print(exactMatch.firstName)
print(bool(exactMatch))
if exactMatch is True:
clientID = exactMatch.id
print(clientID)
else:
partialSearch = Clients.query.filter(or_(Clients.cellNum.like("%{}%".format(searchInput)),
Clients.homeNum.like("%{}%".format(searchInput)),
Clients.otherNum.like("%{}%".format(searchInput)),
Clients.lastName.like("%{}%".format(searchInput)),
Clients.firstName.like("%{}%".format(searchInput)))).all()
return render_template('display_search.html', results=partialSearch)
「同一性のテスト」です。両方のオブジェクトが同じかどうかをチェックします。明らかに、 'filter'の戻り値はオブジェクト' True'を返しません。あなたは '=='演算子を使いたいとします。この場合は完全に省略し、 'if exactMatch:'と書くだけです。 –