У меня возникли проблемы с вложенным оператором if/else. Оператор else выше частичного соответствия выполняется, даже если оператор if оценивает значение true .. Я не понимаю, почему это произойдет .. Любая помощь будет оценена.Вложенный, если/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)
'is' проверяет подлинность. Он проверяет, совпадают ли оба объекта, и, очевидно, возврат 'filter' не возвращает объект' True'. Вы хотите использовать оператор '==' или в этом случае просто полностью опустите его и просто напишите 'if exactMatch:' –