Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 发送\u静态\u文件未从Blueprint根目录下的静态文件夹中拾取_Python_Flask_Static Files_Blueprint - Fatal编程技术网

Python 发送\u静态\u文件未从Blueprint根目录下的静态文件夹中拾取

Python 发送\u静态\u文件未从Blueprint根目录下的静态文件夹中拾取,python,flask,static-files,blueprint,Python,Flask,Static Files,Blueprint,从我的蓝图中的views.py中,我试图使用send\u static\u文件来交付index.html,但它无法正常工作 我有一个名为main的蓝图,我在blueprint文件夹mod\u main from flask import Blueprint mod_main = Blueprint('main',name,static_folder='/static', static_url_path='/static') from . import views 在我的主app中,在根ap

从我的蓝图中的
views.py
中,我试图使用
send\u static\u文件
来交付
index.html
,但它无法正常工作

我有一个名为main的蓝图,我在blueprint文件夹
mod\u main

from flask import Blueprint 
mod_main = Blueprint('main',name,static_folder='/static', static_url_path='/static') 
from . import views
在我的主
app
中,在根
app
文件夹下的
\uuuu init\uuuuu.py
中初始化

app = Flask(__name__)
from .mod_main import mod_main as main_blueprint
app.register_blueprint(main_blueprint,url_prefix='/main')
@mod_main.route('/')
def index():
    return mod_main.send_static_file('index.html')
在blueprint main(
mod_main
文件夹)中的
views.py
文件下

但它一直解析为
404未找到
。我如何提供
index.html
的任何线索,它位于根
应用程序
文件夹中的
静态
文件夹下(如果我在blueprint中创建一个静态文件夹,我可以让它工作。但我想从根
应用程序
交付它)

这是基本文件的结构

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

-- __init__.py

-- static /
   |
    -- index.html

您已告知blueprint在文件系统根目录中的
/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

您确定正在调用
index
mod_main/uu init_uuuuuuuuuuuuuuuupy
是什么样子的?dirn,这就是从flask导入Blueprint mod_main=Blueprint('main',name,static_folder='/static',static_url_path='/static')中mod main/uu init uuuuuuuuuuuuuuuuuuuuuuuuuuuu。导入视图最好将其放在原始帖子中,以便正确格式化。另外,
form
是否只是一个打字错误,或者它在代码中的显示方式是这样的?完成。不,当我在这里输入表单时,表单只是一个输入错误:-)我试图使用这个示例来发送来自当前蓝图的静态文件。对于那些对此感兴趣的人,请执行以下操作:您的\u蓝图\u对象。发送\u静态\u文件