Как предотвратить HTTP 304 в тестовом сервере Django

Я имею несколько проектов в 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, и т.д.)?

6
задан augustomen 28 April 2010 в 14:20
поделиться

1 ответ

Для этого вы можете использовать собственное промежуточное ПО:

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 .

11
ответ дан 9 December 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: