Flask部署乳腺癌检测模型时HTML显示为纯文本,无法渲染网页
解决Flask渲染HTML为纯文本的问题
核心问题:HTML标签被转义
你提供的index.html代码里使用了HTML转义字符(比如<代替<,>代替>),这会导致浏览器将所有内容识别为纯文本,而非可渲染的HTML标签。
解决方案步骤
1. 修正index.html文件内容
将index.html里的转义字符替换为正常的HTML标签符号,正确代码如下:
<!DOCTYPE html> <html lang="en"> <head> <title>Breast Cancer Detector</title> </head> <body> <h1>Breast Cancer Prediction</h1> <div> <form action="{{ url_for('predict') }}" method="post" enctype="multipart/form-data"> <input type="file" name="BreastUltrasoundImage" accept="image/png, image/jpeg" required> <button type="submit">Predict</button> </form> <h4 style="color: violet;">{{ predictions }}</h4> </div> </body> </html>
2. 确认运行环境的工作目录
确保运行app.py时,终端的工作目录是你的project_folder。如果从上级目录运行,Flask可能找不到templates文件夹,导致无法正确渲染模板。正确运行步骤:
cd /path/to/project_folder python app.py
3. 显式指定模板路径(可选)
如果上述步骤无效,可以在初始化Flask应用时显式指定模板文件夹路径,确保应用能正确找到模板:
app = Flask(__name__, template_folder='templates')
(注:这一步通常无需操作,Flask默认会查找同级的templates文件夹,仅在路径异常时尝试)
额外预测功能优化提示
你的预测函数中,image.load_img(uploaded_file)可能存在文件对象加载问题,部分Keras版本需要先将上传文件保存为临时文件再加载,可参考以下代码调整:
# 在predict函数中添加临时文件处理逻辑 import tempfile uploaded_file = request.files['BreastUltrasoundImage'] # 创建临时文件存储上传内容 with tempfile.NamedTemporaryFile(delete=False, suffix='.jpg') as temp_file: temp_file.write(uploaded_file.read()) temp_path = temp_file.name # 加载临时文件进行处理 img = image.load_img(temp_path, target_size=(256, 256)) # 处理完成后删除临时文件 os.unlink(temp_path)
内容的提问来源于stack exchange,提问作者Lilly
相关产品推荐
相关产品推荐

