Как Django заставить хранить Session в словаре?

Ссылка скопирована
1 ответ

День добрый!
стоит задача связать сессию в джанге со своим ключём(словарем), при попытке
request.session["my_key"]=123
программа валится со словами, не могу сохранить данные в локальную БД, так ее не кто об этом и не просит, задачи хранить на постоянной основе сессии не стоит, пока программа работает пусть данные хранятся в объектах джанги, упал сервер, не беда, пользователи прелогируются.

Заранее спасибо за советы.

PS заранее еще раз скажу, нет БД.

Дополнительно:

а свой session storage для начала написан?
ну и не нужно пересказывать ошибку своими словами, нужно показывать ее traceback

Ответы:

Как насчет сначала читать доки? https://docs.djangoproject.com/en/5.0/ref/settings...

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Дмитрий К. Ответ

Для того чтобы заставить Django хранить сессии в словаре, вам необходимо настроить соответствующий backend для хранения сессий. В Django существует несколько встроенных backend'ов для работы с сессиями, таких как база данных, файлы и кэш. Однако, если вам нужно хранить сессии в словаре, вам придется создать собственный backend.

Для начала создайте файл backend.py в вашем приложении Django и определите в нем класс, который будет отвечать за хранение сессий в словаре. Вот пример такого класса:

from django.contrib.sessions.backends.base import SessionBase
 
class DictSessionStore(SessionBase):
    def load(self):
        session_data = {}  # Здесь можно инициализировать пустой словарь
        return session_data
 
    def create(self):
        self.session_key = self._get_new_session_key()
        self.modified = True
 
    def save(self, must_create=False):
        pass  # Здесь можно добавить логику сохранения сессии в словаре
 
    def delete(self, session_key=None):
        pass  # Здесь можно добавить логику удаления сессии
 
    def exists(self, session_key):
        return False  # Здесь можно добавить логику проверки существования сессии

from django.contrib.sessions.backends.base import SessionBase class DictSessionStore(SessionBase): def load(self): session_data = {} # Здесь можно инициализировать пустой словарь return session_data def create(self): self.session_key = self._get_new_session_key() self.modified = True def save(self, must_create=False): pass # Здесь можно добавить логику сохранения сессии в словаре def delete(self, session_key=None): pass # Здесь можно добавить логику удаления сессии def exists(self, session_key): return False # Здесь можно добавить логику проверки существования сессии

Затем в файле settings.py вашего проекта Django добавьте следующую конфигурацию для использования вашего нового backend'а:

SESSION_ENGINE = 'путь.к.вашему.классу.DictSessionStore'

SESSION_ENGINE = 'путь.к.вашему.классу.DictSessionStore'

После этого Django будет использовать ваш собственный backend для хранения сессий в словаре. Обратите внимание, что этот пример предоставляет базовую реализацию, и вам может потребоваться дополнительная настройка в зависимости от ваших конкретных потребностей.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно