Браузерный вывод 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. Вы сможете просмотреть контекст, переданный шаблону.