Flask在app文件夹下找不到模板和静态文件夹,它总是查找根文件夹



我遇到了这个错误,但是找不到解决方法。

目录结构如下:

Project
|   .env
|   .gitignore
|   Pipfile
|   Pipfile.lock
|   run.py
|       
---app
|   controllers.py
|   models.py
|   __init__.py
|   
---static
|       main.css
|       
---templates
|       about.html
|       home.html
|       layout.html

run.py的代码如下:

from app import app
if __name__ == "__main__":
app.run(debug=True, port=6060)

init.py是这样的从flask导入flask

app = Flask('__name__', template_folder='app\templates')
app.config['EXPLAIN_TEMPLATE_LOADING'] = True
from app import models
from app import controllers

首先,我遇到了一个问题,因为它找不到templates文件夹,所以我打开模板加载,并注意到它没有正确加载路径。templates文件夹在app/文件夹内,但调试日志显示脚本正在根目录中寻找tempaltes文件夹。我硬编码了应用初始化。我仍然不知道为什么,但是它起作用了。

现在的问题是,然而,脚本是无法找到app/static/main.css文件以及

layout.html页我有以下行。

<link rel="stylesheet" type="text/css" . href="{{url_for('static', filename='main.css')}}">

当我查看页面的源代码时,它显示:

<link rel="stylesheet" type="text/css" . href="/static/main.css">

再次,它在根文件夹中查找,而不是在app文件夹中查找。

而不是调整和寻找黑客,我想修复它,所以它总是在app下而不是根。我想它也会解决templates的问题。

请建议。

我不确定,但我认为这一行是你的问题

app = Flask('__name__', template_folder='app\templates')

模板文件夹应该是默认的,我没有引用__name__…试着把它改成

app = Flask(__name__)

然后试试这里的jinja

{{url_for('static', filename='main.css')}}

也应该是默认值。我真的不知道为什么它不工作,但这可能是问题所在。