我想使用webob.static.DirectoryApp。我只是不知道该怎么做
从http://docs.webob.org/en/latest/file-example.html的示例来看,我的路由器如下所示:
class Router(object):
def __init__(self, static_path=None):
self.routes = []
self.static_path = static_path if static_path is not None else os.path.join(os.path.dirname(os.path.realpath(__file__)), 'static')
self.static_app = DirectoryApp(self.static_path)
def add_route(self, template, controller, **vars):
if isinstance(controller, basestring):
controller = load_controller(controller)
self.routes.append((re.compile(template_to_regex(template)),
controller,
vars))
def __call__(self, environ, start_response):
req = Request(environ)
for regex, controller, vars in self.routes:
match = regex.match(req.path_info)
if match:
req.urlvars = match.groupdict()
req.urlvars.update(vars)
return controller(environ, start_response)
return exc.HTTPNotFound()(environ, start_response)若要创建应用程序以服务:
def create_app():
router = Router()
#router.add_route('/', controller='app.controllers.default:index')
router.add_route('/', controller=default.index)
return router这为我增加的控制员提供了很好的路线。我还添加了一个self.static_app。
我只是不知道如何使用它来服务来自static-folder的静态文件!谁能指点我一下吗?
发布于 2014-01-14 08:54:26
正如@gawel所写的,答案是添加一个以DirectoryApp为控制器的路由。为了让它直接从示例中工作,还需要注意另一件事。
示例中的扩展template_to_regex向强制我们编写涵盖整个url以捕获的路由表达式添加了一个$。canbewhatever从来没有被使用过,而且可以成为任何东西。重要的是变量后面的正则表达式。
add_route应该如下所示:
router.add_route('/static{canbewhatever:.*}', controller=static_app)https://stackoverflow.com/questions/21090334
复制相似问题