如何获取Flask应用中templates文件夹的绝对路径?
获取Flask应用中templates文件夹的绝对路径
要实现类似app.get_absolute_path_to_templates()的功能,你可以利用Flask实例自带的属性快速获取,或者封装成自定义方法:
方法1:直接拼接路径(最简方案)
Flask实例的app.root_path会返回应用根目录的绝对路径,app.template_folder是模板文件夹的名称(默认值为'templates'),用os.path.join拼接即可得到绝对路径:
import os from flask import Flask app = Flask(__name__) # 获取templates绝对路径 templates_abs_path = os.path.join(app.root_path, app.template_folder)
方法2:封装为自定义实例方法
如果想实现你期望的app.get_absolute_path_to_templates()调用方式,可以通过两种方式扩展:
方式A:给已有实例绑定方法
import os from flask import Flask app = Flask(__name__) def get_absolute_path_to_templates(self): return os.path.join(self.root_path, self.template_folder) # 把方法绑定到Flask实例上 app.get_absolute_path_to_templates = get_absolute_path_to_templates.__get__(app, Flask) # 调用示例 print(app.get_absolute_path_to_templates())
方式B:继承Flask类(适合多实例场景)
如果项目需要创建多个Flask实例,推荐继承Flask类扩展功能:
import os from flask import Flask class CustomFlask(Flask): def get_absolute_path_to_templates(self): return os.path.join(self.root_path, self.template_folder) # 初始化自定义Flask应用 app = CustomFlask(__name__) # 调用自定义方法 templates_path = app.get_absolute_path_to_templates()
说明
app.root_path是Flask自动检测的应用根目录(会根据__name__参数自动识别),无需手动指定os.path.join会根据操作系统自动处理路径分隔符,保证跨平台兼容性
内容的提问来源于stack exchange,提问作者DanC
相关产品推荐
相关产品推荐

