English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Django RSS

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.