У меня есть базовый HTML-шаблон Django:
<html>
<head>...</head>
<body>
<div id="products">
<div>Product 1</div>
<div>Product 2</div>
</div>
</body>
</html>
Мне нужно вернуть только содержимое div[id="products"]
из views.py
Итак, я попробовал это в views.py
:
from django.http import HttpResponse
from django.template.loader import get_template
from lxml import etree
from lxml.html import fromstring
def products(request):
template = get_template('products/products.html')
tree = fromstring(template.template.source)
el = tree.xpath('//div[@id="products"]')[0]
template.template.source = etree.tostring(el).decode('utf-8')
print(template.template.source)
// Prints exactly what I need
// <div>Product 1</div>
// <div>Product 2</div>
content = template.render({}, request)
print(content)
// Prints full rendered products.html's HTML
return HttpResponse(content)
Наверняка, страница также отображает полный шаблон
Кажется, что переопределение template.source
не работает
Итак, возможно ли изменить егокак-то?