如何使用 Python 和 FLASK 修复错误 405?

问题描述

我正在尝试做一个烧瓶项目,但我遇到了问题.. 我的想法是使用不同的机器学习模型(朴素贝叶斯、线性回归和支持向量机)预测一种玻璃。

这是我的 app.py 文件

create

这是我的 index.html 文件

# -*- coding: utf-8 -*-
"""
@author: fred_
"""

import numpy as np
from flask import Flask,request,render_template
import pickle


app = Flask(__name__)
nb = pickle.load(open('naive_bayes_model.sav','rb'))
lr = pickle.load(open('logistic_regression_model.sav','rb'))
svm = pickle.load(open('svm_model.sav','rb'))

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

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

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

@app.route('/predict_nb',methods=['GET','POST'])
def predict_nb():
    RI = request.form['inputRI']
    Na = request.form['inputNa']
    Mg = request.form['inputMg']
    Al = request.form['inputAl']
    Si = request.form['inputSi']
    K = request.form['inputK']
    Ca = request.form['inputCa']
    Ba = request.form['inputBa']
    Fe = request.form['inputFe']
    novo_registro = [[RI,Na,Mg,Al,Si,K,Ca,Ba,Fe]]
    novo_registro = np.asarray(novo_registro)
#    novo_registro = novo_registro.reshape(-1,1)
#    novo_registro = novo_registro.reshape(-1,9)
    
    resposta_nb = nb.predict(novo_registro)
    if resposta_nb == 1:
        return render_template('index.html',prediction_text_nb ='Resultado: Vidro Processado para Construções')
    elif resposta_nb == 2:
        return render_template('index.html',prediction_text_nb ='Resultado: Vidro Não-Processado para Construções')
    elif resposta_nb == 3:
        return render_template('index.html',prediction_text_nb ='Resultado: Vidro Processado para Veículos')
    elif resposta_nb == 4:
        return render_template('index.html',prediction_text_nb ='Resultado: Vidro Não-Processado para Veículos')
    elif resposta_nb == 5:
        return render_template('index.html',prediction_text_nb ='Resultado: Vidro para potes')
    elif resposta_nb == 6:
        return render_template('index.html',prediction_text_nb ='Resultado: Vidro para Louças')
    elif resposta_nb == 7:
        return render_template('index.html',prediction_text_nb ='Resultado: Vidro para Faróis de Carros')
    else:
        return render_template('index.html',prediction_text_nb ='Resultado: ')

@app.route('/predict_rl','POST'])
def predict_rl():
    RI = request.form['inputRI']
    Na = request.form['inputNa']
    Mg = request.form['inputMg']
    Al = request.form['inputAl']
    Si = request.form['inputSi']
    K = request.form['inputK']
    Ca = request.form['inputCa']
    Ba = request.form['inputBa']
    Fe = request.form['inputFe']
    novo_registro = [[RI,Fe]]
    novo_registro = np.asarray(novo_registro)
    novo_registro = novo_registro.reshape(-1,1)
    novo_registro = novo_registro.reshape(-1,9)
    
    resposta_rl = lr.predict(novo_registro)
    if resposta_rl == 1:
        return render_template('indexRL.html',prediction_text_rl ='Resultado: Vidro Processado para Construções')
    elif resposta_rl == 2:
        return render_template('indexRL.html',prediction_text_rl ='Resultado: Vidro Não-Processado para Construções')
    elif resposta_rl == 3:
        return render_template('indexRL.html',prediction_text_rl ='Resultado: Vidro Processado para Veículos')
    elif resposta_rl == 4:
        return render_template('indexRL.html',prediction_text_rl ='Resultado: Vidro Não-Processado para Veículos')
    elif resposta_rl == 5:
        return render_template('indexRL.html',prediction_text_rl ='Resultado: Vidro para potes')
    elif resposta_rl == 6:
        return render_template('indexRL.html',prediction_text_rl ='Resultado: Vidro para Louças')
    elif resposta_rl == 7:
        return render_template('indexRL.html',prediction_text_rl ='Resultado: Vidro para Faróis de Carros')
    else:
        return render_template('indexRL.html',prediction_text_rl ='Resultado: ')
    

@app.route('/predict_svm','POST'])
def predict_svm():
    RI = request.form['inputRI']
    Na = request.form['inputNa']
    Mg = request.form['inputMg']
    Al = request.form['inputAl']
    Si = request.form['inputSi']
    K = request.form['inputK']
    Ca = request.form['inputCa']
    Ba = request.form['inputBa']
    Fe = request.form['inputFe']
    novo_registro = [[RI,Fe]]
    novo_registro = np.asarray(novo_registro)
 #   novo_registro = novo_registro.reshape(-1,1)
 #   novo_registro = novo_registro.reshape(-1,9)
    
    resposta_svm = svm.predict(novo_registro)
    if resposta_svm == 1:
        return render_template('indexSVM.html',prediction_text_svm ='Resultado: Vidro Processado para Construções')
    elif resposta_svm == 2:
        return render_template('indexSVM.html',prediction_text_svm ='Resultado: Vidro Não-Processado para Construções')
    elif resposta_svm == 3:
        return render_template('indexSVM.html',prediction_text_svm ='Resultado: Vidro Processado para Veículos')
    elif resposta_svm == 4:
        return render_template('indexSVM.html',prediction_text_svm ='Resultado: Vidro Não-Processado para Veículos')
    elif resposta_svm == 5:
        return render_template('indexSVM.html',prediction_text_svm ='Resultado: Vidro para potes')
    elif resposta_svm == 6:
        return render_template('indexSVM.html',prediction_text_svm ='Resultado: Vidro para Louças')
    elif resposta_svm == 7:
        return render_template('indexSVM.html',prediction_text_svm ='Resultado: Vidro para Faróis de Carros')
    else:
        return render_template('indexSVM.html',prediction_text_svm ='Resultado: ')
    

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

但是,当我单击提交按钮时,浏览器上会显示 405 错误。我不知道错误在哪里,请有人可以帮助我

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)