Могу ли я превзойти «обязательное» поле HTML при нажатии кнопки «отмена»?

#python #html #flask

#python #HTML #flask

Вопрос:

Полный новичок в веб-разработке, поэтому я подозреваю, что это может быть скорее архитектурной проблемой, чем технической..

 from flask import Flask, render_template, request, redirect, url_for

app = Flask(__name__)

@app.route('/', methods=("POST", "GET"))
def index():
    if request.method == 'GET':
        return render_template("templ.html")

    if request.method == 'POST':
        if 'submit' in request.form:
            return str([request.form[val] for val in ['input1', 'input2']])
        if 'cancel' in request.form:
            return redirect(url_for('index'))

app.run(host='0.0.0.0', port='5000')
 

HTML:

 <!doctype html>
<form action="." method="POST">
    <div>
        <input type="text" name="input1" required="required">
        <input type="text" name="input2" required="required">
    </div>
    
    <div>
        <button name="submit">Submit</button>
        <button name="cancel">Cancel</button>
    </div>
</form> 
 

Вопрос: Могу ли я пропустить ‘required’ при нажатии кнопки отмены с помощью этого простого дизайна или мне нужно использовать flask_wtf с wtforms.validators? Могу ли я получить рабочий минимальный скрипт с моим примером кода, пожалуйста?

Ответ №1:

Может быть более эффективный способ обработки, но это сработает, поскольку кнопка «Отмена» помещается в отдельную форму.

 <form action="." method="POST" id ="CancelForm"></form>
<form action="." method="POST">
    <div>
        <input type="text" name="input1" required="required">
        <input type="text" name="input2" required="required">
    </div>
    
    <div>
        <button name="submit">Submit</button>
        <button type="submit" form="CancelForm">Cancel</submit>
    </div>
</form> 
 

Возможно, вы захотите выполнить другое действие, чтобы вы могли обрабатывать «отмену» по-другому

Комментарии:

1. Спасибо, это сработало! Возможно, вы захотите отредактировать свой ответ, чтобы добавить name =»CancelForm», а затем отредактировать скрипт py, чтобы искать это в request.form? В противном случае это выдает ошибку, если нет более обычного способа