Как выполнить программу Python в @ app.route без ошибки 405? - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь выполнить эту программу на Python, как только доберусь до страницы данных дескриптора. Почему методы возвращают ошибку 405 Method Not Allowed?

В прошлом я пытался изменить положение питона за пределами @ декоратора и условия method = ["POST"]

Python

import random
import requests
import time
from datetime import date
import sys
import re
import json
from bs4 import BeautifulSoup
from flask import Flask, render_template, jsonify

app = Flask(__name__)

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

@app.route("/handle_data") 
def handle_data():
        userName = requests.form['username']
        listName = requests.form['listname']

        full python code is here

        randomNumber = randint(0,len(nameList)-1)
        films = nameList[randomNumber]
        return render_template('home.html', films=films)
if __name__ == '__main__':
    app.run(debug=True)

... HTML

<form action="{{ url_for('handle_data') }}" method="POST">
<form>
  <div class="form-row">
    <div class="col">
      <input type="text" size=15 name=username class="form-control" placeholder="Username">
     </div>
     <div class="col">
      <input type="text" size=15 name=listname class="form-control" placeholder="List Name">
    </div>
  </div>
  <p><input type = "submit" class="buttonclass" value = "Random!" /></p>
</form>

Я ожидаю, что программа выполнит запросы из формы через программу и вернет случайный элемент списка в виде переменной "фильмы", но я получаю ошибку 405. Если вам нужна дополнительная информация, пожалуйста, сообщите

1 Ответ

0 голосов
/ 02 июля 2019

@app.route("/handle_data") регистрирует маршрут только для GET запросов. Если вы тоже хотите POST, вам нужно явно указать это:

@app.route("/handle_data", methods=['GET', 'POST'])
def handle_data():
    # your code here

или

@app.route("/handle_data", methods=['GET'])
def handle_get_data():
    pass

@app.route("/handle_data", methods=['POST'])
def handle_post_data():
    pass

Подробнее здесь: http://flask.pocoo.org/docs/1.0/api/#url-route-registrations

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