#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>