flask(3)關於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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM