Очистка загрузки файла в FlaskWTF

Я использую FlaskWTF для загрузки файла на сервер:

class SubmitFileForm(FlaskForm):
    data = FileField(validators=[FileRequired()])

Основной файл Flask:

@app.route('/problems/<problem_id>', methods=["GET", "POST"])
def problem(problem_id):    
    submit_file = SubmitFileForm()
    if submit_file.validate_on_submit():
        print(submit_file.data.data.read())
        return 'Файл отправлен'

    return render_template('problem.html',
                           submit_file_form=submit_file)

Форма в шаблоне:

<form method="post" enctype="multipart/form-data" name="file-solution-send" action="">
          {{ submit_file_form.hidden_tag() }}
          <label class="label">
            <span class="primary-button">Upload file</span>
            {{ submit_file_form.data(class="nodisp", onchange="this.form.submit()") }}
          </label>
        </form>

(Я использую label, чтобы стилизовать кнопку загрузки и сразу отправить файл.)

Загрузка файла работает нормально, но если я нажму кнопку "Назад" в браузере, он снова отправит файл и снова перенаправит его на "файл отправлен". Это очень важно не отправлять файл снова, потому что есть много ситуаций, когда пользователь должен нажать кнопку "Назад".

Другие формы без поля FileField (например, StringField) работают хорошо — я могу вернуться на страницу, и Flask больше не отправляет эту строку.

Есть ли способ избежать этого? Может быть, мне следует очистить файл из формы после загрузки? Как я могу это сделать?


Ответы (0 шт):