[Python/Django 1.3] RSS Feed generieren

Gute Links und Tutorials könnt ihr hier posten.
Antworten
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Hallo Django Community,

ich habe hier ein Tutorial veröffentlicht, wie man sich einen RSS Feed erstellt: http://t.co/chQmVwKU.

Damit man das ganze auch einfacher hier hat, habe ich es nochmal kopiert:

Viele Django-Entwickler stehen irgendwann vor dem Problem, einen Feed generieren zu lassen. Um nun anstatt eines anderen Tools oder gar einer manuellen Erstellung entgegenzuwirken hat Django einen eingebauten Generator.

Verfügbar unter django.contrib.syndication

Um nun einen Feed auf Beispielweise eine Artikelapp anzuwenden sind einige Handgriffe notwendig.
Als erstes sollte man die Datei “feeds.py” im Root-Verzeichnis des Django-Projektes anlegen. In dieser Datei definieren wir später die gewünschten Feeds.
Zum zweiten benötigen wir eine Änderung der URLConf im Root-Verzeichnis. Sie sollte so aussehen:

Code: Alles auswählen

# Django Anweisung zum Laden der Standard-URL-Librarys
from blog.feeds import ArticleFeed # blog ist hier der Name des Projektes 
 feeds = { 
    "articles": ArticleFeed, 
} 

urlpatterns = patterns('', 
    # bla bla bla 
    #Feeds 
    (r'^feeds/(?P.*/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}), 
 )
Man kann im Dictionary “feeds” einfach weitere Feeds definieren und so die Anzahl der Feeds beliebig verändern.

Jetzt folgt die Änderung des Models:

Code: Alles auswählen

from django.db import models


class Artikel(models.Model):


    title = models.CharField(max_length=300
    pub_date = models.DateTimeField('Date') 

    def __unicode__(self): 
          return self.title 

     # Hier kommt die Änderung: 
    def get_absolute_url(self): 
          return "/article/%i/" % self.id
Dies ist nötig um später dem Feed die absolute URL zum Artikel zu sagen. Der Link variiert natürlich nach URLConf der App.

Jetzt kommt der Feed:

Code: Alles auswählen

from django.contrib.syndication.views import Feed 
from artikel.models import Artikel


class ArticleFeed(Feed): 
    title = "Name des Feeds"
    link = "/artikel/" # Link zu einer Übersicht aller Artikel, sollte gesetzt werden - Kann auch Link zur Homepage sein 
    description = "Beschreibung des Feeds" 

    def items(self): 
         return Artikel.objects.order_by('-pub_date') 

    def item_link(self, item): 
         return item.get_absolute_url() # Hier wird auf die im Model definierte Methode verwiesen.
So, fertig ist der Feed. Erreichbar unter http://localhost:8000/feeds/articles (Sofern Standard Development Server genutzt). Ich hoffe ich habe der deutschsprachigen Django-Community damit geholfen.
Zuletzt geändert von daemonTutorials am Sonntag 4. Dezember 2011, 20:49, insgesamt 1-mal geändert.
LG Maik
BlackJack

@daemonTutorials: Ja klar, *Du* bist die IANA… ;-)
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

IANA? Wer oder was ist das?
LG Maik
BlackJack

@daemonTutorials: Das ist die Organisation der die URL example.com gehört.
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

BlackJack hat geschrieben:@daemonTutorials: Das ist die Organisation der die URL example.com gehört.
Die Firma will es, ich mach es ;-) :K
LG Maik
BlackJack

@daemonTutorials: Welche Firma denn jetzt plötzlich? Du hast einfach einen falschen Link angegeben, den es so nicht gibt.
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

BlackJack hat geschrieben:@daemonTutorials: Welche Firma denn jetzt plötzlich? Du hast einfach einen falschen Link angegeben, den es so nicht gibt.
Ich kann es ja auch korrigieren...
LG Maik
Antworten