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
.