Django извлекает список всех пользователей, но показывает список нескольких пользователей с учетными данными только текущего пользователя

В Django я пытаюсь получить список всех пользователей. Я использую следующий запрос:

users = User.objects.all().order_by('id')

Я могу получить список всех пользователей, но он выводит список всех пользователей, но показывает только учетные данные текущего пользователя? Если у меня 20 пользователей, он покажет 20 пользователей, но только информацию для текущего вошедшего пользователя. Например, я хочу увидеть таблицу следующего вида:

User | Email
------------
User1 | user1@test.com
User2 | user2@test.com
User3 | user3@test.com

Но если текущим пользователем, который вошел в систему, является User1, он показывает:

User | Email
------------
User1 | user1@test.com
User1 | user1@test.com
User1 | user1@test.com

Или если Пользователь2 вошел в систему, то отображается:

User | Email
------------
User2 | user2@test.com
User2 | user2@test.com
User2 | user2@test.com

Вот мой view.py:

def portal_users(request):
   users = User.objects.all().order_by('id')
   return render(request, 'portal/users.html', {"users": users})

шаблоны

{% for users in users %}
       <tr>
        <td>{{user.username}}</td>
        <td>{{user.email}}</td>
       </tr>
{% endfor %}

По умолчанию переменная user внутри шаблона ссылается на текущего пользователя, поэтому вы печатаете текущего пользователя вместо элемента в списке users. Теперь вы можете сказать: "Даже если это происходит, цикл for должен перезаписать переменную user внутри цикла", и вы правы! Но в данном случае ваш цикл for - это {% for users in users %}, обратите внимание, что вы используете users для переменной и итерабельной переменной, поэтому ваш цикл должен быть {% for user in users %}.

Измените ваш шаблон на следующий:

{% for user in users %}
<tr>
    <td>{{user.username}}</td>
    <td>{{user.email}}</td>
</tr>
{% endfor %}

Вы ссылаетесь на users в отличие от user.

Вернуться на верх