我試圖做一些Trac項目管理網站的自定義,並遇到了一個有趣的問題。該項目有一組SVG和PNG圖像。 SVG圖像具有許多優點,包括多個超鏈接和較小的傳輸大小,對PNG較大,只能鏈接到單個文檔。使用Trac和WSGI時,如何獲取Genshi模板中的遠程用戶代理?
我意識到,可以使用jQuery在頁面加載後嗅探用戶代理,並用圖像的SVG版本替換PNG,但這會導致PNG被髮送到所有客戶端。我也可以讓Genshi用所有客戶端的SVG替換PNG,然後使用jQuery將PNG放回,但同樣的問題會導致。我可以使用jQuery爲所有客戶端插入適當的圖像,但這只是要求客戶端執行服務器應該做的事情似乎很愚蠢。
有沒有一種方法可以在Genshi模板中獲取瀏覽器信息?這比調用環境變量更困難,因爲我正在使用WSGI運行Trac。我查看了repr(locals())
的輸出,沒有看到任何看起來像解決了我的問題的東西。我也想避免修改Trac源代碼。
是啊,在CGI環境或WSGI的應用程序,我可以做到這些的內部,但是'environ'是空的內部元史,我想不通,如果請求對象從Trac系統傳遞到元史其中//WSGI。此外,HTTP_ACCEPT可能是不行的,因爲一些瀏覽器撒謊,並說他們可以接受SVG,但做得不好 - 我看着你鉻!什麼使用巨大的背景白盒子 – Pridkett 2009-12-06 15:24:38
@Pridkett:grep你的模板名稱的trac源代碼,並在渲染代碼中傳遞必要的變量。 – jfs 2009-12-06 16:08:01
我試圖避免更改Trac源代碼。我已經走了這條路,太多次了,並不想擔心管理各種各樣的修補程序 - 即使是非常簡單的修補程序。 – Pridkett 2009-12-07 14:11:12