2012-07-27 49 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