【问题标题】:Flask Template Folder Not Found找不到烧瓶模板文件夹
【发布时间】:2020-07-10 16:52:25
【问题描述】:

我正在尝试部署我的烧瓶应用程序,以便它可以在我的局域网中的任何计算机上使用。但是,当我执行它时,我在 apache2 error.log 文件中收到以下错误:

我的应用程序的架构如下:

这是为__init__.py(python3):

from flask import Flask, redirect, url_for, render_template,request
app = Flask('__name__')
@app.route("/", methods=["POST", "GET"])

def home():
    if request.method == "POST":
        return render_template("index.html")
    else: 
        return render_template("index2.html")
if __name__ == "__main__":
    app.run()

而我的代码 index.html 是:

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <h1>Home Page</h1>
        <form action="#" method="post">
            <input type="submit" name="submit">
        </form>
    </body>

</html>

对于 index2.html,它与 index.html 的代码相同,只是标签 h1 具有不同的内容。

当我在本地 (http://127.0.0.1:5000/) 执行此操作时,它工作正常。

我正在关注本教程:https://www.youtube.com/watch?v=YFBRVJPhDGY

知道我可能做错了什么吗?

【问题讨论】:

  • 你能分享你的项目结构吗?
  • @sahasrara62 你是什么意思?我把文件的结构放了
  • 您使用的是from cloud import app 之类的东西吗?如果不是,则将 __init__.py 更改为 myapp.py 并在 app=flask(__name__, template_folder="../tmplates")
  • 是的 @sahasrara62 我在我的 .wsgi 文件中使用从云导入应用程序
  • 只需在 'app=flask(template folder)' 中添加模板文件夹路径

标签: python html python-3.x flask


【解决方案1】:

代替

app = Flask('__name__')

做

app = Flask(__name__)

Flask 使用包/模块名称来定位模板文件夹。

【讨论】:

  • 感谢您的回答,它现在正在工作。但我不明白为什么通过删除引号它现在可以工作,因为在另一个应用程序中我使用了引号并且它工作正常
  • 引号使__name__ 成为文字字符串,而不是将其用作包含包或模块名称的变量。 Flask 需要后者,并将解析包/模块的路径并在那里查找模板目录。在您需要模板之前,您可能不会注意到问题。蓝图使用相同的机制,这就是每个蓝图可以提供模板的方式(以及 Flask 可以找到它们的方式)。如果你真的很好奇,可以从github.com/pallets/flask/blob/master/src/flask/app.py#L386 开始,然后按照import_name 的用法。
【解决方案2】:

仔细检查服务器上的部署结构。您的模板文件夹可能位于错误的位置。就像您在本地构建它的方式一样,模板文件夹应该在您的项目根文件夹下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-17
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多