Как я могу отобразить всех пользователей на моей html-странице?
Этот фрагмент кода позволяет получить требуемый вывод в терминале python
views.py
from django.contrib.auth.models import User
userList =User.objects.all()
print(userList)
выводит это в терминал
<QuerySet [<User: brad>, <User: john>]>
Я знаю, что мне нужно просмотреть QuerySet, но я не могу связать это представление с моей главной страницей.
Как я могу получить это на моей главной HTML странице?
Вот псевдокод, который вы можете попробовать,
from django.contrib.auth.models import User
from django.shortcuts import render
def index(request):
userList =User.objects.all()
return render(request, 'users.html', {'users': userList})
А users.html, например,
<h1>USERS</h1>
<ul>
{% for user in users %}
<li>{{ user }}</li>
{% endfor %}
</ul>
urls.py похож на
from django.contrib import admin
from django.urls import path
from app1.views import *
urlpatterns = [
path('', index),
path('admin/', admin.site.urls),
]
В своем views.py создайте view как
from django.views.generic.list import ListView
from django.contrib.auth.models import User
class UserListView(ListView):
model = User
template_name = 'your_template_name.html'
Тогда в вашем urls.py
from django.urls import path
from yourapp.views import UserListView
urlpatterns = [
path('userlists', UserListView.as_view(), name='user-list'),
]
Затем в вашем html цикле через object_list как
<h1>User List</h1>
<ul>
{% for user in object_list %}
<li>{{ user.username }}</li>
{% empty %}
<li>No users yet.</li>
{% endfor %}
</ul>