我在Flask应用程序上有一个蓝图home
,其前缀为/
。该蓝图具有一个静态文件夹,并使用static_folder
参数进行配置。但是,链接到蓝图的静态文件将返回404错误,即使该文件存在并且url看起来正确。蓝图为什么不提供静态文件?
myproject/
run.py
myapp/
__init__.py
home/
__init__.py
templates/
index.html
static/
css/
style.css
myapp/init.py
:from flask import Flask
application = Flask(__name__)
from myproject.home.controllers import home
application.register_blueprint(home, url_prefix='/')
myapp/home/controllers.py
:from flask import Blueprint, render_template
home = Blueprint('home', __name__, template_folder='templates', static_folder='static')
@home.route('/')
def index():
return render_template('index.html')
myapp/home/templates/index.html
:<head>
<link rel="stylesheet" href="{{url_for('home.static', filename='css/style.css')}}">
</head>
<body>
</body>
myapp/home/static/css/style.css
:body {
background-color: green;
}
最佳答案
您将与Flask静态文件夹和蓝图发生冲突。由于该蓝图已安装在/
上,因此它与该应用共享相同的静态URL,但是该应用的路由优先。更改蓝图的静态URL,以免发生冲突。
home = Blueprint(
'home', __name__,
template_folder='templates',
static_folder='static',
static_url_path='/home-static'
)
关于python - 使用蓝图静态路由时,Flask为蓝图静态文件提高404,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41853436/