Браузерный вывод HTML/Django/Python не показывает ничего из кода Python

Я прохожу курс Mosh (Python для начинающих (6 часов)). В проекте Django при выводе списка товаров из базы данных с помощью HTML/Python/Django кода. Вывод не отображается корректно. Фактически, он показывает пустоту после тега h1.

Просмотр кода модуля.

from django.shortcuts import render
from products.models import Product


def index(request):
    products = Product.objects.all()
    return render(request, 'index.html',
                  {'product': products})


def new_products(request):
    return HttpResponse('The Following are our new Products')

HTML Code.

<ul>
    {% for product in products %}
        <li>{{ product.name }}</li>
    {% endfor %}
</ul>

Вывод показывает только заголовок Products

У Mosh очень активное сообщество, которое поможет вам в этом, но причина, по которой вы получаете только заголовки товаров, заключается в том, что это все, что вы запрашиваете в цикле for {{ product.name }}. Я не проходил курс, но у модели будут другие атрибуты, которые вы можете вызвать, например, {{ product.image }} и т.д. Удаление названия должно вывести все {{ product}}

В определении модели проверьте столбцы продукта. Это может быть что-то вроде

class Product(models.Model):
name=models.TextField()
price=models.IntegerField()
details=models.TextField()

В вашем HTML определении, добавьте строку типа

<ul>
{% for product in products %}
    <li>{{ product.name }}</li>
<li>{{product.price}}</li>

{% endfor %}

сделайте это, если вы хотите добавить дополнительную информацию из базы данных

У вас опечатка. В контекстных данных, которые вы предоставляете вашему шаблону, вы используете ключ 'product' для вашего набора запросов:

return render(request, 'index.html',
              {'product': products})

В шаблоне вы ссылаетесь на 'products', который не определен.

{% for product in products %}

Обновите имя вашего набора запросов на products: {'products': products}

Рекомендуется установить панель инструментов отладки django. Вы сможете просмотреть контекст, переданный шаблону.

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