Нужна помощь в доступе к переменным сессии в Django Channels consumers.py
Я генерирую случайный userid и сохраняю его как переменную сессии в моем представлении. Я пытаюсь получить доступ к этой переменной сессии в consumers.py для идентификации пользователя (не аутентифицированного) и обновления пользователя об изменениях в базе данных.
view.py :
def index(request):
request.session['uniqueid'] = 'random_number'
print(request.session['uniqueid']) # this is working
return render(
request,
'home.html',
)
consumers.py:
class WSConsumer(WebsocketConsumer):
def connect(self):
self.accept()
U = self.scope['session']["uniqueid"]
Ошибка:
Exception has occurred: KeyError (note: full exception trace is shown but execution is paused at: connect) 'uniqueid'
Я изменил localhost на 127.0.0.1 ('ws://127.0.0.1:8000/ws/socket/'), как описано в https://stackoverflow.com/a/67242832, но получаю ту же ошибку.
Я не могу определить ошибку, любая помощь будет признательна.
Вам следует пометить сессию как "измененную", чтобы убедиться, что она будет сохранена.
Проверьте SessionMiddleware, была ли модифицирована request.session, или если конфигурация предусматривает сохранение сессии
сессию каждый раз, сохраните изменения и установите куки сессии или удалите
cookie сессии, если сессия была удалена.
def index(request):
session = request.session
session['uniqueid'] = 'random_number'
session.modified = True
return render(request, 'home.html')
Также print в вашей функции просмотра возвращается кэшированное значение или постоянное значение.