2012-07-27 54 views
4

金字塔中的add_static_view(name,path)如何工作?金字塔的add_static_view如何工作?

从文档字符串:。

“的name参数是表示应用程序相对 本地URL前缀字符串,可以可选择地一个完整的URL 的path参数是磁盘上的路径,其中静态文件 驻留。这可以是绝对路径,相对封装路径, 或资产规范。“

不知怎的,我有一个印象,这个描述不是 非常准确。

如果我添加一些代码沿

config.add_static_view("static", "/path/to/resource/on/filesystem") 

的线条和我访问

http://localhost:PORT/static/logo.png 

我看到logo.png给出 它可以在

/path/to/resource/on/filesystem/ 
找到

现在,如果我有一些代码如下

config.add_static_view("http://myfilehoster.com/images", "myproject:images") 

说,“path说法就是 静态文件驻留在磁盘上的路径”的描述似乎不准确了,因为实际 文件驻留myfilehoster的磁盘上。 在我看来,我只是在我的程序代码中注册某种标识符 (myproject:images),以引用 “真实”位置“http://myfilehoster.com/images”。 例如

request.static_url("myproject:images/logo.png") 

将得到解决 为 “http://myfilehoster.com/images/logo.png”。

那么这里的文档是不准确的还是我错过了什么?

回答

2

您错过了一些东西。在narrative documentation on static assets它指出:

而是代表一个URL前缀,则name参数调用来add_static_view()可以交替是URL。我们到目前为止看到的每个示例都显示了使用name参数作为URL前缀。但是,当nameURL时,可以从外部网络服务器提供静态资产。在此模式下,当使用pyramid.request.Request.static_url()生成URL时,name将用作URL前缀。

API documentation类似措辞用于:

add_static_view被称为与表示一个URL前缀的name参数,因为它是上面,后续调用pyramid.request.Request.static_url()有与path开始路径传递给add_static_view的参数将生成一个类似http://<Pyramid app URL>/images/logo.png的URL,这将导致mypackage包的images子目录中的logo.png文件被投放。

使用URL切换的add_static_view行为完全和path参数被解释为仅针对.static_url()方法的象征性的路径。后面的细节可能没有在文档中明确描述,如果您对此感到强烈的话,您可以在pyramid issue tracker中提出问题。

+0

谢谢!这为我澄清。我想我可能会建议对目前为止非常好的文档进行更改。 – Aton 2012-07-27 15:16:50

+0

我认为这让我相信现在到处都在使用它。 – 2012-07-28 11:56:32