2012-05-01 33 views
0

背景:我正在使用https://bitbucket.org/mariocesar/django-hgwebproxy/wiki/Home將Mercurial瀏覽器添加到我正在構建的Django網站。hgweb原始視圖返回錯誤的內容類型

我遇到的問題是:我們存儲在HG倉庫中的特定文件是綁定區域文件,並且恰巧被命名爲/some/path/somedomain.com,這導致hgweb將內容類型設置爲application/x-msdos-program(當內容是真的是text/plain)當返回文件的原始視圖。不正確的內容類型導致hgwebproxy將內容轉儲到頁面模板中,而不是僅僅返回它。它像這樣的測試跳過模板:

if response['content-type'].split(';')[0] in ('application/octet-stream', 'text/plain'): 
    return response 

一些更多鈔票的解決方案當然是

  1. 重命名的所有文件.zone(拉梅和費時)
  2. 哈克hgwebproxy通過application/x-msdos-program (拉梅和骯髒)
  3. 說服hgweb使用正確的內容類型(真棒!我希望你能幫助)

回答

0

hgweb使用mimetypes來檢測文件的MIME類型。您可以通過添加設置文件來覆蓋「.com」後綴檢測。參見:mimetypes.knownfiles

>>> import mimetypes 
>>> mimetypes.init() 
>>> mimetypes.knownfiles 
['/etc/mime.types', '/etc/httpd/mime.types', '/etc/httpd/conf/mime.types', '/etc/apache/mime.types', '/etc/apache2/mime.types', '/usr/local/etc/httpd/conf/mime.types', '/usr/local/lib/netscape/mime.types', '/usr/local/etc/httpd/conf/mime.types', '/usr/local/etc/mime.types'] 
+0

謝謝!我需要把它弄出去,所以我只是修改了/etc/mime.types。 –