Я имею несколько проектов в Django и чередуюсь между одним и другим время от времени. У всех них есть путь/media/, который обслуживается django.views.static.serve, и у них всех есть/media/css/base.css файл.
Проблема, каждый раз, когда я выполняю один проект, запросы к 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, и т.д.)?
Для этого вы можете использовать собственное промежуточное ПО:
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
.