Django Channels self.scope['user'] показывает пустой вывод
Я пытаюсь получить self.scope['users']
на потребителях, но вывод всегда пустой, однако когда я пытаюсь получить self.scope['users'].id
, он дает правильный вывод, т.е. идентификатор пользователя.
Я аутентифицирую и регистрирую пользователя и перенаправляю на страницу, если пользователь аутентифицирован.
views.py
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return redirect('create_room')
else:
return redirect('register')
if request.user.is_authenticated:
return redirect('chat')
return render(request, 'users/login.html')
consumers.py
async def receive_json(self, text_data):
message = text_data['message']
print(self.scope['user']) # <-- this gives a blank output
print(self.scope['user'].id) # <-- this gives proper user id
await self.channel_layer.group_send(
self.room_name,
{
'type': 'send.message',
'room': self.room_name,
'message': message,
'user': self.scope['user'].id
});
routing.py
websocket_patterns = [
re_path(r'chat/(?P<room_name>\w+)/$', MessageConsumer.as_asgi())
]
Печать self.scope показывает, что параметр 'user'
присутствует и содержит 'user': <channels.auth.UserLazyObject object at 0x00000222A571A260>