Заголовки с двойным экранированием Django в подкастах

#django #itunes #podcast #django-syndication

#django #iTunes #подкаст #django-синдикация

Вопрос:

Я использую Django 1.2, и у меня возникли проблемы с генерацией хорошего XML для подкаста. Любые заголовки, содержащие одинарные кавычки, двойные кавычки или амперсанды, выглядят с двойным экранированием следующим образом:

 <title>Podcast: amp;amp;quot;But we had hoped...amp;amp;quot;</title>
  

Это означает, что они отображаются следующим образом:

 Podcast: amp;quot;But we had hopedamp;quot;
  

Я нашел этот тикет, но он был закрыт давным-давно.

Я создаю свой канал, используя этот фрагмент, и я просто добавляю значение в поле модели в self.title бит, вот так:

 class iTunesPodcastPost():
  def __init__(self, talk):
    self.id = talk.id
    self.approval_date_time = talk.created
    self.title = talk.title # Looks wonky
    self.summary = talk.details # Looks fine
    self.enclosure_url = talk.mp3.url
    self.enclosure_length = talk.mp3.size
    self.enclosure_mime_type = u'audio/mpeg'
    self.duration = '%s' % talk.seconds
    self.explicit = u'clean'
    self.info_url = talk.get_absolute_url()
  

На случай, если это поможет, лента подкастов находится здесь.

Ответ №1:

Похоже, это произошло из-за того, что мне не удалось предоставить item_title метод в моем Feed подклассе.

Как только я добавил:

 def item_title(self, item):
   return item.title
  

Все было хорошо. Ранее по умолчанию вызывался __unicode__ метод моего элемента со странными результатами. Не совсем удовлетворительное решение (я до сих пор не знаю, почему оно сломалось), но, по крайней мере, оно работает сейчас.