2014-09-29 56 views
1

从我的蓝图里面的views.py,我尝试使用send_static_file提供一个index.html和公正不能得到它的工作send_static_file不是从静态的文件夹在根捡起蓝图

我呼吁主要的蓝图,我初始化这样在__init__.py图纸文件夹mod_main

from flask import Blueprint 
mod_main = Blueprint('main',name,static_folder='/static', static_url_path='/static') 
from . import views 

下,在我的__init__.py主要app初始化根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.htmlstatic文件夹中的根app文件夹(我可以得到它的工作,如果我在蓝图内创建一个静态文件夹,但我想从根app发送它

继承人的基本文件

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

-- __init__.py 

-- static/
    | 
    -- index.html 
+0

你确定'index'被调用吗? 'mod_main/__ init __。py'看起来像什么? – dirn 2014-09-29 14:22:46

+0

DIRN,这是怎样的mod_main/__ init__.py看起来像 从烧瓶进口蓝图 mod_main =蓝图( '主',__名__,static_folder = '/静态',static_url_path = '/静态') 从。导入视图 – 2014-09-29 14:31:56

+0

最好将它放在原始文章中,以便它可以正确格式化。另外,'form'只是一个错字,或者它是如何出现在你的代码中? – dirn 2014-09-29 14:33:53

回答

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 
+0

谢谢。那很快! – 2014-09-29 17:07:18

相关问题