Кэш при открытии пользователем нескольких вкладок Redis + Django

У меня есть база данных, которая обновляется раз в месяц, поэтому я использую redis для сохранения кэша

У меня все работает нормально, я добавляю имя пользователя после ключа следующим образом:

nhan_vien=CustomUser.objects.get(id=request.user.id).username
contract_number = cache.get("contract_number" + nhan_vien)

мои настройки:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        'TIMEOUT': 60 * 60 * 8,
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
        
    }
}

Пользователь не может получить доступ к кэшу другого пользователя.

Если пользователь открыл 2 вкладки, Tab1: у него есть номер_контракта из cache.get("contract_number" + nhan_vien). Он открывает новую вкладку 2, тогда у него/нее есть новый номер_контракта из cache.get("contract_number" + nhan_vien). Моя проблема, когда он/она сохраняет данные в tab1, мой сайт получает значение из нового contract_number (в tab2) для сохранения данных, в то время как содержимое принадлежит contract_number в tab1. Если я устанавливаю таймаут, то по истечении этого времени не появляется ни одна запись контракта, и тогда они не могут сохранить данные.

У меня 3 вопроса:

  1. How can I handle this issue by redis + django. How can I dont allow user opens a new tab while they access my website?
  2. If I cannot solve this by only redis + django, Is there any other solutions?
  3. I used to read in Stackoverflow https://stackoverflow.com/questions/7763115/django-passing-data-between-views how can pass data between views. Solution 6 is about REST API's, can I use REST API's to handle my issue? Sorry if this is not a good question because I dont know about REST API.

Спасибо, что прочитали и ответили на мой вопрос.

Вернуться на верх