Метод не разрешен для запрошенного URL - PullRequest
1 голос
/ 06 апреля 2020

Я пытаюсь загрузить файл со своего flask сайта, но он продолжает выдавать ошибку
method is not allowed for the requested URL. Даже мой учитель не имеет ответа на этот вопрос. По его словам, он никогда не видел этой ошибки. очень ценю вашу помощь

мой HTML файл выглядит следующим образом

<!DOCTYPE html>
<html lang="en">
  <title> Data Collector App </title>
  <head>
    <link href="../static/main.css" rel="stylesheet">
  </head>
    <body>
      <div class="container">
        <h1>Data Collector</h1>
        <form action={{url_for('index')}} method="POST" enctype="multipart/form-data">
          <input type="file" name="file">
          <button type="submit">Submit</button>
        </form>
      </div>
    </body>
</html>

Python srcipt

from flask import Flask, render_template, request, send_file, url_for
import pandas
from werkzeug.utils import secure_filename

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/index')
def upload():
    if method == "POST":
        file=request.files['file']
        file.save(secure_filename("new"+file.filename))
        return render_template('index.html')

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

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

По умолчанию маршруты принимают только метод GET. Если вы хотите, чтобы ваш маршрут отвечал другим методам, передайте пользовательский параметр methods в @app.route следующим образом

@app.route('/', methods=['GET', 'POST',])
...

@app.route('/index', methods=['GET', 'POST',])
...

Источник https://flask.palletsprojects.com/en/1.1.x/quickstart/#http -методы

1 голос
/ 06 апреля 2020

Добавьте любые разрешенные методы к маршруту в декораторе, например,

@app.route('/index', methods=['POST', ...])

РЕДАКТИРОВАТЬ: Вам, вероятно, следует также проверить в поле method request вместо просто method.

if request.method == 'POST':
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...