Как отобразить html-контент в шаблонах django из статей фида, проанализированных feedparser - PullRequest
1 голос
/ 23 марта 2012

Я анализирую URL фида и получаю содержание статьи.Но когда я пытаюсь отобразить содержимое на html-странице в HttpResponse, html-элементы или теги в содержимом отображаются как есть, как и остальная часть содержимого.Нужно ли обрабатывать содержимое для отображения html-содержимого в нем, прежде чем отображать его в шаблоне django?

Кроме того, как получить значок для данного канала и отобразить в шаблоне django.

Я новичок в Джанго и Питоне.Я понятия не имею, как это сделать.

Я использую feedparser для разбора URL каналов.

Я использую следующий код, чтобы получить список URL из содержимого статьи.Теперь, как я должен получить URL-адрес значка, потому что значок в некотором контенте отображается в формате .png, и есть несколько ссылок .png.как определить, какой из них является favicon?

import feedparser
import lxml.html as lh
import urllib2

#Import Feed for Parsing
d = feedparser.parse("http://www.popgadget.net/atom.xml")

# Print feed name
print d['feed']['title']

# Determine number of posts and set range maximum
posts = len(d['entries'])

# Collect Post URLs
for post in d['entries']:
   link=post['link']
   print('Parsing {0}'.format(link))
   doc=lh.parse(urllib2.urlopen(link))
   imgs=doc.xpath('//img[@class="bpImage"]')
   for img in imgs:
       print(img.attrib['src'])

1 Ответ

3 голосов
/ 23 марта 2012

Я анализирую URL фида и получаю содержание статьи. Но когда я попробуйте сделать контент на html странице в HttpResponse, html элементы или теги в контенте отображаются как есть, как и остальные содержимое. Нужно ли обрабатывать содержимое для отображения HTML что в нем есть, прежде чем рендерить его в шаблон django?

Я думаю, что Django экранирует HTML, полученный с помощью feedparser. Причина этого заключается в том, что HTML может содержать вредоносный HTML и, в конечном итоге, вредоносные теги.

Если вы действительно хотите отобразить HTML, полученный с помощью feedparser, без экранирования Django, используйте | safe filter .

Кроме того, как получить значок для данного канала и отрисовать в шаблоне django

  1. Загрузите фид, используйте httplib

  2. Найдите значок или теги логотипа, URL-адрес значка должен быть содержимым тега, используйте lxml

  3. Отобразите его, используя тег img в вашем шаблоне

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