Как изменить template.source в Django для отображения части содержимого HTML - PullRequest
0 голосов
/ 16 июня 2019

У меня есть базовый 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 не работает

Итак, возможно ли изменить егокак-то?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...