Django print Список пользователей - PullRequest
1 голос
/ 19 мая 2019

Я хочу напечатать список пользователей, но я не уверен, как это сделать.У меня уже есть 2 зарегистрированных пользователя, но они не печатаются

mainapp \ templates \ home.html

<!-- templates/home.html-->
{% extends 'base.html' %}

{% block title %}Home{% endblock %}

{% block content %}
{% if user.is_authenticated %}
  <p>Hi {{ user.username }} | <a href="{% url 'logout' %}">logout</a></p>

    <ul>
    {% for user in users %}
        <li><a href="{% url 'mainapp:lista' user.id %}">{{ user.username}}</a></li>
    {% endfor %}
    </ul>

{% else %}
  <p>You are not logged in</p>
  <a href="{% url 'login' %}">login</a>
  </br>
  <a href="{% url 'signup' %}">sign up</a>
{% endif %}
{% endblock %}

mainapp \ views.py

from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, HttpResponseRedirect
from .models import Osoba
from django.template import loader
from django.views.generic import View, ListView, DetailView
from django.urls import reverse
from django.contrib.auth.models import User

def lista(request):
    users = User.objects.order_by('-username')[:5]
    return render(request, 'mainapp/home.html', {'users': users})

Ответы [ 2 ]

1 голос
/ 19 мая 2019

в views.py

class UserList(ListView):
    model = User

class UserDetail (DetailView):
    model = User

in urls.py

path ('detail/<int:pk>/', views.UserDetail.as_view(), name="user-detail"),
path ('detail/<int:pk>/', views.UserList.as_view(), name="user-list"),

in user_list.html

{% if object_list %}
    <ul>
    {% for object in object_list %}
        <li><a href="{% 'url user-detail' object.id %}">{{ object.username}}</a></li>
    {% endfor %}
    </ul> {% else %}
    <p>No polls are available.</p> 
{% endif %}
1 голос
/ 19 мая 2019

Итак, вы уже создали свой шаблон, поэтому вместо использования HttpResponse(output) мы можем использовать render [Django-doc] :

from django.contrib.auth.models import User
from django.shortcuts import <b>render</b>

def lista(request):
    users = User.objects.order_by('-username')[:5]
    return <b>render(request, 'mainapp/home.html', {'users': users})</b>

Здесь мы таким образом передаем переменную с именем users в шаблон, и она содержит значение локальной переменной users в вашей функции lista.

Вы обычно храните свой шаблон в каталоге с тем же именем, что и приложение, в каталоге template приложения, например:

mainapp
    templates
        mainapp
            home.html
    __init__.py
    apps.py
    urls.py
    models.py
    views.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...