2010-04-28 39 views
6

我在Django中有幾個項目,並且偶爾在一個和另一個之間交替。它們都有一個/ media/path,由django.views.static.serve提供,它們都有一個/media/css/base.css文件。如何防止Django測試服務器中的HTTP 304

問題是,無論何時運行一個項目,請求base.css都會返回一個HTTP 304(未修改),可能是因爲時間戳未更改。但是,當我運行另一個項目時,返回相同的304,使瀏覽器使用前一個項目緩存的文件(因此使用錯誤的樣式表)。

只是爲了記錄在案,這裏是中間件類:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.middleware.transaction.TransactionMiddleware', 
) 

我總是使用默認的地址http://localhost:8000。 是否有另一種解決方案(除了使用不同的端口 - 8001,8002等)?

+0

你好@Augusto男人。如果你不想使用默認的端口8000,那麼你可以給你的端口不使用你的命令 - python manage.py runserver 8001 – 2015-08-21 08:40:05

回答

11

可以推出自己的中間件爲:

class NoIfModifiedSinceMiddleware(object): 
    def process_request(self, request): 
     request.META.pop('HTTP_IF_MODIFIED_SINCE', None) 

基本上,它只是從請求刪除HTTP_IF_MODIFIED_SINCE頭。

事後:或者你可以monkeypatch django.views.static.serve和取代was_modified_since函數由一個,總是返回True

+0

hello @alex vasi!我有同樣的問題,請詳細說明您的答案,以便我可以undeerstand如何應用上面的代碼。 – 2015-08-21 08:37:13

+0

閱讀中間件,它們很簡單,django文檔非常棒。對於「monkeypatch」部分,這需要您找到安裝djagno模塊的位置,然後按照答案中的說明編輯django/view/static/serve。 – 2016-01-29 17:45:22

+0

請注意,在插入此中間件時,它必須是列表中的第一個中間件才能工作。感謝您的解決方案! – 2016-01-29 18:00:08

相關問題