Python Flask-url_for{}未访问静态文件夹



具有如下目录结构:

Flask_project
-env
-src
--app2.py
-static
--css
---main.css
-templates
--base.html
--index.html
-app.py

如果我使用主文件夹中的app.py加载页面,则会使用:python app.py加载main.css文件。这是通过以下文件实现的:

from flask import Flask, render_template, url_for # import
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html') 
if __name__ == "__main__":
app.run(debug=True)

但是,如果我使用\ src文件夹中的python3srcapp2.py加载app2.py,如下所示,并重定向template_foolder:

from flask import Flask, render_template, url_for # import
app = Flask(__name__, template_folder='../templates')
@app.route('/')
def index():
return render_template('index.html') 
if __name__ == "__main__":
app.run(debug=True)

我无法加载css\main.css文件夹,我收到以下错误:

"GET /css/main.css HTTP/1.1" 404 -

我不明白为什么将app_whatever.py文件放在子目录中(在本例中为\src(会导致它无法定位main.css文件?

供参考的base.html如下:

<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="{{url_for('static', filename='css/main.css') }}">
{% block head %}{% endblock %}
</head>
<body>
{% block body %}
{% endblock %}
</body>
</html>

index.html为:

{% extends 'base.html' %}
{% block head %}
{% endblock %}
{% block body %}
<h1> Template </h1>

{% endblock %}

如第二个问题所述,您需要定义static-文件夹的位置:

app = Flask(__name__, template_folder='../templates', static_folder='../static')

最新更新