Ошибка при загрузке зарегистрированных данных пользователя - PullRequest
0 голосов
/ 10 ноября 2019

Я использую Django 2.2.6.

Код для входа в систему

class loginController(View):
    def post(self, request):
        username = request.POST.get('username')
        password = request.POST.get('password')
        userobj = authenticate(username = username, password = password)
        if(userobj != None):
            login(request, userobj)
            return redirect('myprofileapp:profile')

После аутентификации пользователя перейдите на страницу профиля. Когда эта строка выполняет if(request.user.is_authenticated):, я получаю сообщение об ошибке.

class accountController(View):
    def get(self, request):
        if(request.user.is_authenticated):
            return HttpResponse(request.user)

Объект «Пользователь» не повторяется

Редактировать 1

class accountController(View):
    def get(self, request):
        if(request.user.is_authenticated):
            print(request.user.username)
            return HttpResponse("ok")
        else:
            return HttpResponse("not ok")

ничего не печатается. Просто хорошо напечатано в коде выше.

Ответы [ 3 ]

0 голосов
/ 10 ноября 2019

Вы не должны return HttpResponse(request.user), так как это не повторяемый объект. Это просто SimpleLazyObject AuthenticationMiddleware.

0 голосов
/ 10 ноября 2019

Это неправильно:

return HttpResponse(request.user)

Вы можете передать строку в HttpResponse. Вы передаете request.user, который является объектом. Поскольку имя пользователя является строкой, вы можете сделать что-то вроде:

return HttpResponse( request.user.username)

В принципе, любая строка, которую вы передаете HttpResponse, будет отображаться в браузере. Вы передаете «хорошо», хорошо будет напечатано, вы передаете «Панкадж», Панкадж печатается. Вы передаете request.user.username, который является строкой, это имя пользователя отображается в браузере как ответ.

Помещение чего-либо в print выводит на вашу консоль django, это не печатает в вашем веб-браузере.

0 голосов
/ 10 ноября 2019

вместо if(request.user.is_authenticated): попробуйте if request.user.is_authenticated():

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...