Я столкнулся с похожими проблемами. Стандартный способ Django - отключить кеш для аутентифицированных пользователей.
#settings.py
CACHE_MIDDLEWARE_ANONYMOUS_ONLY=True
Это прекрасно работает, если разные пользователи видят разные страницы (например, их имя пользователя на них), и у вас не может быть одной версии для них.
Но если существует только 2 версии страницы: для аутентифицированных пользователей и для других, то нецелесообразно полностью отключать кеш для аутентифицированных пользователей. Я написал приложение , которое, кроме всего прочего, позволяет в этом случае точно настроить кэш.
Update.
Кстати: вы упомянули, что при нажатии кнопки «обновить» получена правильная версия страницы. Это означает, что проблема заключается в кэше на стороне клиента (Expires header или E-tag), а не в кэше сервера.
Чтобы предотвратить кэширование на стороне клиента (вы должны сделать это, если у вас несколько версий страницы с одним и тем же URL), используйте @cache_control(must_revalidate=True)
decorator.