#python #django #session
#python #django #сессия
Вопрос:
Итак, я работаю с django python, и в каждом новом браузере я получаю новый идентификатор сеанса для своего файла cookie, каждый идентификатор сеанса получает уникальную базу данных сеансов. Я ищу способ получить данные из других идентификаторов сеанса, если это возможно.
Пример: я на своем сайте в 2 разных браузерах.
Каждый браузер получил уникальный файл cookie sessionid, следовательно, уникальную базу данных сеанса.
(примеры файлов cookie (не настоящие или действительные)):
Chrome: a7363dc Firefox: a3621bcz
В Chrome я получил запрос.session [«foo»] Установил слишком «bar»
В Firebox я получил request.session [«foo»] слишком «зоопарк»
Есть ли способ, которым я могу использовать var = request.session[a3621bcz][‘foo’], чтобы он принимал значение сеанса «foo» в firefox? (допустим, я выполняю это в Chrome)
Или, в качестве альтернативы, есть ли какой-либо способ сделать каждый файл cookie с идентификатором сеанса одинаковым для всех? чтобы у всех был одинаковый доступ к элементам request.session[«elm»]?
Например, будь то в Chrome, Firefox или даже в starbucks на моем chromebook, когда я ищу запрос.session [‘foo’] возвращает «bar» независимо от того, с какого из них я вошел в систему?
Ответ №1:
Вы можете получить доступ к сеансам с заданным идентификатором сеанса с помощью:
from django.conf import settings
from importlib import import_module
engine = import_module(settings.SESSION_ENGINE)
sessionstore = engine.SessionStore
session = sessionstore(session_key)
с session_key
помощью ключа сеанса (так здесь 'a3621bcz'
). Таким образом, вы можете получить к нему доступ с session['foo']
помощью . При этом, вероятно, лучше не смешивать сеансы. Django использует промежуточное программное обеспечение сеанса, чтобы сделать доступ к соответствующему сеансу более удобным и, таким образом, предотвратить «утечку» переменных сеансов между двумя сеансами.
Комментарии:
1. Просто для пояснения, допустим, я нахожусь в своем браузере Chrome с идентификатором сеанса: a7363dc, если я выполняю приведенный выше код (session = sessionstore(‘a3621bcz’)) Тогда, если я сделаю var1 = session[«foo»] , это даст мне значение foo сеанса для моего firefox sessionid? (‘a3621bcz’)
2. @jasonmzx: да.