#python #flask
Вопрос:
У меня есть простой скрипт python Flask, в котором я хочу с помощью формы добавить 2 пути к изображению, отправить эти пути на python и отправить обратно строку. Проблема у меня в том, что скрипт запускается до того, как форма заполнена и кнопка нажата. Как заставить сценарий ждать и запускаться только при нажатии кнопки «Отправить»?
Код для справки
@app.route('/', methods=['GET', 'POST'])
@app.route('/index')
def index():
PATH_REFERENCE = request.form.get("referencePhoto")
PATH_TEST = request.form.get("testPhoto")
testImage = cv2.imread(PATH_TEST)
reference = setupReference(PATH_REFERENCE)
face_locations, face_encodings = getFaceEmbeddingsFromImage(testImage, convertToRGB=True)
for location, face_encoding in zip(face_locations, face_encodings):
distances = face_recognition.face_distance(reference[0], face_encoding)
if distances <= 0.6:
result = 'Match!'
else:
result = 'Not Match!'
return render_template('index.html', title='Home', result=result)
Ошибка в том, что скрипт не может работать с необъектом. Что имеет смысл, если форма не отправила необходимые пути.
Ответ №1:
Только выполняйте логику формы на посте — на get, просто подавайте форму.
@app.route('/', methods=['GET', 'POST'])
@app.route('/index')
def index():
result = ""
if request.method == "POST":
PATH_REFERENCE = request.form.get("referencePhoto")
PATH_TEST = request.form.get("testPhoto")
testImage = cv2.imread(PATH_TEST)
reference = setupReference(PATH_REFERENCE)
face_locations, face_encodings = getFaceEmbeddingsFromImage(testImage, convertToRGB=True)
for location, face_encoding in zip(face_locations, face_encodings):
distances = face_recognition.face_distance(reference[0], face_encoding)
if distances <= 0.6:
result = 'Match!'
else:
result = 'Not Match!'
return render_template('index.html', title='Home', result=result)