关于flask中static_folder 和 static_url_path参数理解

原文地址

Flask 在创建app的时候是用

app = Flask(__name__)

来创建的,不传入 static_folder参数的话 ,默认的静态文件的位置是在 static目录下。

我们可以进入 Flask的源码里面查看 ctrl+鼠标左键进入

这是Flask的 __init__源码(后面还有一些,我就选了需要的代码)

def __init__(
        self,
        import_name,
        static_url_path=None,
        static_folder='static',
        static_host=None,
        host_matching=False,
        subdomain_matching=False,
        template_folder='templates',
        instance_path=None,
        instance_relative_config=False,
        root_path=None
):
    _PackageBoundObject.__init__(
        self,
        import_name,
        template_folder=template_folder,
        root_path=root_path
    )

    if static_url_path is not None:
        self.static_url_path = static_url_path

    if static_folder is not None:
        self.static_folder = static_folder

我们可以看到 static_folder 是默认为 static。

我们之所以能够访问到 static下面的静态文件,是因为注册了路由,就和flask的 app.route一样

我们现在查看下 注册路由的方法

if self.has_static_folder:
    assert bool(static_host) == host_matching, 'Invalid static_host/host_matching combination'
    self.add_url_rule(
        self.static_url_path + '/<path:filename>',
        endpoint='static',
        host=static_host,
        view_func=self.send_static_file
    )

上代码

import flask
app=flask.Flask(__name__,static_url_path='/pp/2/4556565656',static_folder='1245487878awda')
@app.route('/')
def test_01():
    return 'hello'
if __name__ == '__main__':
    app.run()

代码目录

结果

好滴,上结论

我们发现static_folder是用来指代存放static文件的目录,这个文件是必须的存在的,static_url_path是我们再url里输入地址用来指向static文件的。相当于是一个参数指向的最终结果是static_folder

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值