English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Django verfügt über ein Aggregations-Feed-Generierungsframework. Mit ihm können Sie RSS oder Atom erstellen, indem Sie die Klasse django.contrib.syndication.views.Feed vererben.
Lassen Sie uns eine Anwendung für einen Abonnement-Feed erstellen.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : de.oldtoolbag.com # Date : 2020-08-08 from django.contrib.syndication.views import Feed from django.contrib.comments import Comment from django.core.urlresolvers import reverse class DreamrealCommentsFeed(Feed): title = "Dreamreal's Kommentare" link = "/drcomments/" description = "Aktualisierungen zu neuen Kommentaren im Dreamreal-Eintrag." def items(self): return Comment.objects.all().order_by("-submit_date)[:5] def item_title(self, item): return item.user_name def item_description(self, item): return item.comment def item_link(self, item): return reverse('comment', kwargs = {'object_pk': item.pk})
In der Feed-Klasse entsprechen die Attribute title, link und description den Standard-RSS-Elementen <title>, <link> und <description>.
Der Eintrag-Methode wird der Element, das in den Feed eingefügt werden soll, zurückgegeben. In unserem Beispiel sind es die letzten fünf Kommentare.
Jetzt haben wir Feed und fügen wir Kommentare in der Ansicht views.py hinzu, um unsere Kommentare anzuzeigen −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : de.oldtoolbag.com # Date : 2020-08-08 from django.contrib.comments import Comment def comment(request, object_pk): mycomment = Comment.objects.get(object_pk = object_pk) text = '<strong>User: </strong> %s <p>'%mycomment.user_name</p> text +Kommentar: <strong>/strong>%s<p>'%mycomment.comment</p> return HttpResponse(text)
Wir benötigen noch einige URLs, die in myapp urls.py gemappt werden müssen -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : de.oldtoolbag.com # Date : 2020-08-08 from myapp.feeds import DreamrealCommentsFeed from django.conf.urls import patterns, url urlpatterns += patterns('', url(r'^latest/comments/', DreamrealCommentsFeed()), url(r'^comment/(?P\w+)/', 'comment', name = 'comment'), )
Wenn aufgerufen wird/myapp/latest/comments/Sie erhalten feed -
Wenn auf einen der Benutzername geklickt wird, erhalten Sie:/myapp/comment/comment_id wird erhalten, bevor die Definition der Comment-View erfolgt, -
Daher muss eine RSS-Quelle als Unterklasse der Feed-Klasse definiert werden und sicherstellen, dass diese URLs (eine für den Zugriff auf den Feed, eine für den Zugriff auf die Feed-Elemente) definiert sind. Wie in den Kommentaren erwähnt, kann dies auf jeden Modell Ihrer Anwendung verlinkt werden.