Найти тему

Django Python передать объект в шаблон

Произошла ситуация, Вы спарсили информацию с одного сайта и хотите вывести на своем сайте.

Обычный список или словарь не подходит, Вам нужно сразу 4 списка(словаря) вывести на своей странице.

И так, нам требуется передать объект в шаблон и с помощью цикла вывести информацию.

Для начала создадим класс.

class dnsProduct():
def __init__(self,name,description,price,url, img):
self.name = name
self.description = description
self.price = price
self.url = url
self.img = img

Далее, мы должны в этот класс передать наши данные и вернуть их в view.

-2
class KudoSaki:
def TestX():
name = ['Процессор хххх','Процессор хххх','Процессор хххх',
'Процессор хххх','Процессор хххх']
description = ['[AM4, 8 x 3600 МГц, L2 - 4 МБ, L3 - 32 МБ, 2хDDR4-3200 МГц, TDP 65 Вт, кулер]','[AM4, 8 x 3600 МГц, L2 - 4 МБ, L3 - 32 МБ, 2хDDR4-3200 МГц, TDP 65 Вт, кулер]','[AM4, 8 x 3600 МГц, L2 - 4 МБ, L3 - 32 МБ, 2хDDR4-3200 МГц, TDP 65 Вт, кулер]',
'[AM4, 8 x 3600 МГц, L2 - 4 МБ, L3 - 32 МБ, 2хDDR4-3200 МГц, TDP 65 Вт, кулер]','[AM4, 8 x 3600 МГц, L2 - 4 МБ, L3 - 32 МБ, 2хDDR4-3200 МГц, TDP 65 Вт, кулер]']
price = ['27 999','27 999','27 999','27 999','27 999']
url = ['https://www.dns-shop.ru/product/4d664a0d90d61b80/processor-amd-ryzen-7-3700x-oem/','https://www.dns-shop.ru/product/4d664a0d90d61b80/processor-amd-ryzen-7-3700x-oem/','https://www.dns-shop.ru/product/4d664a0d90d61b80/processor-amd-ryzen-7-3700x-oem/',
'https://www.dns-shop.ru/product/4d664a0d90d61b80/processor-amd-ryzen-7-3700x-oem/','https://www.dns-shop.ru/product/4d664a0d90d61b80/processor-amd-ryzen-7-3700x-oem/']
i = 0
x = list()
while i < len(name):
x.append(dnsProduct(name[i], description[i], price[i], url[i]))
i = i + 1
return x

Переходим во View.py и добавляем строчки кода:

-3
def home(request):
"""Renders the home page."""
assert isinstance(request, HttpRequest)
qoro = KudoSaki.TestX()
return render(
request,
'app/index.html',
{
'title':'Home Page',
'year':datetime.now().year,
'dnsProduct': qoro,
}
)

Переходим в шаблон index.html и добавляем код, что бы вывести наши данные.

-4
{% for product in dnsProduct %}
<p>{{ product.name }}</p>
<p>{{ product.price }}</p>
<p>{{ product.description }}</p>
<p>{{ product.url }}</p>
{% endfor %}

Готово, все работает :)

-5

Спасибо за прочтение :)
Лайк - Подписка - Мотивирует лучше "
;"