Flask应用无法找到相邻文件夹中的模板问题求助
Flask模板找不到问题解决
问题重现
开发Flask应用时,同级templates文件夹中的dashboard.html无法被找到,路由及相关代码如下:
app = Flask(__name__, template_folder='app/templates', static_folder='static') CORS(app, resources={r"/*": {"origins": "*"}}) @app.route('/dashboard') @cross_origin() def dashboard(): print('dashbaording') if request.method == 'OPTIONS': # Handle preflight requests (CORS) response = make_response() response.headers.add("Access-Control-Allow-Methods", "GET") return response app_root = os.path.dirname(os.path.abspath(__file__)) template_path = os.path.join(app_root, 'templates') print("Template folder path:", template_path) return render_template('dashboard.html')
错误信息:
raise TemplateNotFound(template)
jinja2.exceptions.TemplateNotFound: dashboard.html
IDE文件结构:
问题原因
Flask初始化时指定的template_folder='app/templates'路径错误——从文件结构可见,templates文件夹与app文件夹是同级关系,并非app的子文件夹,导致Flask去错误的目录查找模板。
解决方案
修正模板文件夹路径
将Flask初始化代码中的template_folder参数改为正确路径,若启动脚本位于项目根目录,直接指定根目录下的templates即可,甚至可以省略该参数(Flask默认会查找根目录下的templates文件夹):# 方式一:省略template_folder,使用默认值 app = Flask(__name__, static_folder='static') # 方式二:明确指定正确路径 app = Flask(__name__, template_folder='templates', static_folder='static')验证实际模板路径
可以打印Flask实际使用的模板文件夹路径,确认设置生效:print("Flask实际使用的模板路径:", app.template_folder)简化CORS处理
路由中手动处理OPTIONS请求的代码可以删除,因为CORS(app, resources={r"/*": {"origins": "*"}})已经自动处理了preflight请求,简化后的路由代码:@app.route('/dashboard') @cross_origin() def dashboard(): print('dashbaording') return render_template('dashboard.html')
内容的提问来源于stack exchange,提问作者Benjamin Marquardt
相关产品推荐
相关产品推荐

