AttributeError: объект 'AnonymousUser' не имеет атрибута '_meta' Каналы Django
Я пытаюсь залогинить пользователей в каналах django и он бросает
AttributeError: 'AnonymousUser' object has no attribute '_meta'
Мой потребитель
class LoginConsumer(AsyncJsonWebsocketConsumer):
async def connect(self):
self.room_name = "login_room"
self.room_group_name = "login_group"
await self.channel_layer.group_add(self.room_group_name, self.channel_name)
await self.accept()
await self.send(json.dumps({"message": "connected to login socket"}))
async def receive(self, text_data):
self.json_data = json.loads(text_data)
await login(self.scope, await self.query())
await database_sync_to_async(self.scope["session"].save)()
async def query(self):
await self.get_user_from_db()
@database_sync_to_async
def get_user_from_db(self):
user = User.objects.get(username=self.json_data["username"])
return user
async def disconnect(self, code):
print("disconnected")
await super().disconnect(code)
Мой вид входа
def login_user(request):
if request.user.is_anonymous:
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:
login(request, user)
return redirect("index")
else:
messages.error(request, "invalid username or password")
return redirect("login")
return render(request, "login.html")
else:
return redirect("index")
Мой js файл
const username = document.querySelector(".username");
const password = document.querySelector(".password");
const socket = new WebSocket("ws://localhost:8000/ws/auth/login");
const button = document.querySelector("button");
button.addEventListener("click", (e) => {
if (password.value !== "" && username.value !== "") {
socket.send(
JSON.stringify({
username: username.value,
password: password.value,
})
);
}
});
Full Traceback:
Эта ошибка возникает на потребителе, а не на представлении