Как мы печатаем django значение объекта модели? - PullRequest
0 голосов
/ 03 мая 2020

Привет всем! Итак, я создаю модели в models.py файле моего проекта django и контроллеры в views.py. Я написал функцию с именем register(request), которая добавляет нового пользователя в мою базу данных, а другую - с именем login(request), которая проверяет, находятся ли данные, отправленные пользователем, в моей базе данных для входа в него. Вкратце, проблема в том, когда я хочу напечатать имя пользователя в моем шаблоне, оно показывает мне объект в строке ...

Вот функция login(request):

def login(request):

    title = 'Connexion'

    if request.method == 'POST':
        email_sent = request.POST['email']
        password_sent = request.POST['password'].encode('utf-8')

        global isConnected

        user = Users.objects.filter(email = email_sent)

        if user and bcrypt.checkpw(password_sent, user[0].password):
            if isConnected in request.session:
                isConnected = request.session['isConnected']
                return redirect('http://localhost:8000/', 
                                {'isConnected':isConnected, 
                                 'first_name':user[0].first_name, 
                                 'last_name':user[0].first_name})

            else:
                request.session['id'] =user[0].first_name
                request.session['first_name'] = user[0].first_name
                request.session['last_name'] = user[0].first_name
                request.session['phone'] = user[0].first_name
                isConnected = True

                return redirect('http://localhost:8000/', 
                                {'isConnected':isConnected, 
                                 'first_name':user[0].first_name })

        else:
            print('Something went wrong')
            return render(request, 'login.html', 
                          {'title':title, 'isConnected':isConnected})

        return render(request, 'login.html', 
                      {'title':title, 'isConnected':isConnected})

    else:

        return render(request, 'login.html', 
                      {'title':title, 'isConnected':isConnected })

Вот что я представляю переменная first_name пользователя в моем шаблоне:

<span class="initials" style="...">{{ first_name }}</span>

И вот она мне печатается:

<django.db.models.query_utils.DeferredAttribute object at 0x0000017850EE7A00>

1 Ответ

0 голосов
/ 03 мая 2020

просто используйте конец .first () вашего запроса как:

   user = Users.objects.filter(email = email_sent).first()

, так что у вас есть первый объект и вам не нужно нарезать. помните, что Django запросы ленивы.

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