如何更改templates文件夹的目录?

2024-10-01 00:16:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试更改Flask Templates文件夹的目录。我试过这个:

template_dir = os.path.abspath('../website/endpoint')
app = Flask(__name__, template_folder=template_dir)
@app.route("/api/t-tycoon/sotd")
def tt_sotd():
return render_template("sotd.html")

但是,此代码会产生以下错误:

return render_template("sotd.html")

另一个方便的东西是目录,所以在这里你有它

main.py
website
   endpoint
      sotd.html
   jsons

我不知道哪里出了问题,也不知道这是怎么回事。我在网上读到一些关于更改Flask目录的内容,但它不起作用

如果需要更多信息,请告诉我。我希望有人能帮我解决这个问题,因为我自己也不知道

错误:jinja2.exceptions.TemplateNotFound:sotd.html


Tags: 目录文件夹appflaskreturnoshtml错误
2条回答

您使用的路径是错误的。正如@NavaneethaKrishnan所说的,它应该是os.path.abspath('website/endpoint')

然而,这个解决方案也不是完美的website/endpoint仍然是一个相对路径,它与当前工作目录相对。因此,只有当当前工作目录是main.py所在的目录时,它才会工作

更好的解决方案是:

dir_path = os.path.dirname(os.path.realpath(__file__))
template_dir = os.path.join(dir_path, "website/endpoint")

这里dir_pathmain.py所在目录的绝对路径。通过连接dir_pathwebsite/endpoint,可以保证模板目录是您创建的目录,并且它与当前工作目录无关

您需要在python模块(示例中创建Flask app-main.py的模块)旁边创建模板子目录:

main.py
templates_subdirectory
    sotd.html

将模板(sotd.html)移动到“网站”目录,并将其配置为模板子目录,这将解决您的问题

相关问题 更多 >