Визуализация текста bs4.Tag с Django шаблонами - PullRequest
1 голос
/ 26 апреля 2020

Я пытаюсь отобразить текст из тегов bs4, используя Django Язык шаблонов.

По какой-то причине bs4.Tag.text недоступен из шаблона. Я могу отобразить его текст, только если получу его раньше и передам себя в шаблон вместо объекта Tag.

Вот код, который я использовал:

from django.template import Template, Context

from bs4 import BeautifulSoup


html_string = '<p>Some text.</p>'
soup = BeautifulSoup(html_string)
tag = soup.find('p')
template = Template('{{ tag.text }} - {{ tag_text }}')
context = Context({'tag': tag, 'tag_text': tag.text})
print(template.render(context))

Ожидаемый результат: Some text. - Some text.

Фактический результат: - Some text.

Я немного смущен. Для моих целей необходимо передать необработанные объекты bs4.Tag для извлечения текста и других атрибутов после. Надеюсь, вы можете помочь мне

1 Ответ

0 голосов
/ 26 апреля 2020

Вы можете попробовать написать собственный тег шаблона для этого.

app / templatetags / bstags.py

from django import template

register = template.Library()

@register.filter
def get_attr(obj, attr):
    return getattr(obj, attr)

, а затем в шаблонах вызвать его как:

{% load bstags %}
{{ tag|get_attr:text }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...