【发布时间】:2015-09-15 04:28:39
【问题描述】:
您好,我正在查看Werkzeug tutorial,我对声明有点困惑:app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {
'/static': os.path.join(os.path.dirname(__file__), 'static')
})
包含在里面:
class Shortly(object):
def __init__(self, config):
self.redis = redis.Redis(config['redis_host'], config['redis_port'])
def dispatch_request(self, request):
return Response('Hello World!')
def wsgi_app(self, environ, start_response):
request = Request(environ)
response = self.dispatch_request(request)
return response(environ, start_response)
def __call__(self, environ, start_response):
return self.wsgi_app(environ, start_response)
def create_app(redis_host='localhost', redis_port=6379, with_static=True):
app = Shortly({
'redis_host': redis_host,
'redis_port': redis_port
})
if with_static:
app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {
'/static': os.path.join(os.path.dirname(__file__), 'static')
})
return app
那里发生了什么?为什么 app.wsgi_app 被分配给 SharedDataMiddleware 返回的任何东西?我的意思是,app.wsgi_app 不只是一个方法名吗?
任何见解将不胜感激:) 谢谢!
【问题讨论】: