1

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__.pyapp

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下的任何线索(如果我在蓝图中创建一个静态文件夹,我可以让它工作。但我想从根目录交付它)staticappapp

这是带有基本文件的结构

app
|
-- mod_main/
   |
    -- views.py
    -- __init__.py

-- __init__.py

-- static /
   |
    -- index.html
4

1 回答 1

4

您已经告诉蓝图在文件系统的根目录中找到静态文件/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
于 2014-09-29T15:03:37.973 回答