2009-03-19 3 views

Répondre

9

J'ai trouvé le à droite. Comme le documentation décrit, je devais créer un générateur d'alimentation personnalisé par le sous-classement de Rss201rev2Feed et méthode redéfinie

 
add_root_elements() 

comme ceci:

class RssFooFeedGenerator(Rss201rev2Feed): 
    def add_root_elements(self, handler): 
     super(RssFooFeedGenerator, self).add_root_elements(handler) 
     handler.addQuickElement(u"image", '', 
      { 
       'url': u"http://www.example.com/images/logo.jpg", 
       'title': u"Some title", 
       'link': u"http://www.example.com/", 
      })  

class RssFooFeed(Feed): 
    feed_type = RssFooFeedGenerator 
    title = u"Foo items" 
    link = u"http://www.example.com/" 
    description = u"Some description" 
+0

Une approche similaire fonctionnera également avec les flux Atom par générateur de sous-classes à partir de Atom1Feed –

+0

Ajout d'URL/title/link en tant qu'attributs n'est pas correct et ne fonctionne pas. Ils doivent être des éléments XML. – AndiDog

+0

Il est affiché en chrome (mime-type = application/xml), mais comment rendre le nouvel élément dans firefox ou une autre application (qui applique un peu de style à RSS Feed)? – Dineshkumar

4

Je suggère d'utiliser django-atompub pour la production d'aliments pour animaux Atom. Il a très belle abstraction de classe avec beaucoup d'options, donc pas de piratage XML, le code Python de haut niveau seulement.

Exemple:

# Define feed class 
class StreamFeed(Feed): 
    ... [snipped] 
    def item_links(self, item): 
     return [{'rel': 'enclosure', 'href': item.file.url, 'length': item.file.size, 'type': item.mime.name}, 
     {'rel': 'alternate', 'href': full_url(item.get_absolute_url())}] 

Je l'ai utilisé dans mon open source app photoblog django. Vous pouvez voir des exemples via bitbucket repo.

Complet feed generation code.

6

Pour RSS valide 2.0 vous shoud utiliser ceci:

class ImageRssFeedGenerator(Rss201rev2Feed): 
    def add_root_elements(self, handler): 
     super(ImageRssFeedGenerator, self).add_root_elements(handler) 
     handler.startElement(u'image', {}) 
     handler.addQuickElement(u"url", self.feed['image_url']) 
     handler.addQuickElement(u"title", self.feed['title']) 
     handler.addQuickElement(u"link", self.feed['link']) 
     handler.endElement(u'image') 

class LastPublishedPromiseFeed(Feed): 
    link = 'http://www.example.com' 
    feed_type = ImageRssFeedGenerator 

    def feed_extra_kwargs(self, obj): 
     return {'image_url': self.link + '/image.jpg'}