Reputation: 99811
I'm using Django 1.2, and am having trouble generating good XML for a podcast. Any titles containing single-quotes, double-quotes or ampersands appear to be double-escaped, looking like this:
<title>Podcast: &quot;But we had hoped...&quot;</title>
Which means that they show up like this:
Podcast: "But we had hoped"
I did find this ticket, but it was closed ages ago.
I'm generating my feed using this snippet, and I'm just stuffing a value in a model field into the self.title
bit, like this:
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()
In case it helps, the podcast feed is here.
Upvotes: 0
Views: 147
Reputation: 99811
This appears to have been because I failed to provide an item_title
method on my Feed
subclass.
Once I added:
def item_title(self, item):
return item.title
All was well. Previously it had been defaulting to calling my item's __unicode__
method with bizarre results. Not an entirely satisfactory solution (I still don't know why it broke), but at least it works now.
Upvotes: 0