2010-04-28 4 views
6

У меня есть несколько проектов в Django и поочередно чередуются между ними. У всех из них есть/media/path, который обслуживается django.views.static.serve, и все они имеют файл /media/css/base.css.Как предотвратить HTTP 304 в тестовом сервере Django

Проблема заключается в том, что всякий раз, когда я запускаю один проект, запросы на 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

Hello @Augusto Men. Если вы не хотите использовать порт по умолчанию 8000, то вы можете предоставить свой порт no своей командой as-python manage.py runningerver 8001 –

ответ

11

Вы можете свернуть свой собственный промежуточное программное обеспечение для этого:

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

В основном, он просто удаляет заголовок HTTP_IF_MODIFIED_SINCE из запроса.

Последующая мысль: Или вы можете обезглавить django.views.static.serve и заменить was_modified_since функцией той, которая всегда возвращает True.

+0

hello @alex vasi! У меня такая же проблема, пожалуйста, изложите свой ответ, чтобы я мог отказаться от того, как я могу применить выше код. –

+0

Читайте на middlewares, они легки, а django docs - потрясающие. Для части «monkeypatch», которая потребует, чтобы вы обнаружили, где установлен модуль djagno, затем отредактируйте django/view/static/serve, как указано в ответе. –

+0

Обратите внимание, что при вставке этого промежуточного программного обеспечения оно должно быть первым промежуточным программным обеспечением в списке для работы. Спасибо за решение! –

 Смежные вопросы

  • Нет связанных вопросов^_^