我正在使用 Flask 框架和 python 制作一个 Web 应用程序,我想让 Web 能够上传 csv,而无需使用我制作的模板在表格中保存和显示数据,我添加了用于上传和处理的语法数据直到它出现在表视图中,但运行网站后出现 404 未找到错误消息,我该如何修复它? 我在 main.py 中编写了代码
from datetime import datetime
from flask import Flask, render_template, request, session
from FlaskWebProject2 import app
import os
import pandas as pd
from werkzeug.utils import secure_filename
#*** Flask configuration
UPLOAD_FOLDER = os.path.join('staticFiles', 'uploads')
ALLOWED_EXTENSIONS = {'csv'}
app = Flask(__name__, template_folder='templateFiles', static_folder='staticFiles')
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
app.secret_key = 'This is your secret key to utilize session in Flask'
@app.route('/')
def index():
return render_template('index.html')
@app.route('/upload', methods=['POST', 'GET'])
def uploadFile():
if request.method == 'POST':
# upload file flask
uploaded_df = request.files['uploaded-file']
# Extracting uploaded data file name
data_filename = secure_filename(uploaded_df.filename)
# flask upload file to database (defined uploaded folder in static path)
uploaded_df.save(os.path.join(app.config['UPLOAD_FOLDER'], data_filename))
# Storing uploaded file path in flask session
session['uploaded_data_file_path'] = os.path.join(app.config['UPLOAD_FOLDER'], data_filename)
return render_template('index_upload_and_show_data_page2.html')
@app.route('/show_data')
def showData():
# Retrieving uploaded file path from session
data_file_path = session.get('uploaded_data_file_path', None)
# read csv file in python flask (reading uploaded csv file from uploaded server location)
uploaded_df = pd.read_csv(data_file_path)
# pandas dataframe to html table flask
uploaded_df_html = uploaded_df.to_html()
return render_template('show_csv_data.html', data_var = uploaded_df_html)
我希望网站可以正常显示主页并上传、读取和显示csv数据
如果您请求
/upload
并得到 404。这是很自然的。您已为 /upload
端点添加了处理程序:
@app.route('/upload', methods=['POST', 'GET'])
def uploadFile():
...
但是
uploadFile
仅支持POST
请求。当您在浏览器中输入 localhost/upload
时,浏览器会向 Web 服务器发送 GET
请求。有两种解决方案可以为您提供相同的结果:
向
if
函数添加另一个 uploadFile
并检查传入请求是否为 GET
,如果是,则显示一个页面(例如上传文件的表单)。
专门为
upload_file_form
请求显示表单编写另一个类似 GET
的函数。
P.S.:根据 PEP8,您应该使用
camel_case
作为函数名称。例如upload_file
而不是uploadFile