源码如下
class Flask(object):
def __init__(self, package_name):
if self.static_path is not None:
self.url_map.add(Rule(self.static_path +'/<filename>',
build_only=True, endpoint='static'))
if pkg_resources is not None:
target = (self.package_name, 'static')
else:
target = os.path.join(self.root_path, 'static')
self.wsgi_app = SharedDataMiddleware(self.wsgi_app, {
self.static_path: target
})
看了werkzeug这部分的文档,还是没有理解意思,可以解释一下吗?谢谢:-)
middleware是wsgi裡的概念,用來包裝你的app,包裝之後就可以在被包裝的部分被呼叫前後做點其他處理:
具體到
SharedDataMiddleware
,其實是處理靜態內容(例如js、圖片…)的,在APP被調用前,檢測一下是不是在可以直接返回靜態文件,可以就直接返回,不調用APP了,不可以就繼續呼叫APP。flask底層採用werkzeug,建議你看一下werkzeug middlewares文件
oraoto的解釋也很到位。