从我的蓝图中的views.py
开始,我尝试使用send_static_file
投放index.html
并且无法让它工作
我有一个名为main的蓝图,我在蓝图文件夹__init__.py
mod_main
中进行了初始化
from flask import Blueprint
mod_main = Blueprint('main',name,static_folder='/static', static_url_path='/static')
from . import views
在我的主app
初始化__init__.py
根目录下的app
app = Flask(__name__)
from .mod_main import mod_main as main_blueprint
app.register_blueprint(main_blueprint,url_prefix='/main')
在蓝图主页(views.py
文件夹)中的mod_main
文件下
@mod_main.route('/')
def index():
return mod_main.send_static_file('index.html')
但它一直在解决404 Not found
。任何线索如何我可以提供根index.html
文件夹中static
文件夹下的app
(如果我在蓝图中创建一个静态文件夹,我可以让它工作。但是我我想从根app
)
继承了必要文件的结构
app
|
-- mod_main/
|
-- views.py
-- __init__.py
-- __init__.py
-- static /
|
-- index.html
答案 0 :(得分:3)
您已经告诉蓝图在/static
中找到静态文件,或者在文件系统的根目录中找到名为static
的文件夹。假设您不想将其更改为static
并将文件夹移至mod_main
,则可以采用几种不同的方法。
如果要区分应用程序的静态文件和蓝图的静态文件,可以通过当前应用程序提供文件。
# mod_main/views.py
from flask import current_app
from . import mod_main
@mod_main.route('/')
def index():
return current_app.send_static_file('index.html')
但是,如果您打算使用现有的static
作为唯一的静态文件夹,则需要更新蓝图才能使用此文件夹。
# mod_main/__init__.py
import os
from flask import Blueprint
static_folder = os.path.join(os.pardir, 'static')
mod_main = Blueprint(
'main', __name__, static_folder=static_folder, static_url_path='/static')
from . import views