Я пытаюсь захватить данные формы HTTP с помощью Python и Flask, но продолжаю получать ошибку «метод не разрешен». Некоторое время я безуспешно пытался понять, почему. Вот как выглядит мой код:

@app.route("/add_recipe")  
  def addrecipepage():
    if request.method=="post":
        print ("Successful post request") # Just testing if code is working so far
    return render_template("add_recipe.html")

и HTML-код .

<form id="contact" action="browseAll" method="post">
    <div class="row">
      <div class="col-md-6">
        <fieldset>
          <input name="name" type="text" class="form-control" id="name" placeholder="Recipe Name..." required="">
        </fieldset>

<div class="col-12">
    <textarea name="demo-message" id="recipeText" placeholder="Enter Ingredients & Instructions Here" rows="15"></textarea>
  </div>
<div class="col-md-12">
    <button type="submit" id="form-submit" class="button">Add The Recipe!</button>
    <button id="uploadPhotoButton">Upload A Photo!</button>
    </div>
</form>

Когда я нажимаю кнопку отправки, я получаю ошибку HTTP 405 Method Not Allowed. У кого-нибудь есть идеи относительно того, почему, посмотрев на это? browseAll - это еще одна HTML-страница, для которой я создал конечную точку в моем файле app.py. Та же ошибка возникает, даже если я не указываю действие.

-1
RyanM933 5 Ноя 2021 в 17:45

1 ответ

Лучший ответ

Вы выполняете POST (ваша форма имеет method = "post"), но к вашему маршруту не прикреплен метод post. Когда вы определяете маршрут без присоединения метода, по умолчанию используется GET. Вам нужно это сделать

@app.route("/add_recipe", methods =['GET', 'POST'])
1
NoCommandLine 5 Ноя 2021 в 17:53