детектор плагиата метод ошибки python flask не найден

#python #flask

Вопрос:

Я разрабатываю инструмент для обнаружения плагиата с использованием flask и python, и я получаю ошибку «Метод не разрешен Метод не разрешен для запрошенного URL». Проект позволяет пользователю загружать два файла для сравнения. Всякий раз, когда я нажимаю кнопку «Отправить» в html-форме, возникает вышеуказанная ошибка. Не могли бы вы, пожалуйста, предложить некоторые изменения?

 from io import FileIO
from flask import Flask
from flask import render_template
from flask import request
from flask.helpers import url_for
from werkzeug.utils import redirect, secure_filename
import os
import numpy as np

app=Flask(__name__)

@app.route("/")
def home():
    return render_template('upload.html')

@app.route("/upload", methods=["GET", "POST"])
def upload():
    if request.method == "POST":
        f1 = request.files['file1']
        f2 = request.files['file2']
        return redirect(url_for('user'))
    else:
        return render_template('upload.html')

@app.route("/")
def user():
    return f"<h1>success</h1>"

if __name__=='__main__':
      app.run(debug=True)
 

мой фрагмент html — кода из upload.html является:

 <form enctype="multipart/form-data" method="post">
    <label for="file1">Upload first file here:</label>
    <input type="file" id="file1" name="file1"><br><br>
    <label for="file2">Upload second file here:</label>
    <input type="file" id="file2" name="file2"><br><br>
    <input type="submit" value="Submit">
  </form>
 

Ответ №1:

Вы пропускаете действие в своей форме. В вашей реализации он пытается отправить запрос на отправку в home(), а не загрузить(). Вот почему вы получаете сообщение «Метод запрещен».

 <form action="/upload" enctype="multipart/form-data" method="post">
    <label for="file1">Upload first file here:</label>
    <input type="file" id="file1" name="file1"><br><br>
    <label for="file2">Upload second file here:</label>
    <input type="file" id="file2" name="file2"><br><br>
    <input type="submit" value="Submit">
  </form>