pyramid_assetgen是一個金字塔的擴展,使您可以Assetgen一個金字塔項目的集成。
包括包裝,設置自定義的請求工廠(使用AssetGenRequestMixin為第一類,你從繼承):
類MyRequest(AssetGenRequestMixin,請求):通
config.set_request_factory(MyRequest)
config.include('pyramid_assetgen“)
使用add_assetgen_manifest配置指令到Assetgen清單文件與靜態目錄相關聯:
config.add_static_view('靜','MYPKG:靜態“)
#默認為尋找一個assets.json文件在同一目錄
config.add_assetgen_manifest('MYPKG:靜態“)
然後只用金字塔的內置request.static_url(路徑,**千瓦)為正常。
依據
Assetgen是一個靜態文件生成工具。在生產中使用時,您可以啟用它的散列模式的輸出文件的文件名的哈希值。這意味著,當你改變一個文件(例如,也許更新自己網站的樣式表),它的名字將會改變。
一方面,這是一個極好的消息,因為它可以讓你實現一個最優的HTTP緩存策略(告訴瀏覽器客戶端永遠緩存的靜態文件)。另一方面,這意味著你需要更新你的模板和/或視圖代碼發球權的URL解析為散列文件名。這是比較容易的,當你使用金字塔,你已經在使用動態函數生成的靜態URL:request.static_url。
這個包,pyramid_assetgen擴展金字塔機械自動更新你的靜態的URL,讓他們下定決心,正確的散列文件名。你可以用它來Assetgen您的金字塔應用程序集成,而無需更改任何模板或視圖代碼或學習任何新的API。
工作流程
如果您運行配置為尋找一個清單文件金字塔的應用程序,那麼該文件需要存在,否則應用程序將拋出一個異常(在配置時)。你應該使用類似這樣建立你的清單文件:
assetgen等/ assetgen.yaml --force
在你喜歡的東西運行你的應用程序金字塔:
pserve等/ production.ini
如果使用[paste.reloader]在開發模式下運行,例如:
pserve等/ development.ini --reload
您可以將您的manifest文件添加到文件reloader應該注意使用,如列表:
從paste.reloader進口add_file_callback
高清watch_manifest_files():
 返回['/var/www/static/assets.json',]
add_file_callback(watch_manifest_files)
但是,你並不需要這樣做,因為你不應該自動重載的生產和發展方式,你不應該哈希你assetgen文件。
配置
如果我們假定配置是pyramid.config.Configurator例如,(也許在你的主/ WSGI應用工廠函數可用),我們可以添加指令或者使用:
從pyramid_assetgen進口add_assetgen_manifest
config.add_directive('add_assetgen_manifest',add_assetgen_manifest)
或者更簡單地說:
config.include('pyramid_assetgen“)
此外,你需要使用,如擴展默認的出廠要求:
從pyramid.request進口申請
從pyramid_assetgen進口AssetGenRequestMixin
類MyRequest(AssetGenRequestMixin,請求):
 通
config.set_request_factory(MyRequest)
(請注意,AssetGenRequestMixin參數必須來請求在您的要求工廠類定義之前,否則static_url方法不會被覆蓋)。
用法
使用該配置,當你使用config.add_static_view暴露一個靜態的目錄,你可以現在是Assetgen清單與它相關聯:
config.add_static_view('靜','MYPKG:靜態“)
config.add_assetgen_manifest('MYPKG:靜態“)
這將尋找一個清單文件中MYPKG:靜態/ assets.json。如果該文件是在別處使用:
config.add_assetgen_manifest('MYPKG:靜態“,體現='/富/ bar.json”)
然後,您可以使用request.static_path和request.static_url正常。因此,舉例來說,如果你已經註冊了一個清單:
{'foo.js':'富-fdsf465ds4f567ds4ds5674567f4s7.js'}
呼籲:
request.static_path('MYPKG:靜態/ foo.js“)
將返回:
“/static/foo-fdsf465ds4f567ds4ds5674567f4s7.js”
測試
我已經運行使用,如python2.6的和Python3.2下的測試:
$ ../bin/nosetests --cover包=的src / pyramid_assetgen --cover擦除--with覆蓋--with-文檔測試
.......
名稱Stmts封面小姐失踪
-------------------------------------------------- -----------------
SRC / pyramid_assetgen / __ init__ 59 0 100%
SRC / pyramid_assetgen /測試/ __ init__ 58 0 100%
-------------------------------------------------- -----------------
總計117 0 100%
-------------------------------------------------- --------------------
在0.552s跑了7測試
OK
要求:
- 在Python中
- 在金字塔
評論沒有發現