金字塔:add_static_view,其名称='directory / subdirectory'

时间:2012-09-14 08:23:55

标签: python pyramid

我最近刚开始学习Python,并且正在使用Pyramid作为我的网络框架。

我尝试在localhost/images/misc添加静态视图:

config.add_static_view('images', 'C:/Project/Images/')
config.add_static_view('images/misc', 'C:/Path/To/Other/Images/')

但我收到错误:File does not exist: C:/Project/images/misc

因此,将images/misc添加为静态视图的第二行似乎没有任何效果。

我一直在寻找一种方法来做到这一点,但我还没找到任何东西。是否可以添加名称包含子目录的静态视图?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:4)

在幕后,金字塔将name方法的add_static_view()部分转换为name/*subpath形式的金字塔路线谓词(其中name可以包含斜杠本身)。专用静态资产视图附加到该路由谓词。

在您的配置中,这意味着会有images/*subpathimages/misc/*subpath路由谓词,按此顺序。然后,当您请求包含路径images/misc/foo.png的网址时,金字塔会首先找到images/*subpath谓词 ,并尝试在{{1}中查找misc路径元素文件夹,失败。

幸运的是,您可以撤消注册的顺序,只需先注册'C:/Project/Images/'路径:

images/misc

现在首先注册config.add_static_view('images/misc', 'C:/Path/To/Other/Images/') config.add_static_view('images', 'C:/Project/Images/') 谓词,并在测试其他谓词之前匹配任何images/misc/*subpath个网址。